LoginSignup
2
0

More than 1 year has passed since last update.

wordleの平均解答数はどのくらいになるのか?

Last updated at Posted at 2022-02-02

最近wordleばっかりみるのだけど、あんまり自分が解いたもの平均以下なのかどうかがわからない.
アルゴリズム作って解くと、どのくらいで解けるのかが気になったので雑に調べてみた.
アルゴリズムやwordleのルール解釈にミスがあるかもしれないので、参考程度にしてもらえれば :pray:

⚠️⚠️ wordleを解くのがつまらなくなるかもしれないので、楽しみたい方は見ないことをおすすめします ⚠️ ⚠️

↓↓

wordle solver

ロジック的には簡単なものを採用した. (高頻度な文字を含むワードから順に選び除外するアルゴリズム)
条件を厳しくしたりすると、もっと賢く解けるかもしれないので、あくまで参考程度に.

  1. 単語リストから文字出現頻度を調べる.
  2. 単語ごとに文字出現頻度の合計値を算出 (apple => aの頻度+pの頻度+pの頻度+lの頻度+eの頻度)
  3. 単語ごとの出現頻度合計値でソートする
  4. 頻度が高く、各文字がかぶらないワードを選出 (できる限り候補を絞るため)
  5. 選出ワードで解く
  6. word, answer_wordを比較して、緑(1), 黄(0), 黒(-1)の3パターンを結果として返す. 例: purse <=> sugar であれば [-1,1,0,0,-1]
  7. 単語リストを下記条件でフィルタリングする.
  8. 緑(1): 同じ文字を含み同じ位置にあるものでフィルタ
  9. 黄(0): 同じ文字を含み違う位置にあるものでフィルタ
  10. 黒(-1): 同一文字の出現数が1の場合は、該当文字を含まないようにフィルタ. (2文字以上同じ文字を含み、正解が1文字の場合、1文字目しか黄色にはならない)
  11. 解いた結果が[1,1,1,1,1]になるまで、4-6を繰り返す

実行

ワードリストは下記のものを採用した

## 改行文字含むので+1
$ cat corncob_lowercase.txt | awk '{if(length($1) == 6) print}' > words.txt
$ ruby solve_wordle.rb words.txt > words_result.txt
$ cat words_result.txt | awk '{s+=$2;t+=1}END{print s/t}'
4.26699

平均は4.27回だった.
上位/下位の単語を見てみる.

$ cat words_result.txt | sort -n -k2 | head
arose	1
actor	2
adios	2
adore	2
adorn	2
aesop	2
afire	2
afros	2
aides	2
aisle	2
$ cat words_result.txt | sort -n -k2 | tail
jails	10
jives	10
nines	10
sales	10
saves	10
fears	11
sails	11
wares	11
wears	12
sears	13

aroseが高頻度文字セットで互いに疎な感じっぽい.
せっかくなので、5文字以外でも調べてみた.

letters words mean_solves
2 47 4.17021
3 589 6.11545
4 2294 5.03313
5 4266 4.26699
6 6936 3.70804
7 9203 3.40563

3文字を境に難易度が下がっていっているというのが面白い.
3文字って略語っぽいものもありそうだ.
こうみると程よく単語数もあって、簡単すぎない5文字っていうのは丁度いいゲームバランスなのかもしれない.

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0