Line Sprinter(勝手呼称)

数学インデックスに戻る

記事作成日:2024/8/3
最終編集日:2024/8/5
ここではLine Sprinter(以下LSと略記)という勝手呼称されたある種のパズルについて記述している。
写真は中級クラスの試作コース。


入口から進み、いくつも用意された分岐路を選択しながら出口に到達するパズルとしては迷路が古典的だが、LSのコンセプトも迷路とほぼ同じで通路部分を線で置き換えただけである。迷路と同様、入口から線上をたどって出口に至る最短経路を見つけることが目的である。ただし通路の迷路では分岐路を自由に選択できるのに対し、LS では 突き当たるまで直進し、途中に分岐路があっても曲がることはできない のが大きく異なる。即ち”突っ走る”のみであり、これがLSのネーミングの大元である。

オーソドックスには、盤面は1cm角のマス目が印刷されたスケッチブックなどを用いて制作する。5mm以上の直線路で先端部に分岐を持たない部分は行き止まり(トラップ)を意味しており、到達すれば失敗である。突き当たりまで曲がれない特性を利用し、制作者は入口から出口までの間にトラップや無限ループ、遠回りになってしまうコースへ誘導する分岐を多数用意する。挑戦者はそれらの罠を回避し、最短距離で出口に到達できるコースを探し出す。

盤面が大きくなるほど作成も解くのにも時間がかかるが、後述するように到達経路が一意となる盤面であれば、最短経路を見つけるアルゴリズムが早期に知られている。そのアルゴリズムが既知になると同種の盤面はすべて機械的に解けてしまうので、到達不可能なコースを混入させることでアルゴリズムが適用できない盤面も考案されている。

1cm角のマス目に5mmのトラップが描かれることを考慮すると、盤面を構成する1cmの線分を描画する情報量は2ビットである。このことより盤面の x 方向と y 方向の線分のステータスをビット化すれば、盤面自体は非常に少ない情報量で表現可能である。
《 概要 》
盤面を構成する方法と、それを解く際の実際の動きを理解するために縦8マス×横8マスのサイズ(8x8のように略記される)で考えよう。
【 制作者目線 】
素朴な方法としては、紙と鉛筆で先に解答となるコースを描く。印刷して出題する場合は、8x8のグリッドを用意して描画ソフトを用いれば仕上がりがきれいである。
下図はコースを描画する前のテンプレート。


一般に入口は左下の x 方向と y 方向の2通り設けられる。出口は右上に設けられるが、正解となる最短経路はこのうちの一つのみである。盤面サイズが変わってもこの部分は共通である。

制作者は先述の基本ルールを元に解答コースを描いた後、挑戦者が容易に最短経路を見つけられないように偽のルートへ至る分岐を多数作成する。出口に到達しない偽ルートはトラップへ連れ込まれるパターンが多いが、無限ループに落とし込んだり、大変な無駄足を運ばせた挙げ句にスタート地点へ強制送還されるコースも作成可能である。こういった面白い挙動を示す盤面を作成するには、LSの基本ルールの熟知と理解を要する。

8x8の盤面の例。


迷路では通路に線を引けば良いので視覚的に分かりやすいが、LSでは線上を辿るため既存の線と重なって見づらい。紙に印刷して配布する場合はコースが見える程度に灰色へ変えた方が良い。


もっともPC上で作業するのは、サイズが限定されている盤面を仕上げ用に作成する場合である。最初は白紙にフリーハンドで適当なコース設定するのが良い。ある程度慣れてきたら、マス目が印刷されているスケッチブックを買ってきて筋引きを用いて盤面を作成する。最初に鉛筆で解答となる最短コースを描き、分岐点からトラップや無限ループなどに向かわせる偽のコースを追加する。盤面が広ければ偽のコースから更にいくつも分岐を設置し、最短コースが分かりにくくなるように迷彩を施す。

設定コースが多くなると、正解となる最短コースがどれか分かりづらくなる。そこで最短コースに至る右左折方向が分かるように曲がる側のコーナーに・印を着けておくと良い。接続状況一つ違えばコースが変わり、解けなくなったり逆に容易に解けてしまう場合が起こり得るのでチェックが必要である。

最短経路が一つしかなく確実に到達可能なものが仕上がったら、挑戦者が降参したとき正解を提示できるようにそのコースを控えておく。トレーシングペーパーに写し取っておくと重ねるだけで正解を提示できる。


最後にすべての線分を水性ペンなどで上書きし、鉛筆書きのコースと途中に着けた・印を消しゴムで消す。上書きするときは5mmの長さとなるトラップ部分の描き落としや接続に注意する。鉛筆書きを消すとき擦れて汚くなるので、ボールペンは使わない方が良い。複数人に配布し解いてもらうためには、原典をコピーする。解くときに経路が見やすく上からコースを試し書きしたものが見やすいように、水性ペンは黒ではなく薄めの色を使うと良い。
【 挑戦者目線 】
次に挑戦者目線での解き方を解説する。

挑戦者は A か B いずれかの入口からエントリーする。
A を選んだ場合、最初のステップで青の経路で三差路に到達する。


x 方向に2区画進むと突き当たり、y 方向に進む一つの経路しかないので向きを変えてそのまま直線路を突き当たるまで疾走する。途中3ヶ所の十字路は曲がることができず、4つ目がT字路なのでここに到達してから左右どちらかを選ぶこととなる。

左の分岐路を選んだ場合。
2区画進んだ先の分岐で左側はトラップなので選択できず、右折することとなる。すると強制的にスタート地点近くまで戻されてしまう。


これは強制送還ループの例である。トラップではないが最短経路を選ぶ目的からすれば解とはなり得ないので、実質的な失敗である。

B を選んだときの最初のステップ。


左を選択するとトラップに突っ込んでしまうので、右を選んだところ。


右を選ぶと直角カーブの後でトラップに連れ込まれるので、左を選んだ。


この地点から左右どちらの分岐を選んでもトラップに突っ込んでしまう。B からの分岐はすべて列挙済みであり、そのいずれもがトラップに入ってしまうことから、解となるルートは B から入るコースには存在しないことになる。
【 通常の迷路との比較 】
通路をたどるタイプの古典的な迷路は、トンネルや立体交差のギミックを導入しない限り答えとなる経路はループを持ち得ない。このため解くにしたがって出口に近づいていく経路になるのが一般的である。LSでは通常の十字路だと東西方向と南北方向の往来が完全に分離されるため、最短経路の自由度が高い。出口ギリギリまで導いておきながら再び出発点近くまで連れ戻され、盤上を激しく動き回って出口に到達する正解の経路を作成できる。

突き当たるまで曲がれず後退できないルールを利用して、一度入り込めば無限ループに陥るかトラップへ突っ込む以外ないコースを作成できる。直角折れ点と三差路を4つ組み合わせれば無限ループを構成できる。この経路の両端に長い直線路を含んだトラップを設置し、どの方向に進んでも失敗する部分を作っておく。この直線路に流入する三差路をいくつか作れば、他の経路からでもことごとく無限ループ or トラップに連れ込まれる鬼畜なルートができあがる。墓場コースとも言えるこのパターンは、複数の盤面を作成する過程で見つけられた。

解く側からすれば従来型迷路の場合、三方を線分で囲まれた部分を順次消していくことで最短コースのみを浮かび上がらせる解法アルゴリズムが存在する。LSではトラップに陥る経路に順次×印を付けるなどで塞ぐ手順となるので、難易度は従来型迷路と同等と思われる。
【 ネーミングについて 】
2000年初頭に Flash などを用いてウェブ上で動作する Line Rider なるおもちゃ[1]が大人気を博した。これとは全くコンセプトが異なるが、線上をあるルールに従ってたどることから、初期は Line Driver と命名していた。しかし検索で調べたところ Microsoft が Line Rider にやや似た感じのゲームを Line Driver と命名していたこととラインドライバーなる普通名詞が存在することから、線上を疾走するという意味で Line Sprinter に置き換えた。

誰でも容易に思い付くコンセプトであり、恐らくコンピューターの出現以前から同種のゲームが考案されているだろう。別途特定の名称が与えられているかも知れない。
【 作成済みの盤面 】
最終編集日時点で、前掲の8x8以外に12x16の盤面を2つと20x15を1つ作成している。最初に20x15を作成し、後から12x16を作ったので恐らく12x16の方が難しい。このサイズの満足いく盤面を作成するにはコース設定から清書まで含めて2時間程度を要する。

冒頭に掲載した盤面は、スケッチブックを半分に折って12x16を2つ作成したうちの一つである。全面を使えば24x36程度のものを作成可能である。この程度のサイズがあれば出口付近に複数回接近しながら入口付近まで押し戻されるコースや、右折ばかり続けて時計回りにグルグル回る挙動がエキゾチックなコースができるだろう。さすがに時間が惜しいので、よほどヒマを持て余したときのために作業を保留しておくことにする。

ちなみに例示した8x8の盤面は数十分で仕上げており、分岐が少ないから解くにも数分レベルだろう。解答の経路はここには載せないでおく。答えとなる最短経路の長さは、一辺を1cmとして40cmとだけ書いておこう。
《 最短経路を見つけるアルゴリズムについて 》
パズルとして成立する盤面を作る純朴な方法は、最初に答えとなる出口までの最短経路を書き込み、そこから出口には到達しない多数の分岐や枝線で埋め尽くすものである。この条件を満たす盤面は、最短経路を探し出す効率的なアルゴリズムが知られている。

注意ネタバレを防ぐため既定で非表示にしています。お読みいただくには「閲覧する」ボタンを押してください。

十分大きな盤面に分岐点を多数設置し、なおかつ到達不可能な複数箇所から出口に接続されるダミーの経路を多数設置してやれば、最短経路を探索する方法はほぼ純粋に試行錯誤のみになるだろう。
《 盤面を保存するデジタル形式について 》
最近、数学的思考を怠けているので、以下の記述や計算には誤りがあるかも知れない。

盤面を xy 座標上に置き出発点を原点に配置すると、十字路や三差路などはすべて格子点上に位置する。トラップのみが5mmの位置表現を要する。盤面の経路すべてを格子点単位で分解したとき、隣接する格子点までの1cmの線分は、以下の4パターンのどれかになる。


したがって盤面の2cmの線分を1バイト、4cmの線分を1ワードで表現できる。例示してきた8x8の盤面の原点から (8,0) までの経路情報を保持するビット配列は 1111001111110111 であり、16進表記では f3f7 と非常にコンパクトに表記可能である。

8x8のこの盤面に限定して保存するには、x 方向と y 方向にそれぞれ9本を走査すれば良い。このすべてを保持する16進表記データは以下の通りである。
x0-8: dd ff ff ff ff 3f fd ff fe fc ef ff fb ff ff ff bf df
y0-8: f3 f7 ff 3f ff 7f ff ec fd f7 fe ff ff ff ff bf cf d7
僅か36バイト、18ワード(9Dword)で記録可能である。
ただし数値データとして読み出すときにはエンディアンを考慮する必要がある

データ形式を統一すれば、適切な描画ソフトウェアを用意することで少ない情報量で複雑な盤面を再現可能である。出発点の A,B や到達点の X,Y と誘導路の情報は固定されているから、情報量はゼロである。盤面サイズを任意にするなら a×b のサイズ情報を保持する必要がある。手作業で 256×256 といった巨大な盤面を作成するのは非常に困難なので、これを上限とすればサイズ情報の保持は2バイトで済む。

a×b の盤面走査に必要な線分は (a+1)(b+1) 本であり、一本当たりに必要な情報量は、x 方向が 2aビット(a/4バイト)、y 方向が 2bビット(b/4バイト)である。それぞれの線分は独立した状態を取ることができるので、盤面全体の状態は全部で (2a)a+1×(2b)b+1 通り存在する。特に一辺が256の盤面全体を保持するデータ量は 210×257 ビットとなる。対応するソフトウェアからの読み取りを容易にするために、盤面の辺長は少なくとも偶数、できれば4の倍数に整えておくと良い。

この保存形式は、実直に線分のデータを拾い上げるナイーヴな方式である。ゲームとして成立するには曲がりなりにも入口から出口まで線分で繋がっていなければならず、挑戦者を困惑させる程度に盤面上を動き回る経路なら、16進データは必然的に格子点間が結ばれた ff が多くなる。この点を考慮してデータを圧縮すれば、更にコンパクトな情報サイズで盤面を表現できるだろう。
《 ランダムな盤面に対する数学的考察 》
上記のデジタル形式は、人間が手描きで作成した盤面を保存するためのフォーマットの一つである。例えば8x8に固定されたサイズの盤面にトラップも含めて経路を描くとき 2144 通りの状態を取り得る。その中には先述の例示盤面も含まれる。ランダムに盤面を発生させたとき、LSの走行ルールに則って到達可能な経路が存在する確率はどのくらいだろうか。

LSとして取り組んだ場合の盤面の状況は、次のものが考えられる。
(1) 自明に解ける(分岐数ゼロか極めて少ない場合)
(2) 自明に解けない(出口に繋がる経路が一つもない)
 (2)-1 出口に繋がる経路はあるが到達できない
(1) のパターンでは、原点から盤面の角を経由して出口に到達する経路が描かれている場合などが該当する。その他の部分がどのような状態であろうが結果は変わらない。(2) では入口と出口の間に繋がった線分が一つもない状態で、このような場合もLSの走行ルールに関係なく結果は変わらない。出口に繋がる経路が物理的に繋がっていても、その到達場所がLSの走行ルールで到達可能な直線に対してT字路の形で繋がっていたなら流入不可能だから、この場合も到達できない。

予想としては (1) か (2) に属する盤面が8割以上、解けるもののゲームとしての価値がない盤面が殆ど2割程度で、前掲の例題のような盤面は全体の1%にも満たないのではないかと思われる。それでも例題程度の盤面は、最短経路に自己交差箇所がいくつあるかによって分類したとしても際限ないほど作成可能だろう。

盤面が大きくなるほどに経路は複雑化する。この増大スピードがどのようであるかは、まったく自明な1x1の盤面からスタートして徐々に辺長を増やしてどの程度の経路を作成可能かを観察することで概要がつかめるかも知れない。ちなみに1x1の盤面に5mmのトラップを含めずに線分を設定する方法は16通り存在し、このうち7通りが到達可能である。
《 バリエーション 》
基本ルールは温存したままで正三角形や正六角形でコースを表現することが容易に想像される。分岐数が同じであればスタンダードなLSと難易度は同程度で作図が面倒になるため試作されていない。スタンダードなLSに45度線を加えれば、最大6分岐する亜種を作成可能である。線が込み入って追跡しづらくなるため、サイズを倍にして交点が座標上の格子点に位置するようにした方が良い。

描画ツールによるサポートが必要だが、同じルールで3次元方向に拡張可能である。この場合は最大4分岐する。脳内で盤面の想像は可能としても、実際の描画や経路の探索は非常に困難になるだろう。
《 個人的関わり 》
恐らく何かの書籍を読んで興味を持ったのがキッカケだろう。高校生のときB5くらいの方眼紙にコースを書いて、神原町にある共営社の事務所にあるコピー機を使って数枚コピーしている。このときルールを説明してコピーした一枚を従業員に渡した記憶がある。日記に記述があるかも知れない。なお、このとき作成した方眼紙の原典は行方不明になっている。
出典および編集追記:

1.「Wikipedia - Line Rider
Line Rider はゴールなど何かの目的がなく挙動を愉しむ純粋な遊びツールであることから、パズルではなく「おもちゃ」と表現されている。

2.「FBタイムライン|試作品が一応できた

ホームに戻る