Build a Wordle Guess Checker with Green, Yellow and Red Letter Feedback
RampFrontend Engineer · Online AssessmentLast updated
Build a small Wordle-style component that accepts a guess of up to five letters and colors each letter green, yellow or red against a fixed secret word, tested with SPEND. Tests input handling, pure scoring logic, repeated-letter rules and simple UI state under a 45-minute limit.
Build a small version of the classic Wordle word game as a browser component. A fixed secret word is checked against what the user types, and each typed letter is shown with a color that tells the user how that letter relates to the secret word:
- Green: the letter is in the secret word at this exact position.
- Yellow: the letter is in the secret word, but at a different position.
- Red: the letter does not appear in the secret word.
The user can enter at most five letters. The task supplies the word SPEND for testing; treat it as the secret word. Styling is not required beyond making the three states distinguishable, so the time should go into correct feedback and a working input flow.
Constraints and Clarifications
- Time limit: 45 minutes in an online coding environment, including testing.
- Secret word for testing:
SPEND(five distinct uppercase letters). - Input: letters only, at most five of them.
- Visual styling is not graded; the three color states are.
Clarifying Questions
- Is a particular front-end framework required, or is plain JavaScript acceptable?
- Should the colors appear as the user types, or only after the guess is submitted?
- Must a guess contain exactly five letters before it can be checked, or can a shorter guess be scored?
- Does a guess have to be a real dictionary word?
- Should the component keep earlier guesses on screen, and is there a limit on the number of attempts?
Part 1 — Letter feedback logic
Write the logic that, given the secret word and a guess, returns one status (green, yellow or red) for each guessed letter. For example, against SPEND the guess SNEAK produces green, yellow, green, red, red.
Clarifying Questions for this Part
SPENDhas no repeated letters, but a guess can (for exampleSPEED). When a guess contains more copies of a letter than the secret word does, which copies should be green or yellow and which should be red?- Should matching ignore case?
What This Part Should Cover
- Correct position-sensitive (green) versus position-insensitive (yellow) classification.
- A deliberate, explained rule for repeated letters in the guess.
- Behavior for guesses shorter than five letters, if they are allowed.
Part 2 — Input and rendering
Build the interface: a way for the user to type a guess that is capped at five letters, and a row of letter tiles colored with the statuses from Part 1.
What This Part Should Cover
- Input restrictions: letters only, maximum length, case normalization, including pasted text.
- A clear state model: what is stored (current guess, submitted guesses) versus what is derived (statuses, solved state).
- Rendering that maps each status to a distinguishable color, plus a submit flow (button or Enter key).
Hints
Hint 1
Keep it testable: Make the scoring a pure function of the secret and the guess, independent of any UI state, so you can check it against SPEND before wiring up the page.
Hint 2
Guard the input in one place: Decide where letters are normalized and capped so that typing, pasting and deleting all pass through the same rule.
Follow-up questions
- How would you extend the component to multiple attempts with a win or lose state?
- How would you add an on-screen keyboard that shows the best-known status of every letter across all guesses, and how do you merge statuses coming from different guesses?
- How would you make the feedback usable for a color-blind user or a screen-reader user?
- Which test cases would you write for the scoring function and for the component, and why those?
Solution walkthrough is for members
Get the full walkthrough with reference code and complexity analysis, plus Kitty Coach at 300 messages a day. Hints, the code runner and community answers stay free.