UNPKG

@gueripep/wordle-solver

Version:

A Wordle solver using entropy maximization and information theory

60 lines 2.11 kB
import { LetterState } from '../core/types.js'; /** * Calculates the Wordle feedback for a guess against a target word * @param guess - The 5-letter guess word * @param target - The 5-letter target word * @returns GuessFeedback - Array of 5 letter feedbacks */ export function calculateWordleFeedback(guess, target) { if (guess.length !== 5 || target.length !== 5) { throw new Error('Both guess and target must be exactly 5 letters'); } const guessLower = guess.toLowerCase(); const targetLower = target.toLowerCase(); const result = []; const targetLetters = targetLower.split(''); const usedTargetIndices = new Set(); // First pass: mark correct positions for (let i = 0; i < 5; i++) { if (guessLower[i] === targetLower[i]) { result[i] = { letter: guessLower[i], state: LetterState.CORRECT }; usedTargetIndices.add(i); } else { result[i] = { letter: guessLower[i], state: LetterState.ABSENT // Default, will be updated if present }; } } // Second pass: check for present letters (wrong position) for (let i = 0; i < 5; i++) { if (result[i].state === LetterState.ABSENT) { // Look for this letter in unused positions of target for (let j = 0; j < 5; j++) { if (!usedTargetIndices.has(j) && guessLower[i] === targetLower[j]) { result[i].state = LetterState.PRESENT; usedTargetIndices.add(j); break; } } } } return result; } /** * Checks if a feedback indicates a correct guess (all letters are CORRECT) */ export function isCorrectGuess(feedback) { return feedback.every(f => f.state === LetterState.CORRECT); } /** * Creates a string representation of feedback for debugging/display */ export function feedbackToString(feedback) { return feedback.map(f => `${f.letter}:${f.state}`).join('|'); } //# sourceMappingURL=feedback.js.map