スパイダーソリティアの手詰まりとは
一般に手詰まりや詰みと呼ばれるのは、現在の盤面からゲームを前へ進められない状態です。ただし、スパイダーソリティアでは「合法な移動がない状態」と「カードは動かせるがクリアできない状態」を分けて考える必要があります。数手を往復できるだけの局面もあるため、動くカードが残っているだけでは解けるとは限りません。
山札が残っている場合、空き列を埋めれば次の10枚を配れる可能性があります。山札がなくても、裏向きカードを開く手や新しい空き列を作る手が残っていれば、まだ展開が変わることがあります。まずはゲーム終了と決めつけず、盤面の種類を確認します。
手詰まり・循環・クリア不能・判定保留の違い
- 移動不能の手詰まり:山札が空で、ルール上動かせるカードや並びが一つもない状態です。
- 循環:合法手はあるものの、数手後に同じカード配置へ戻り、同じ局面を繰り返している状態です。別の分岐が残る可能性があるため、循環だけでは詰みと断定しません。
- クリア不能を確認:対象局面から到達できる候補をすべて調べても、KからAの完成組をそろえる経路が存在しないと確認できた状態です。
- 判定保留:探索できる範囲が大きく、時間や件数の上限までに解答もクリア不能の証明も得られなかった状態です。判定保留を敗北として扱いません。
同じ手を繰り返す循環から抜ける方法
カードを列Aから列Bへ動かし、別のカードを処理した後で列Aへ戻すような往復が続くと、見た目には多く動かしていても盤面の選択肢は増えません。循環を抜けるには、同じ移動を続けるのではなく、直前の分岐点まで元に戻して、裏向きカードを開く手、空き列を作る手、同じスートを長くする手を優先します。
Supaidaは最近の局面と現在の局面を比較し、同じ状態への再訪を検出します。循環中のヒントでは最近試していない移動を優先し、検証済み配札で解答経路を外れている場合は、クリアまで確認済みの局面へ戻る選択肢も案内します。
解けないと感じたときの確認手順
- 数字が1つ小さいカードへ移せる1枚の手を、10列すべてで確認する。
- 同じスートで連続した表向きの並びを、まとめて移動できないか確認する。
- 空き列を低いカードでふさいでいる場合は、元に戻して別の置き方を試す。
- 山札が残っている場合は、すべての空き列を埋めたうえで配れるか確認する。
- 数手後に同じ配置へ戻っていないか確認し、循環なら分岐点まで元に戻す。
- ヒントが示す未探索の候補を試し、それでも進まなければ新しいゲームを検討する。
Supaidaの手詰まり・循環判定はブラウザ内で行う
プレイ中の盤面、移動履歴、循環判定は端末のブラウザ内で処理します。リアルタイムの手詰まり判定のために盤面をサーバーへ送信したり、サーバー上の求解器へ問い合わせたりしません。通常のドラッグやクリックを妨げないよう、終盤探索はブラウザの別スレッドで実行します。
まず山札が空で合法手がない硬い手詰まりを確認します。合法手が残る場合は最近の局面への再訪を調べ、循環していてもゲームを止めず、別の移動を探せるようにします。さらに山札と裏向きカードがなく、残りの盤面が十分小さい終盤だけ、到達可能な手順を限定的に探索します。
クリア不能と表示できる条件
クリア不能という案内は、対象にした終盤のすべての候補を調べ終え、勝利へ到達する経路がなかった場合だけ表示します。探索中に時間または件数の上限へ達した場合は「判定保留」であり、クリア不能とは表示しません。この区別によって、計算を打ち切っただけの局面を誤って詰みと断定することを避けています。
検証済みの1スート・2スート配札には、開始時点から少なくとも一つのクリア経路があります。ただし、プレイヤーがその経路から外れた後のすべての局面まで勝利を保証するものではありません。4スートのランダム配札にも、必ず解けるという表示は行っていません。
すべての局面を瞬時に判定できない理由
スパイダーソリティアは、カードの移動ごとに多くの分岐が生まれ、同じ局面へ別の順番で到達することもあります。広義の問題がNP完全であることは、Jesse Sternの「Spider Solitaire is NP-Complete」で示されています。そのため、任意の盤面を常に短時間で厳密判定できると約束するのは現実的ではありません。
実用的な求解では、同じ状態を二度調べない状態キャッシュ、同等な列をまとめる対称性削減、不要な往復を省く枝刈りなどを組み合わせます。BlakeとGentのソリティア可解性研究も、深さ優先探索、換位表、対称性などを使った探索方法を説明しています。Supaidaはこれらの考え方を、ブラウザで安全に実行できる範囲へ限定して利用します。
スパイダーソリティアの手詰まり FAQ
スパイダーソリティアは必ず解けますか?
いいえ。ランダム配札や途中で選んだ手順によっては、クリアできない局面があります。Supaidaの検証済み配札も、用意された解答経路を外れた後まで必勝を保証するものではありません。
動かせるカードがあれば手詰まりではありませんか?
合法手が残っていても、同じ局面へ戻る手しか選べない場合や、どの分岐からも完成できない場合があります。動かせることと、クリアできることは同じではありません。
同じ手を繰り返す循環は、すぐ詰みと判定されますか?
いいえ。循環は別の分岐が残っている可能性があるため、ただちに詰みとは判定しません。未探索の手を試すか、元に戻して分岐点から別の順番を選びます。
手詰まりや循環の判定にサーバーを使いますか?
オンライン対局中の循環検出と限定的な終盤探索は、ブラウザ内で行います。盤面をサーバーへ送ってリアルタイムに求解する仕組みではありません。
判定に時間がかかった場合はクリア不能ですか?
いいえ。探索が時間や件数の上限に達した場合は判定保留です。到達可能な候補をすべて調べ終えた場合だけ、クリア不能と案内します。
ルールとアルゴリズムの参考資料
ルールの確認にはKDE KPatienceのSpiderルールとBicycle CardsのSpiderルールを参照しています。探索方法の背景には上記の研究論文と、オープンソース求解器Solvitaireの実装資料を使用しています。