hello-wordle/src/clue.ts

42 wiersze
944 B
TypeScript
Czysty Zwykły widok Historia

2022-01-01 02:04:48 +00:00
export enum Clue {
Absent,
Elsewhere,
Correct,
}
export interface CluedLetter {
clue?: Clue;
letter: string;
}
export function clue(word: string, target: string): CluedLetter[] {
2022-01-01 18:35:03 +00:00
let elusive: string[] = [];
target.split("").forEach((letter, i) => {
2022-01-01 02:04:48 +00:00
if (word[i] !== letter) {
2022-01-01 18:35:03 +00:00
elusive.push(letter);
2022-01-01 02:04:48 +00:00
}
});
return word.split("").map((letter, i) => {
let j: number;
if (target[i] === letter) {
return { clue: Clue.Correct, letter };
2022-01-01 18:35:03 +00:00
} else if ((j = elusive.indexOf(letter)) > -1) {
// "use it up" so we don't clue at it twice
elusive[j] = "";
2022-01-01 02:04:48 +00:00
return { clue: Clue.Elsewhere, letter };
} else {
return { clue: Clue.Absent, letter };
}
});
}
export function clueClass(clue: Clue): string {
if (clue === Clue.Absent) {
return "letter-absent";
} else if (clue === Clue.Elsewhere) {
return "letter-elsewhere";
} else {
return "letter-correct";
}
}