WOTD快速查猜词技巧

Posted by Bill on February 27, 2024

背景

某应用每天都会有猜词WOTD(word of today)的活动,规则是这样的:

  1. 给出单词包含的字母个数
  2. 一共有6次机会左右进行尝试
  3. 如果字母不存在,则显示灰色,如果存在但位置不对,显示黄色,如果位置对了,则显示绿色。

作为茶余饭后的消遣,这个游戏深得我喜爱,但是由于词汇量的欠缺,总是需要借助外界的帮助,如问chatgpt4,但是不知道是否训练方式的原因,我提供的条件,AI总是会忽略掉,给出很明显的错误答案,如:

image.png

因此需要更精确和有效的方法来得出正确答案。

步骤

1.下载GitHuB项目ECDICT,这个项目记录了大量的中英文解释,我一直用于本地数据进行英文查询。它的格式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
word,phonetic,definition,translation,pos,collins,oxford,tag,bnc,frq,exchange,detail,audio                                                                                                     
1,'hood,hʊd,,"n. 罩;风帽;(布质)面罩;学位连领帽(表示学位种类)\nv. 覆盖;用头巾包;使(马,鹰等)戴头罩;给…加罩\n[网络] 胡德;兜帽;引擎盖",,,,,0,0,,,
2,'s Gravenhage,",skrɑ:vən'hɑ:ɡə",,[荷兰语]海牙(= Hague),,,,,0,0,,,
3,'tween,twi:n,,prep. [诗歌用语] = between [亦作 tweeny],,,,,0,0,,,
4,'tween decks,,,[网络] 甲板间;二层舱;双层甲板,,,,,0,0,,,
5,-ability,ə'biliti,,"suf. [用于构成名词, 意义相当于-able]表示“能力”, “可能性”, “倾向性”, “适宜性”",,,,,0,0,,,
6,-able,əbl,,"suf. [附在动词或名词后构成形容词] 表示:“能…的,会…的”:durable; “可以…的”:drinkable; “具有…特性的”:fashionable; “有助于…的”,“倾向于…的”:peaceable; “易于…的”:breakable",,,,,0,0,,,
7,-ably,əbli,,suf. [构成与-able结尾的形容词相应的副词],,,,,0,0,,,
8,-acy,əsi,,"suf. [用于构成抽象名词]表示性质, 状态, 位置, 地位, 职位",,,,,0,0,,,
9,-ad,'æd,," [医]〔状语性后缀〕意为向…方, 向…侧",,,,,0,0,,,
10,-ade,eid,,"suf. 用以构成名词表示:“行动”,“…的动作”:blockade; “行动者”:renegade; “行动者的集体”:cavalcade; “行动的产物”:arcade; “参与”,“参加”:brigade",,,,,0,0,,,
11,-adelphous,ə'delfəs,, 表示“[植物学]有雄蕊束的”:monadelphous,,,,,0,0,,,
12,-aemia,'i:miə,, [用以构成名词]表示血液,,,,,0,0,,,
13,-age,idʒ,,comb. 表示数量;表示动作;表示身份;表示地方,,,,,0,0,,,
14,-agogue,ə'ɡɒɡ,," [医]〔后缀〕意为催, 利",,,,,0,0,,,
15,-aholic,,, 嗜好…的;对…成瘾的,,,,,0,0,,,
16,-al,,," [医]〔后缀〕用于化合物名之后, 示有醛基-CHO存在, 如chloral(氯醛, 三氯乙醛)",,,,,0,0,,,
17,-algia,'ælɡə,, [医]〔后缀〕意为痛,,,,,0,0,,,
18,-alia,,, (与某活动或兴趣范围)有关的物品,,,,,0,0,,,
19,-ally,,, 以-al结尾的形容词加ly构成副词),,,,,0,0,,,
20,-an,æn,,"suf. 表示; “碳水化合物的酐类”:dextran; “不饱和的碳化物”:tolan; 用于专有人、地名等后构成通常可兼作名词用的形容词表示“…时期的(人)”, “…地方的(人)”, “在…居住的(人)”, “在…出生的(人)”:American, Asian, Elizabethan, Victorian; 用于表示体制、学科等的词后及宗教或其他流派创始人的人名后构成可兼作名词的形容词或单词性的形容词或名词表示“精通…的(人)”, “带有…特征的(人)”, “属于…的
(人)”, “信奉…的(人)”, “追随…的(人)”",,,,,0,0,,,

由此我们可以通过查字典的方式去找到匹配的单词。

2.由于单词表数量是巨大的,我们可以首先在第一次,通过AI给出一个合适的单词,这个单词必须是符合字母个数的,且最好包括元音,比如aeiou。

3.经过一到两次的瞎猜之后,我们运气好的话,会得到这个单词包含了什么字母,如果运气更好的话,还能够猜对某个固定字母的位置,如果是这种情况下,就可以利用上述的单词表进行查询了。

4.使用更快的搜索工具 ripgrep进行搜索,利用正则表达式。

如当前已经知道了一些信息:

  • 某些字母绝对不在这个单词中存在
  • 某些字母的固定位置
  • 这个单词的字母个数
  • csv中的单词是以序号+逗号的方式紧跟着单词,且以逗号结束

假设当前的题目是这样的,共5个字母,且第四个字母为l,还知道s在这个单词中,但是并不在这个的首字母。由此可以使用ripgrep进行搜索:

1
rg -o '\b\d+,[^eruiahkcbn\s]{3}l[^eruiahkcbn\s]\b,' ecdict.csv

其中:

  • ‘\b’::表示单词边界。
  • ‘\d+,’:表示序号后加逗号开头。
  • [^eruiahkcbn\s]{3}:表示前三个字母不包含这些字母,’\s’排除空白字符。
  • 第四个字母为l
  • [^eruiahkcbn\s]表示最后一个字母

在ripgrep的帮助下,能够快速搜索出接近的单词,如图:

image.png

再进行一两次猜词,最终就能够得出最终答案了。