ラベル ゲーム の投稿を表示しています。 すべての投稿を表示
ラベル ゲーム の投稿を表示しています。 すべての投稿を表示

2022年3月30日水曜日

Wordle(4)

Wordle(3)からの続き

Wordleをやっていると,そもそも英語の文章で出てくる単語のうち5文字である確率はどんなものか,また,最もよく出現するのは何文字の単語なのか,などなどが気になるようになった。

これを調べるために,与えられたテキストファイルやpdfファイルから単語を切り出して,その文字数の分布を調べるためのシェルスクリプトを作ってみた。

case \$3 in
"txt")
echo "txt";
;;
"pdf")
echo "pdf";
pdftotext \$2.pdf;
;;
*)
echo "undefined";
;;
esac

for ((i=1 ; i<=\$1 ; i++))
do
perl -nse 'while (/\b[a-z]{\$num}\b/ig) {print "\$&\n";}' -- -num=\$i \$2.txt | tr A-Z a-z > tmp.txt
cat tmp.txt | wc -l >> \$2-\s1.txt;
cat tmp.txt | sort | uniq | wc -l >> \$2-\s2.txt;
rm tmp.txt
done
昨日のスクリプトを少しだけ修正すればよかったが,ポイントは,シェルスクリプト中の反復の記述法である。繰り返し変数は$をつけて,perlのワンライナーに受け渡すことができた。あとはこれを使って実験してみれば良いのだが,それはまた次回のお楽しみ。

2022年3月29日火曜日

Wordle(3)

Wordle(2) からの続き

Wordleは英語の勉強になる。簡単な5文字の英単語でも知らないものがたくさんあって,自分の語彙力はやはり10歳並みだということが確かめられる。そのため,辞書の助けがないと5-6回で答えに辿り着くことは出来ない。

巷には,Wordle Word Finderなどというツールも登場しているが,これでは英語学習の役には立たない。それでも,5文字の英単語のリストを収集したいという目的のために,次のようなツールを作った。与えられたテキストファイルあるいはpdfやhtmlファイルをテキストに変換したものから,perlのワンライナーで n 文字の単語を切り出すものだ。

pandocは汎用の文書型変換ツールだけれど,pdfやhtmlからテキストを取り出すという想定がない。あくまでも整形された文書変換ツールだからだ。そこでテキストファイルの取り出しには,pdftotextやtextutilなどのコマンドに任せることにした。また,シェルスクリプトの引数はperlのワンライナーにそのまま送れないので, -- -perl_var=\$shell_varとして,perlの中で\$perl_varによって引用することになる。
#! /bin/zsh
# usage: word.sh 5 sample pdf (tst, txt, pdf, html)
# output sample-5.txt

case \$3 in
"tst")
pwd;
ls -al \$1.txt;
ls -al \$2.*;
;;
"txt")
echo "txt";
perl -nse 'while (/\b[a-z]{\$num}\b/ig) {print "\$&\n";}' -- -num=\$1 \$2.txt | tr A-Z a-z > \$2-\$1.txt;
;;
"pdf")
echo "pdf";
pdftotext \$2.pdf;
perl -nse 'while (/\b[a-z]{\$num}\b/ig) {print "\$&\n";}' -- -num=\$1 \$2.txt | tr A-Z a-z > \$2-\$1.txt;
;;
"html")
echo "html";
textutil -convert txt \$2.html;
perl -nse 'while (/\b[a-z]{\$num}\b/ig) {print "\$&\n";}' -- -num=\$1 \$2.txt | tr A-Z a-z > \$2-\$1.txt;
;;
*)
echo "undefined"
;;
esac

2022年3月5日土曜日

Wordle(2)

 Wordle(1)からの続き

Wordleは5文字の英単語をあてるゲームだった。日本語でもできるのではと調べてみると,いくつか紹介されていた。アルファベットは26文字に限定されるので,単語成立条件を問わなければ5回でほぼすべての文字が含まれるかどうかが判定できる。しかし,日本語のかなでは,濁音,半濁音,拗音,撥音などもあるため,約80文字くらい必要である。したがって,16回≈3倍ほどの手間をかける必要があることになる。

(1)WORDLE ja(aseruneko):入力するのが辞書にない言葉でもかまわない。試行回数にも制限がない。ということでゲームとしてのおもしろさに欠けるかもしれない。

(2)ことのはたんご(大西力登):試行回数は10回までで,外来語も含まれる。辞書が弱いと感じたが,作者はそのあたりも考えた上で1万語の辞書を用いている。noteに詳しい経緯があるのがありがたい。

(3)ことばであそぼう(Desmond Lee):4文字で試行回数は12回にしてある。これも辞書が弱い。ただ,回数が少ない分,ヒントモードを加えることで日本語化した場合の難点を回避する作戦か。

(4)漢字ル(大坪弘尚):四字熟語版である。部首の共通点が指摘されるようになっている。漢字変換入力のインターフェースがちょっと気になる。試したところいきなりホールインワンになってしまった。

日本語のかなの出現頻度表はあるが,あまり絞り込みの役には立たない。支援ツールとしては,精選版日本国語大辞典を使ったが,これだけではちょっと難しい。○○から始まる、○○で終わる言葉一覧とか,ことばさあちとかあるにはあるがどんなものだろうか。

ことのはたんご 第43回 5/10
   ⬜⬜⬜⬜⬜ 20426
   ⬜⬜⬜⬜🟩 1476
   ⬜⬜⬜🟨🟩 40
   ⬜🟨⬜⬜🟩 29
   🟩🟩🟩🟩🟩 1
   図:ことのはたんごの実行例

2022年3月4日金曜日

Wordle(1)

最近,Twitterで流行るもの。緑色と黄色と灰色の四角形が5列×(〜5,6)行並んだ図のようなものをよく見かけるようになった。Wordleとあるので調べたところ,NewYork Timesについているオンラインゲームらしい。1回終ると何時間か待たされるので,1日に1回程度遊べるような気がする。

   Wordle 258 4/6
   🟨🟨⬜⬜🟨
   🟨🟨🟨🟨⬜
   🟩⬜🟨🟨🟩
   🟩🟩🟩🟩🟩
図:Wordleのtwitter出力の例

ワードル(Wordle)のルールは簡単である。アルファベット5文字の英単語を当てればよいのだ。ゲーム名は,Redditのソフトウェアエンジニアだった開発者のJosh Wardleの名前から来ているのか。

最初はノーヒントなので適当な5文字を入れる。ただし,辞書にあるような英単語でなければならない。正解の単語と同じ位置に同じ文字がある部分がグリーンで示される。この文字は確定だ。正解の単語に含まれてはいるが,位置が間違った文字は黄色で示される。次の推測では,この文字は別の位置に動かさなければならない。正解の単語に含まれていない文字は灰色で示される。これは次回以降の候補からは排除される。

この条件の元に,次の推測候補となる単語を考える。すると新しい判定結果が得られるので,この情報に基づいて修正する。正解にたどり着くまでこれを繰り返せばよい。ベイズ推定の精神ですね。

問題の鍵は,自分が持っている英単語のボキャブラリー数にあり,5文字で辞書に載っている単語をどれだけ準備できるかが重要だ。前に試したボキャブラリのテストで,自分には英語圏の10歳児並のボキャブラリーしかないことがわかっていたので,ここはちょっとチートを使うことにした。

bestwordlistのサイトでは,任意の文字数の英単語のリストを得ることができる。さらに,その単語の先頭の文字,末尾の文字,含まれる複数の文字などを指定することができるので,このゲームの目的にはまさにぴったりなのである。

戦略としては,まず出現頻度の高い文字晴耕雨読より)から攻略することが考えられる。1文字の出現確率は,{E} → 13%,{T, A, O, N, I, R, S, H} → 9%〜6%,{D, L, U, C, M} → 4%〜3%,{P, F, Y, W, G, B, V} → 2%〜1%,{K, X, J, Q, Z} → 0.5%〜0.1%となっている。また,2文字の出現頻度準のリストは,{TH, HE, IN, ER, AN, RE, ED, ON, ES, ST, EN, AT, TO, NT, HA, ND, OU, EA, NG, AS, OR, TI, IS, ET, IT, AR, TE, SE, HI, OF}である。

これらを利用して頻度が高い単語から攻めるのがよいと思われる。

2021年11月15日月曜日

ピクミンブルーム

日本でテレビ放送が始まった 1953年の生まれなので,テレビ環境には十分適応している。ラジオはどうかというと,遅ればせながら高校生から大学生にかけて深夜放送を聞いて育った。もちろん小学生時代の貸本屋から始まって漫画雑誌も大丈夫。コンピュータが登場するのは大人になってからだったが,これもなんとかクリアできた。

ところが,残念ながら自分が適応できなかった種目がある。コンピュータゲームだ。そのはしりのアーケードゲームは1979年に大流行したスペースインベーダー。柳田さん夫妻が新婚旅行でハマったやつだ。喫茶店のようなところで何回か遊んだことはあるが,はまるにはほど遠かった。

やがて,1983年の任天堂ファミリーコンピュータを嚆矢に,次々と家庭用ゲーム機が登場する。残念ながら,結婚してそろそろ子供ができようかという頃であり,全く興味も関心もなかった。子供たちが成長する過程でも,ゲーム機の類を買い与える機会はなかった。1996年のたまごっちをのぞいては。自宅には,PC-9801があり,後にはMacBookなども使えたのだけれど,ポストペットで遊ぶ程度だった。

やがて,スマートフォンの時代になり,子供から強く勧められて,コロプラ(コロニーな生活☆プラス)を始めた。位置情報ゲームとよばれるジャンルのはしりだ。これは10年経った今も愛用している。その後,ギークの間で流行るイングレスを生み出したNIANTICが2016年にポケモンGOを産み出し,これは1〜2年楽しんだ。

この間,ジャンルとしてのアクションゲーム,ロールプレイングゲーム,シミュレーションゲーム,アドベンチャーゲーム,スポーツゲーム,レースゲーム,音楽ゲームなどは全くの未踏の地として残ってしまった。残念なことである。

PC-9801が登場したころに,ASCIIかOhPCに掲載されていたフライトシュミレータの機械語のプログラムを2ページびっしり必死で打ち込んだ。モノクロ線画で,5MHzの8086(128kBRAM)上で動作するコックピットがすぐクラッシュしていた時代から,はや40年になる。

さて,最近ピクミンブルーム(NIANTIC 任天堂)の宣伝に騙されて,これをiPhoneにインストールした。11月1日公開のところを11月6日にスタートしたので,珍しく早い対応だった。散歩の歩数がゲームのポイントに直結するスマートフォン向けARアプリなので,老人には相応しいものかもしれない。


写真:ピクミンブルームのスナップショット