4C

 僕は、昔から。3Dの迷宮を彷徨う系のビデオ・ゲームが苦手で。

 父の超古いパソコンで遊んでいた頃も、色々と入っていたのだが。何処を歩いても、全く同じに見えるし。ああいうのって、ちょっとずつ。少しずつ探索して、確認した範囲を丁寧に記録していかないと、まず解けないといっていいよね。つまり、言いたいのは:


『コンピュータでゲームしてるってのに、何で方眼紙と格闘しなきゃならないんだ…!』


 たぶん、僕が「記録魔」な性質たちだからこそ。方眼紙にきっちり書き込むほうがメインとなってしまって、「本末転倒な感じ」が耐え難いほどになってしまうのだろう……と。だから、あえて地図を作らずに、自動で探索させるようにできないかな?と、夢想したこともあった。

 実際、その黄ばんだ筐体ケースのハードディスクには。自分でプログラムしてができるソフトウェアも入っていて。当時10才そこそこだった僕なので。おそらく、父の手を借りるつもりだったのだろう。


 で、考え始めた……さてさて、どうやって自動探索しようか? と。迷路の解き方として、よく出てくる「左手を壁につけて進む」方式は。実際には、ゴールへ辿り着けない場合というのがあって。要するに、入口で手をつける壁が、ゴールへ続く壁とような迷路だ。入り口付近の左右の壁に対して、ゴールのある区画が孤立していれば。いつしか、入口へと戻ってきてしまうだろう。


 だから、もし入口に戻ってきてしまったら。今度は、どこかで手を壁から離さなければならない。そして、それは。反対側の壁に「切れ目」……つまり、入り込むことができる「分岐branch」があるときになるだろう。分岐に入った瞬間、手を戻して進むのだ。それでも探索済みの壁へと戻ってきてしまったら、再度同じ分岐に入った後に、さらに別の分岐がないか調べて、同じことを繰り返す。調べる先が探索済みの壁しかなくなったら、に入るのはやめて、さらに進んだ後に別の分岐がないか調べることになる。これで、いつかは解ける筈……は単純である。


1):ある分岐branchに入る

2):探索済みの壁に戻ってしまったら、1)の分岐に入り直して、さらに分岐がないか探す

3):2)の分岐を探す先まで「探索済みの壁しかない」状態になったら、1)の分岐に入るのはもうやめて、一つ先の分岐を探す


 この3ステップの基本手順を一種だけ用意すればよい、と思ったが。よく考えると、「同じことを繰り返す」といっても。それは、2)で「さらなる分岐」を見つけたとき、またこの手順が必要になることを意味しているので。最初の手順が終了していないのに、その手順で、「入れ子」に基本手順を始めることになることに気付いた。そして、実際の迷路では。分岐の先にも分岐が、そのまた先にも分岐があったりして。マトリョーシカ人形のような「入れ子」状態が、どれぐらい重なってくるのか分からず。どこかでゴールにたどり着くか、さもなくば入れ子の中身が全て「探索済みの壁」につきあたるかしなければ、最初の分岐で開始された基本手順を終えることはできないぞ……と。

 

 しかし、例えそうだとしても。きちんと動きさえすれば、時間は掛かるかもだが。この「基本手順」だけで、ゴールに辿り着ける筈だろう。おぅ!あったまいい~…などと自惚れながら。実のところ、そんな込み入ったことをやらなくても。もっとのだと、すぐ後で知ることになるのだが。すっかり自信満々になっていた僕は、紙の上にいろいろなパターンを書き出して検証していた。そこへ通りかかった父が一瞥するなり、


『コンピュータに解かせるのか?』

『……うん、そうだよ。』

『巨大迷路なんだろ? ……そういうのだと多分、メモリが足りなくなるぞ。』


 と言われたので、僕は「探索済みの壁」を覚えておくほうの話かと思って、


『迷路全体の、壁の位置を記録できても?』

『ああ。』

『え、なんで?』


 そこで、父から教わったのは。「基本手順」のために用意した「バケツ」たちは、「その手順」が終わるまで他の仕事には使えなくなること。そして分岐状況が判らない状態では、いくつ「基本手順」が入れ子になるか判らないのだから、「バケツ」が足りなくなる恐れがあること。だから……


『有名な「禁じ手」なんだ。』

『いけないの。』

『ん……いいのは、だけだな。』


 もしかしたら。

 そのとき父は、こう補足していたかもしれない。


 そのようなやり方は「再帰recursion」といって。それで「バケツ」が足りなくなることを、「スタック・オーバーフロー」というんだ……と。

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

作者を応援しよう!

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

応援したユーザー

新規登録で充実の読書を

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

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

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