反撃準備の狼煙
相も変わらず「無限の猿定理」ファイルは、1000行に渡って、
プログラムには体調も機微もない。命令通りにしか動かないのだし、命令そのものが命なのだから、当たり前である。人間性を求めるのは酷というものだろう。
今回の修正内容は、プログラムに「惜しい」と判定させる機能の追加だ。
別に、ゴールが近くなるわけではない。私の精神衛生上、「惜しい」と思わなければやっていられない為に、実装と相成っただけだ。
十五分ほど考えて、実現に必要な処理を以下の三つにまとめた。
・出力された文字列が「シェイクスピア」と比べて何文字合致しているかを確認
・合致している文字数が最大のものが、最も「惜しい」文字列になるので、その数を表示する
・その数が出ている行のセルを、赤色で塗り潰しておく(その文字列を確認しやすくするため。1000行もあると、目視で数を見るのは結構苦しい)
これらの実現方法についても、私は知らない。
知っているとしたら、「知らないこと」を知る為の方法――ググルの術だけだ。
それから三十分が経ち、知識の神との対話を終えた私は、早速、鉄仮面プログラムに表情を付ける作業に取り掛かった。
まず、一番目の処理については、「if」関数と「countif」関数を用いることで、擬似的な再現が可能となった。
「if」関数とは、文字通り「条件」を指定し、その条件に合うか合わないかによって、処理を変更できるという関数である。
まず、R1からX1までの7つのセルにそれぞれ「シ」「ェ」「イ」「ク」「ス」「ピ」「ア」と一文字ずつ値を設定する。
その後、Y1のセルに「=IF(J1=R$1,"〇","×")」と入力する。簡単に言えば、無作為に出したカタカナの一文字目と、「シ」を比較し、同じだったら「〇」を、違っていたら「×」を出すようにした。この作業を、残りの6文字(Z1からAE1)についても行う。
その次は「countif」関数。これは「条件(if)」を指定し、その条件に合ったセルの数を数える(count)。ここで数えるのはもちろん「〇」の数である。
AF1のセルに計算式「=COUNTIF(Y1:AE1,"〇")」と入れる――これで、一行分の無作為カタカナについて、「シェイクスピア」と比較が出来るようになった。
ちょうど、一行目の文字列が『ムェペヒャグプ』となった。AF1には「1」という数値が表示されている。実装は成功だ。これが「7」になる時が、いつかやってくるのだろうか……
Y1からAF1までの8セルを、
次に二番目。これは簡単であった。
「max」という実に分かりやすい関数があったのだ。
この関数は、範囲指定した中で最も大きな値を返す――つまり、AF列を指定してやれば、文字の合致数について、最大値を返すようになる。
AG1に「=MAX(AF:AF)」と入力すると、「2」という数値が出てきた。これは今回の1000行分については、最大で2文字合致している文字列が見つかったということを意味する。例えば『ブネイトオバア』のようなものが。
そして最後に、そのセルを赤く塗り潰す。
いくら「2」が出たことが分かっているとはいえ、1000行もの数値を目視で見るのは苦しい。ただでさえ、1つのセルの大きさは小さいのだ。白背景では見えにくいことこの上ない。
この処理には関数ではなく、セルの「書式設定」と呼ばれるものを用いる。
メニューから「書式」―「条件付き書式」を選択する。この時、AF列を範囲選択したままにするのがポイントだ。範囲を指定しておくと、その範囲内のセルにのみ書式が反映される。
(列や行をまとめて範囲選択したい場合は、その列名や行名の部分をクリックすれば良い。今回の場合「AF」の部分をクリックすると、指定が可能となる)
すると、条件指定画面が出るので、「セルの値」が「次の値に等しい」と指定する。その後、比較対象となるセルに「AG1」を指定する。
最後に「書式」を設定する。「書式」ボタンを押し、「パターン」シートを選択。セルの網掛けに「赤色」を指定すれば完了だ。
以上の作業により、セル幅を調整する度に、各回において、最も「シェイクスピア」に近い文字列が出た行が、赤く塗り潰されることになる。
――これで、致命的な退屈を少しは凌げるようになるはずだ。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます