have separate list for possible answers, possible inputs, clean up code, add verb modifiers to allowed types list
This commit is contained in:
parent
101e369da3
commit
cb1fe15cae
5
Makefile
5
Makefile
@ -1,12 +1,13 @@
|
|||||||
WORD_LENGTH=5
|
WORD_LENGTH=5
|
||||||
MIN_FREQUENCY=1
|
VALID_ANSWER_FREQ_MIN=10
|
||||||
|
VALID_INPUT_FREQ_MIN=1
|
||||||
SOURCE_WORDLIST=1_1_all_fullalpha.txt
|
SOURCE_WORDLIST=1_1_all_fullalpha.txt
|
||||||
ALLOWED_TYPELIST=allowed_types
|
ALLOWED_TYPELIST=allowed_types
|
||||||
|
|
||||||
all: wordlist.js .SUBMODULES
|
all: wordlist.js .SUBMODULES
|
||||||
|
|
||||||
wordlist.js:
|
wordlist.js:
|
||||||
./scripts/gen_wordlist.py ${SOURCE_WORDLIST} ${WORD_LENGTH} ${MIN_FREQUENCY} ${ALLOWED_TYPELIST} > wordlist.js
|
./scripts/gen_wordlist.py ${SOURCE_WORDLIST} ${WORD_LENGTH} ${VALID_ANSWER_FREQ_MIN} ${VALID_INPUT_FREQ_MIN} ${ALLOWED_TYPELIST} > wordlist.js
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf wordlist.js
|
rm -rf wordlist.js
|
||||||
|
@ -7,4 +7,5 @@ verb
|
|||||||
pron
|
pron
|
||||||
conj
|
conj
|
||||||
noc
|
noc
|
||||||
|
vmod
|
||||||
@
|
@
|
||||||
|
4
game.js
4
game.js
@ -1,7 +1,7 @@
|
|||||||
// global constants
|
// global constants
|
||||||
const gridWidth = 5
|
const gridWidth = 5
|
||||||
const gridHeight = 6
|
const gridHeight = 6
|
||||||
const word = wordlist[Math.floor(Math.random()*wordlist.length)];
|
const word = wordlist.valid_answers[Math.floor(Math.random()*wordlist.valid_answers.length)];
|
||||||
|
|
||||||
// global state variables
|
// global state variables
|
||||||
var gameCompleted = null
|
var gameCompleted = null
|
||||||
@ -42,7 +42,7 @@ function checkGridRow() {
|
|||||||
getGridRow(row).items.forEach(item => rowWord += item.letter)
|
getGridRow(row).items.forEach(item => rowWord += item.letter)
|
||||||
|
|
||||||
console.log(rowWord)
|
console.log(rowWord)
|
||||||
if (!wordlist.includes(rowWord)) {
|
if (!wordlist.valid_inputs.includes(rowWord)) {
|
||||||
body.classList.add("incorrect")
|
body.classList.add("incorrect")
|
||||||
setTimeout( () => body.classList.remove("incorrect"), 500)
|
setTimeout( () => body.classList.remove("incorrect"), 500)
|
||||||
return
|
return
|
||||||
|
@ -9,11 +9,11 @@ class WordListItem:
|
|||||||
|
|
||||||
self.word = word[1] if word[1].isalpha() else word[3]
|
self.word = word[1] if word[1].isalpha() else word[3]
|
||||||
self.pos = word[2]
|
self.pos = word[2]
|
||||||
self.frequency = int(word[4])
|
self.freq = int(word[4])
|
||||||
|
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"<WordListItem {self.word=} {self.pos=} {self.frequency=}>"
|
return f"<WordListItem {self.word=} {self.pos=} {self.freq=}>"
|
||||||
|
|
||||||
|
|
||||||
def get_args():
|
def get_args():
|
||||||
@ -23,7 +23,8 @@ def get_args():
|
|||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument('wordlist')
|
parser.add_argument('wordlist')
|
||||||
parser.add_argument('word_length', type=int)
|
parser.add_argument('word_length', type=int)
|
||||||
parser.add_argument('frequency_min', type=int)
|
parser.add_argument('valid_answer_freq_min', type=int)
|
||||||
|
parser.add_argument('valid_input_freq_min', type=int)
|
||||||
parser.add_argument('allowedtypelist')
|
parser.add_argument('allowedtypelist')
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
@ -36,22 +37,24 @@ def main(args):
|
|||||||
|
|
||||||
types = set()
|
types = set()
|
||||||
with open(args.wordlist) as fp:
|
with open(args.wordlist) as fp:
|
||||||
words = [ WordListItem(line) for line in fp.read().strip().lower().split('\n') ]
|
src_words = [ WordListItem(line) for line in fp.read().strip().lower().split('\n') ]
|
||||||
|
|
||||||
[ types.add(word.pos) for word in words ]
|
src_words = [ word for word in src_words if word.word.isalpha() ]
|
||||||
|
src_words = [ word for word in src_words if len(word.word) == args.word_length ]
|
||||||
|
src_words = [ word for word in src_words if word.pos in allowed_types ]
|
||||||
|
|
||||||
words = [ word.word for word in words if word.frequency >= args.frequency_min and word.word.isalpha() and len(word.word) == args.word_length and word.pos in allowed_types ]
|
[ types.add(word.pos) for word in src_words ]
|
||||||
|
|
||||||
|
words = {}
|
||||||
|
words['valid_answers'] = [ w.word for w in src_words if w.freq >= args.valid_answer_freq_min ]
|
||||||
|
words['valid_inputs'] = [ w.word for w in src_words if w.freq >= args.valid_input_freq_min ]
|
||||||
|
|
||||||
words.sort()
|
|
||||||
# remove duplicates
|
# remove duplicates
|
||||||
words = list(set(words))
|
|
||||||
print(f"wordlist = {json.dumps(words)}")
|
print(f"wordlist = {json.dumps(words)}")
|
||||||
print(f"{args=}", file=sys.stderr)
|
print(f"{args=}", file=sys.stderr)
|
||||||
print(f"{len(words)=}", file=sys.stderr)
|
print(f"{len(words['valid_answers'])=}", file=sys.stderr)
|
||||||
|
print(f"{len(words['valid_inputs'])=}", file=sys.stderr)
|
||||||
print(f"{types=}", file=sys.stderr)
|
print(f"{types=}", file=sys.stderr)
|
||||||
print(f"{'cares' in words=}", file=sys.stderr)
|
|
||||||
print(f"{'ideas' in words=}", file=sys.stderr)
|
|
||||||
print(f"{'prose' in words=}", file=sys.stderr)
|
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user