Wordle、やってますか?
英語圏だけの流行りかと思ったら、日本語圏でも流行り始めてる気がしますね。
Wordleソルバーを作ってみたらうまく行った気がするのでメモ書き程度ですが共有しておきます。
Wordleって何?という方はググるか実際に遊んでください。
#Absurdle
最初はAbsurdleのソルバーを作っていました。
Absurdleとは、ざっくり言うと「ゲーム開始時点では答えは確定していない」「ユーザの入れた単語に応じて、可能な限り答えのパターンが多くなるような盤面を構成してくる」バージョンのWordleです。
人間がやるとまあムカつく仕様ですが、面倒なのでPythonにやらせました。
答えのパターンが常に最大になるようなら、その最大値を最小にするような入力を与えてやればよいのです。
というわけでAbsurdleは常識的な手数で解けたのですが、これをWordleでも応用できないかと考えました。
#Wordle
Absurdleで同じアルゴリズムで入力を考えていたのですが、妙に手数がかかる気がします。
そこで、最大値はWordleの評価値としては正しくないと考えました。
しかし、相加平均をちょっといじったものでうまくいった気がしました。
以下では、1回の入力に応じて表示される5色の四角を「色パネル」と呼びます。複数ターンは考慮しません。
具体的には、色パネルとしてありえるパターン全てについて「その色パネルが表示される正解」の数を求め、この総和を求め、正解の候補に$i$が含まれていたら1を引き、さらに「表示される色パネルの種類数」で割る。この値を評価値とするため、この計算を入力としてありうる単語$i$全てで行います。「正解」の数を1以上2以下の数で適当に累乗してもいいかもしれません。
#未完
真面目に探索したほうが良くなるかもしれません。