Skip to content

Commit 90418ab

Browse files
authored
duck-typer: include new letters in each words (#189)
1 parent 286c528 commit 90418ab

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

code/duck-typist.js

+8-5
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@ const MIN_PRECISION = 98; // percentage of correct keys
2323
const MIN_CPM_SPEED = 100; // characters per minute
2424
const MIN_WIN_STREAK = 5;
2525

26-
const STARTING_LEVEL = 4; // number of keys to begin with
27-
const MIN_WORD_COUNT = 42; // nim number or words/ngrams we want for a lesson
26+
const STARTING_LEVEL = 4; // number of keys to begin with
27+
const MIN_WORD_COUNT = 42; // nim number or words/ngrams we want for a lesson
28+
const INCLUDE_NEW_LETTERS = 2; // at least of the n last letters should be included in each word
29+
2830
const ALL_30_KEYS = [
2931
'KeyF', 'KeyJ',
3032
'KeyD', 'KeyK',
@@ -117,9 +119,10 @@ window.addEventListener('DOMContentLoaded', () => {
117119
.filter(letter => letter in odk)
118120
.map(letter => odk[letter]);
119121

120-
const lessonLetters = rawLetters.concat(deadkeyLetters);
121-
const lessonFilter = word =>
122-
Array.from(word).every(letter => lessonLetters.indexOf(letter) >= 0);
122+
const lessonLetters = rawLetters.concat(deadkeyLetters).join('');
123+
const newLetters = rawLetters.slice(-INCLUDE_NEW_LETTERS).join('');
124+
const lessonRe = new RegExp(`^[${lessonLetters}]*[${newLetters}][${lessonLetters}]*$`)
125+
const lessonFilter = word => lessonRe.test(word)
123126

124127
gLessonWords = [];
125128
for (const dict of [

0 commit comments

Comments
 (0)