Wordleが難しいのでPythonでヘルパーアプリを作りました

プログラム

巷で流行中の英単語パズル「Wordle」。

https://www.powerlanguage.co.uk/wordle/

任意の5文字の英単語を当てるゲームで、最初は山勘でやるしかないのですが、外れると「位置も文字もあってる」と「位置は違うが文字はあってる」を教えてもらえるので、少しずつ候補が絞り込まれていきます。

その上で6回以内に答えないと行けないと言う絶妙なバランスと、1日1問限定で毎日新しい単語に変わる上に誰がやっても同じ答えという絶妙なシステムのお陰でSNSで大流行となり、個人作成のプロダクトながらニューヨークタイムズに買い上げられるほどとなりました。(NYタイムズが人気の単語ゲーム「Wordle」を買収、数億円で | Forbes JAPAN(フォーブス ジャパン))

自分もSNSで流行っているのは認識していたのですが、如何せん英単語の知識が不足しており、5文字の英単語をポンポンとひねり出せない。みんなが楽しそうにSNSでキャッキャしているのを指をくわえて眺めるだけの惨めな人生を送るしかないのか…と思い悩んでいたのですが、出現する英単語をすべて調べた上で検索すればよいのでは無いかと思いつきました。

まずは辞書を作ろうと「Wordle」のサイトを漁ったら、JavaScriptのプログラム本体にベタで書いてあったのでサクッと抽出。

その辞書を使って、ちょっとだけ分かる(not チョットダケ)Pythonでプログラムを組むこと1時間ほど。無事に辞書を総当たりして候補となる英単語をリストアップするプログラムが完成。問題にアタックしながらバージョンアップを繰り返し、個人的には満足できるレベルのものが出来ました。

そんな感じで作ったヘルパーアプリ、折角なのでGitHubで公開しました。Pythonはちゃんと勉強しておらず、ググってコピペして組んだだけで恥ずかしいですがご笑覧までに。

hide10/wordle (github.com)

無事にヘルパーは完成しましたが、最初の山勘で入れる文字列をどうすべきかという問題が残ってまして、悩んだ挙げ句アルファベットの出現数を数えてみました。これもプログラムを組んで試したところ、結果的にはこんな感じに。

s: 6665
e: 6662
a: 5991
o: 4438
r: 4158
i: 3759
l: 3371
t: 3295
n: 2952
u: 2511
d: 2453
y: 2074
c: 2028
p: 2019
m: 1976
h: 1760
g: 1644
b: 1627
k: 1505
f: 1115
w: 1039
v: 694
z: 434
j: 291
x: 288
q: 112

この結果を踏まえ、重複した文字がでない「推測候補」になりそうな英単語を厳選した結果、下記の3単語を順番に試すのが良さそうだというのが現在の結論です。

  1. ALOES
  2. PRINT
  3. DUCKY

ALOES, PRINT, DUCKYと3問(場合によっては2問)試したあとに、上記のヘルパーアプリケーションで検索すると、答えは数個に絞り込まれることが多いです。あとはリストの中から何となく出てきそうな単語を入れていけば、大体のパターンで6問目までには正解できると思います。

Wordle – A daily word game

Wordle Archive (過去問サイト)

hide10/wordle (Python製の自作ヘルパーアプリ)