飽くなき減量(前編)
私は仕事場の休憩室で、物思いにふけっていた――傍には「知的飲料」の異名を持つドクターペ〇パーが置かれている。
十二月に入ったことで、この実験が始まってから二ヶ月が経過した。
更新速度は週次程度に少なくなり、進捗は(着実に進んでいるとは言え)牛歩のようなもの。
カンニングという手まで使ったというのに、「シェイクスピア」の七文字は余りに遠くにある。「まだチュートリアルか」「いつになったら本編始まるんだ」と思う読者の方々もいるだろう。
嗚呼、次回の報告はどうしたらいいのか――
炭酸飲料を口に含むと、オリジナリティに溢れた味が全体に広がる。
溜息をつきながら、持参した大学ノート(無限の猿定理に関する資料)をぼんやりと眺めてみる。
描画もやらず、細かい仕様も活用した。
これ以上、何かやれることはあるのか……
実装方法を再度確認してみる。
1.A列:0~82までの83個の一連番号
2.B列:A列に対応したカタカナ文字列
3.C列~I列:条件に応じて0~82までの乱数を表示させる場所
4.J列~P列:3.で出現させた乱数を基に、それに対応したカタカナを表示させる場所
5.Q列:4.で表示した7個のカタカナを結合した、7文字のカタカナ
6.R列~X列:1行目にそれぞれ「シ」「ェ」「イ」「ク」「ス」「ピ」「ア」とある。これが対象文字列となる。
7.Y列~AE列:4.で表示させたカタカナと、6.の対象文字を比較し、一致していたら「〇」そうでなければ「×」を出す
8.AF列:7.の「〇」の数の合計。これが一致文字数になる
9.AG列:8.の中で最大の数値(10000行の中で最大の一致文字数になる)
10.AH列~AJ列:マクロを用いて自動出力された、10000行ごとの「シェイクスピア」に最も近い文字列(5.)、一致文字数、行数
11.AK列:10.の中で最大の数値(530000行の中で最大の一致文字数になる)
12.AL列~AN列:10.の530000行(1周期)版
13.AQ列~AP列:各周期ごとの実行時間と総合計時間
パッと見る限り、どこも取り除けないように思える。
すべての行には明確な利用目的があり、無駄な項目は見受けられない。
やはり、この状態で実験を続けるしかないのか。
しかし、やむを得ないことではあるが、膨大なデータ量である。
3.のように乱数を生成する箇所や、4.のように変換を実施する箇所については、10000行すべてに値が入っている。それが14列あるわけだから、これだけで140000セル――E〇CELのセルがどのような実装方法をしているかは不明だが、その分だけ個別の変数を用意しているとすれば、挙動が遅くなるのも無理はない。
それに加えて、各セルの値は一定ではない。乱数に従って、動的に変わっていくのだ。つまり、計算式の挙動が毎回行われる……140000回も。これは描画の有無とは全く関係がない話だ。
どうすればいい。
頭を悩ませていた私はふと、過去に書いたことを思い出した。
――こういう時はまず、やりたいことを紙に書く。
ああ、計算式のセル数を少なく出来ればいいなあ。
――次に、目的が達成出来ない原因を書いてみる。
あの時とは違って、明確な理由は思い浮かばないが、ネックとなっている箇所はなんとなく分かる。
乱数を一文字ずつ変換(4.)し、更に一致文字数の出力の為に、一文字ずつ一致チェック(7.)をかけているという箇所である。
これだけで10000行が14列、140000セルにもなっている。
――出来ない原因が分かれば、その文章を逆にした状態がゴールとなる。
簡単な話だ。
七文字のカタカナ(乱数)と「シェイクスピア」という文字列を比較できることがゴールである。
だが、それが達成出来なかったから、こうして実装しているのであって……
って……あれ?
これ、そんなに難しい話でもないような?
私の目はたちまちに冴えた。
それからは、休憩時間が終わるまで(昼ご飯すら放置して)大学ノートに案を書き込み続けていた。
ドクターペ〇パーの炭酸は、とっくに抜けきっていた。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます