飽くなき減量(後編)


 よく考えてみればだ。

 一文字ずつカタカナ文字を変換させた後、わざわざ、別セルを用いて結合する必要なんてどこにもない。

 結合文字を出力する際に、変換処理もやればいいだけのことではないか。そうなれば、一文字に変換する為だけのセルは不要になる。

 一致しているかを「〇」「×」で表示させるセルも同様に要らないはずだ。一致文字数を出す時に、同時に一致判定もすればいい。

 たったこれだけのことで、140000もの計算式を消すことが出来る。


 家に帰った私は早速、「無限の猿定理.xlsm」に手を加えることにした。


 修正点は以下の2か所に集約される。

・J列~P列(乱数に対応したカタカナを出す部分)を削除し、かわりにQ列の計算式をこのように修正。

「=VLOOKUP(C1,$A$1:$B$83,2,TRUE)&VLOOKUP(D1,$A$1:$B$83,2,TRUE)&…(中略)…&VLOOKUP(I1,$A$1:$B$83,2,TRUE)」

 何をやったか。J列からP列までの計算式を全て一つのセルにまとめて「&」で結合した――たったこれだけである。


・Y列~AE列(一文字ごとに対象と一致しているかを確認する部分)を削除し、かわりにAF列の計算式をこのように修正。

「=IF(MID(Q1,1,1)=$R$1,1,0)+IF(MID(Q1,2,1)=$S$1,1,0)+…(中略)…+IF(MID(Q1,7,1)=$X$1,1,0)」

 これは一見すると分かり難いが、要はQ列で生成された文字列のと「シ」を比較、を「ェ」と比較……を繰り返し、一致すれば「1」を足しているというだけである。

(「MID」関数は対象文字列の何文字目から何文字抜き取るかを設定することで、条件に合った文字列を返却する機能を持つ。上記式の「MID(Q1,7,1)」とは、「Q1にある文字列の7文字目から1文字抜き取る」という意味となる)

 

 修正自体は15分もかからないものだった。

 全体をざっと確認し、表示に誤りがないかをチェック出来たところで、早速、実行してみることにした。

 実行結果は以下の通り。


 1回目:9.53秒――

 2回目:9.70秒――ミゾカプ

 3回目:9.52秒――パオンゼ


 実行画面が出た時、不覚にも軽く噴き出してしまった。

 ここにきて、まさかの半減である。

 値付きのセル数は、修正前が「230360個」だったのに対して、現在は「90360個」であるから、計算式の複雑さによって実行時間に差はあるにせよ、概ねセルの数がそのまま実行時間に連動しているのだろう。

 これはつまり――絞り込むことさえ出来れば、実行時間は更に少なくなることに他ならない。


 まだ、希望はある。

 そんな思いを抱かせるには十分過ぎる結果となった。

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る