カテゴリー
技術

初回で当てる。Wordle必勝法? on Kaggle

英単語当てクイズゲーム Wordle のブームは、プログラマ中心に止むことなく、様々なバリエーションの Wordle クローンパロディ最善手を求める解析やソルバーなどが毎日のように発表されています。

今回出てきたのは「Wordle を初手で解く」方法

ゲームの性質上、とんでもない偶然でもなければ初手で解けるはずはありません。つまり何かしらズルをしているのです。

Wordle の棋譜(途中経過)は⬛🟨🟩のブロックを使って表され、解いた後にツイッターで自分の結果を共有することができます。というか、このSNSでの共有機能こそが Wordle の大ブームを起こしたわけです。

この共有棋譜は、もちろんアルファベットの情報は載せず、試行錯誤の跡だけが見えるようになっています。

しかし、多くの人が試行錯誤した経路の情報が十分多くあれば、そこから正答を推測できるのではないか、というのがこのプロジェクトの考え方。

結果報告は上から下に向けて🟩(アルファベットの場所も種類も合致)、🟨(アルファベットの存在は合うが位置が違う)、⬛(外れ)が少なくなるのが普通です。一番下の段は正解なので🟩🟩🟩🟩🟩になります。

正解の一つ前の段は🟩や🟨多めになっているわけですが、どの段もWordle が扱う5文字の英単語ではあるはずです。

あらかじめソルバーをぶん回して得ておいた、間違った単語から正解の単語へたどり着く際に良く起こる単語→単語の現れる割合のデータを元に、⬛🟨🟩のパターンに当てはまりそうな英単語を探すことで、いろいろな人がツイッターで発表した⬛🟨🟩の形の分布だけから、その日の正解の単語を当てることができるということです。

ログではこのプロジェクトを始めた第210回からの予想が出ていますが、14回連続で一発で正答を当てていますね。

「正答は隠すけれど苦闘の過程はみんなに共有したい」という仕組みに対し、「隠されたものを大量に集めれば傾向から全体の答えがわかる」という過程が面白いですね。

ウェブ上にはWordleの正答だけでなく色々な「ぼかして書いた」情報が流れていると思いますが、こんな考え方を適用することでぼかされていたものをプログラムでひそかに当てる、ということもできそうです。

via Hacker News

カテゴリー
英語学習

Wordle(ワードル)必勝法

twitter など SNS での拡散力が強くて急速話題となってきた英単語当てゲーム Wordle(ワードル) 、もう遊びましたか?

6回の試行から回答の単語に含まれるアルファベットの種類と位置を絞っていくというクイズゲームですが、「英単語」という片寄りのあるデータ群から推測するというゲームの性質から、どのようにすればより早く答えにたどり着けるかということを考える人も多いようです。

カリフォルニア大アーバイン校でCSを学ぶスペンサー・チャーチル氏(Spencer Churchill)は、Wordle で使われるすべての英単語のリストと Python スクリプトによって、できるだけ早く Wordle の正解にたどり着きたい人のための最善初手・二手を絞り込んでいます。

使われている文字を特定するほど次の回での絞り込みが進むのですから、できるだけ早い段階で多くの文字を試すのが有効かと思われます。

英単語には良く出てくる文字、あまり出てこない文字があるのですから、良く出てくる文字を5文字使った単語が、一番絞り込みができる良い初手ということになります。

チャーチルさんはまず、すべての対象単語を集計し、最も出現頻度の高い方からのアルファベット・リストを得ました。

次に、頻度の高い方から5文字ずつを選び、その5文字で構成される単語をスクリプトに出させます。

最速のための5文字の単語が複数あったため、こんどはそれらの中でもっとも有利な単語はどれか考えます。アルファベットの登場の有無だけでなく、アルファベットの正しい位置がわかる方が正解に近づくため、こんどは位置を含めて最も出現頻度が高いものを抽出すれば、これが最も有利な初手となるというわけです。

ブログで提示された最善の初手・二手を使って今日のWordle を解いてみたところ、2段目にしてかなりの絞り込みができ、4回目で正当にたどり着くことができました。

このブログ記事を紹介するHacker Newsの掲示板では、他にも理想の初手を考えていたいろいろな人たちからのコメントが集まっています。ORATE(演説する), SLATE(粘土板), SAUTE(炒める), AESIR(アース神族) などなど各自の考えるベスト・オープニングが紹介されていました。

また、人力であれば今回のような初手・二手目を覚えておくぐらいが関の山ですが、その場でプログラム的に解くのであれば当然、初手の結果を見てベストな二手目は変化しうるはずです。これを含めてのソルバー作りもプログラミングの課題として面白いのではないでしょうか。(ソルバー作ってる人も当然いますね)

Hacker News

カテゴリー
ツール

abbreviate – 英単語の省略形を機械的に決めてくれるツール

dnnrly/abbreviate は、英単語を決まった規則で省略してくれるという、単機能のツールです。

Goで書かれていて、フルに書いた複数の英単語の並びを、内蔵の辞書で決まっている短縮形に置き換えます。

指定によってキャメルケース、パスカルケース、スネークケースなどにもしてくれます。

辞書ファイルに定義されていない単語は出ないため、実用にするにはもっと辞書の拡張が必要かなとも思います。

僕は基本的には省略形の利用に反対なのですが、プログラミング言語や環境によっては、命名に文字数の上限があるものもあるでしょう。abbreviateコマンドの作者は、AWSのリソース名をつける際に上限が問題になることが多くてこのツールを思いついたということです。

省略を多用するプログラマーやそのチームにおいて、元の英単語が必ずこの省略形になる、という保証をツールでするのであれば、ツールを使わないよりはずっと良いのかなとも思いました。

via Hacker News