マガジン

パズルの一手戻すを「3回まで」に制限する

遊びを見つける

執筆にClaudeを使用しています。

迷路の一角から出口までを段階的に照らす三つの灯りと、小さな旅人の駒
記事のテーマをもとに制作したAI生成イラスト。

スライドパズルの終盤で、あと二手で揃いそうな配置を前に、一手戻したくなる場面を考えてみます。戻す回数に上限がなければ、とりあえず動かして、まずければ戻す、という進め方ができます。では「戻すのは3回まで」と決めたら、その進め方は変わるのでしょうか。変わるとしたら、どこに表れるのでしょうか。 この記事は、その答えを書くものではありません。自分で確かめるための実験の設計書です。準備するもの、条件の組み方、記録の取り方、結果の読み方、そして間違えやすい点を順に示します。答えは、読者が自分の記録から出すことになります。 先に断っておくと、アソバースの公式作品に「戻す回数の上限」を設定する機能はありません。3回までというルールは、紙とペンで自分に課す自主ルールとして運用します。

この記事の目次
  1. 問いを立てる:比べるのは「戻す」ではなく「動かす前の考え方」
  2. 準備するもの
  3. 手順と記録の取り方
  4. 結果の読み方と、誤りやすい点
  5. 作る人へ:自作パズルに制限を入れる最小形
  6. 次の行動

問いを立てる:比べるのは「戻す」ではなく「動かす前の考え方」

比べたいのは、戻す回数そのものよりも、一手を動かす前に何をしているかです。無制限の取り消しがあると、頭の中で先読みする代わりに、盤面を実際に動かして結果を見る選び方ができます。制限があると、動かす前に読む比重が増えるかもしれません。ただし、これは仮説にすぎません。制限が重荷になって、かえって手が止まるだけという可能性も同じくらいあります。

そこで、問いを三つに分けて立てます。

  1. 制限をかけると、戻した回数はどう変わるか(3に張り付くのか、そこまで使わないのか)。
  2. クリアまでの時間と手数は、どちらの方向に動くか。
  3. 戻す直前の理由は、「間違いに気づいた」と「試しに動かした」のどちらが多いか。

三つ目は、考え方の変化をいちばん直接に映す項目です。回数や時間は他の要因にも左右されますが、理由の内訳は、その場の動機を自分で分類した記録になります。

準備するもの

使う作品は、一手戻す機能のある公式作品から選びます。確認済みの範囲で、相性を整理します。

  • かたちのあいだ、戻す機能:一手戻す(手数は減らない)。3×3の入門と4×4の2段階、実験での扱い:手数の読み方に注意が必要です。保存があります
  • プリズムの道、戻す機能:戻す。8ステージ。解放済みステージを選び直せる、実験での扱い:難度の近いステージをペアにしやすいです
  • 月夜の配達、戻す機能:一歩戻る。3つの夜、実験での扱い:夜が3つなので、ペアを作りにくい点に注意します
  • 潮目のオセロ/灯りのチェス、戻す機能:一手戻す(ひとり対局)、実験での扱い:相手の手が毎回変わるため、比較には不向きです

初めての実施には、プリズムの道かかたちのあいだをおすすめします。盤面が小さく、1回の所要時間を読みやすいからです。オセロやチェスは、相手の指し手によって局面が毎回変わるので、条件の差と局面の差を切り分けられません。

そのほかに用意するのは次の三つです。

  • タイマー(スマートフォンのストップウォッチで足ります)。
  • 記録用紙。表は次のように作ります。
  • 「戻す券」として、紙に丸を3つ書いたもの。

記録用紙の列は、日付、作品とステージ、条件(A=無制限、B=3回まで)、戻した回数、時間、手数(表示があれば)、ヒント回数、クリアの可否、理由メモの内訳(「気づいた」「試した」の正の字)とします。

作品を開く前に、必ず確かめておくことがあります。かたちのあいだは、一手戻しても手数が減らないと案内されています。戻したあとに手数表示がどう動くか(増えるのか、変わらないのか)は、作品を開いて自分の目で確かめてください。プリズムの道の「最少回転の記録」に、戻した操作がどう反映されるかも同様に確認が必要です。ここを把握しないまま手数を比べると、読み違えます。

手順と記録の取り方

条件の決め方

条件は二つです。A は戻す回数に制限なし、B は戻すのは3回までです。同じステージを2条件で続けて遊ぶと、2回目は答えを知っているので圧倒的に有利になります。これを避けるため、次のようにします。

  • 難度が近いと思えるステージ(または盤面)を2つ組にします。プリズムの道なら、隣り合うステージを組にするのが一案です。難度が近いかどうかは、先に1回ずつ普通に遊んだ体感で決めます。
  • 組の中で、どちらに A、どちらに B を割り当てるかを交互に入れ替えます。1組目は前者が A、2組目は前者が B、という具合です。
  • 組はできれば5組以上用意します。1組だけでは、ステージ固有の難しさと条件の差を区別できません。

かたちのあいだの場合は、「同じ配置の再挑戦」機能があるため、同じ配置を2条件で遊ぶことも可能です。ただし、先に遊んだほうの条件が学習で有利になります。使うなら、A→B と B→A を同じ回数ずつ混ぜ、学習の影響が両条件に均等にかかるようにします。

1回の進め方

  1. 作品を開き、条件を声に出して確認します。ヒントを使うかどうかは、A・B どちらでも同じ扱いにします。迷うなら、ヒントは使わないと決めておくのが最も単純です。
  2. B のときは、戻す券を手元に置きます。戻すボタンを押すたびに、丸を1つ消します。
  3. 戻す前に、一言だけ理由をメモします。「間違いに気づいた」か「試しに動かした」の2択で、正の字を付けるだけにします。迷ったら「試した」に寄せるなど、基準を最初に決めておきます。
  4. 3つ使い切ったら、戻すボタンは押しません。そのまま最後まで進めます。行き詰まっても、そこで中断せず、クリアか、自分で決めた時間切れまで続けます。
  5. クリアしたら、時間、手数、戻した回数、ヒント回数を記入します。

時間切れを設ける場合は、条件にかかわらず同じ長さにします。たとえば1回につき10分と決めたら、A でも B でも10分で打ち切り、「未クリア」と記録します。

記録の単位と回数

  • 戻した回数は、1回の挑戦ごとの合計です。
  • 時間は、開始から完了表示までを秒の単位で取ります。
  • 理由メモは、挑戦ごとに「気づいた」「試した」の件数を数えます。
  • 回数は、各条件で最低5回です。同じ人が同じ時間帯に続けて行うと疲労が混ざるので、1日に行うのは2〜3回までとし、複数日に分けます。

作品の記録は、10作品中10作品(かたちのあいだは保存あり)のうち、保存がない作品では画面を開いている間しか残りません。公式の記録機能を頼らず、必ず紙に書き写してください。

結果の読み方と、誤りやすい点

読み方の目安

記録がそろったら、条件ごとに並べて、次の順で眺めます。

  • 戻した回数:B で毎回3に張り付くなら、制限が実際に効いています。3未満ばかりなら、そもそも普段それほど戻していないので、この実験では差が出にくい題材です。
  • 時間と手数:A と B の差が、各条件の中のばらつきより明らかに大きいときだけ、条件の影響を疑います。差が同程度なら、「この回数では判断できない」が正直な結論です。
  • 理由の内訳:A で「試した」が多く、B で減っているなら、動かす前の考え方が変わった可能性があります。逆に B でも「試した」が多いまま、3回を早く使い切っているなら、制限は戦略を変えていないことになります。

判断は、組ごとの差で見ます。5組のうち、B のほうが短かった組がいくつあるかを数える、という見方が簡単です。偏りがなければ、結論は保留にします。

誤りやすい点

  • 学習効果:同じ盤面を繰り返すと、条件に関係なく上達します。前述の入れ替えを守ってください。
  • ヒントの混入:片方の条件だけでヒントを使うと、比較が崩れます。月夜の配達のように、次の一歩を照らすヒントのある作品では特に注意します。
  • 手数の読み違い:かたちのあいだの手数は、戻しても減りません。手数を「解くのに要した手」として単純に比べると、戻した分が混ざります。まず表示の動きを確認し、迷うときは時間と戻した回数を主な指標にします。
  • 3回を温存しすぎる:使い切った後に詰むのを恐れて、早い段階で戻せなくなる動きが出ることがあります。これは制限の効果の一部ですが、記録には「温存して戻さなかった」と書き添えておくと、後で読み返せます。
  • 相手のいる作品:オセロやチェスの対CPUは、相手の応手が変わるため、条件の差が局面の差に埋もれます。
  • 気分の影響:「失敗できない」という緊張で、時間が延びることもあります。数値に出ない感想も、一行だけメモしておきます。

作る人へ:自作パズルに制限を入れる最小形

自分でパズルを作る人は、この実験を作る側の視点に置き換えることもできます。取り消しの上限を入れると、画面に「残り何回」を出す必要が生まれ、その表示が遊び方を左右します。次は、クリックを「一手」とみなすだけの最小構成です。単独の HTML として開くと動きます。

html
<button id="undo">戻す</button>
<p id="info"></p>
<script>
const LIMIT = 3;
let moves = [];
let undoUsed = 0;
function move(m) { moves.push(m); render(); }
function undo() {
  if (moves.length === 0 || undoUsed >= LIMIT) return;
  moves.pop();
  undoUsed++;
  render();
}
function render() {
  document.getElementById("info").textContent =
    "手数 " + moves.length + " / 残り戻す " + (LIMIT - undoUsed);
}
document.getElementById("undo").onclick = undo;
document.addEventListener("click", e => {
  if (e.target.id !== "undo") move("x");
});
render();
</script>

ここで決める必要があるのは、戻したときに手数を減らすかどうかです。コードでは moves.pop() で手数が減る作りですが、かたちのあいだのように「戻しても手数は減らない」設計にもできます。どちらが遊ぶ人の判断を助けるかは、上の実験で記録を取れば比べられます。

次の行動

まず、手元で遊べるパズルを一つ選び、難度の近い組を5つ用意してください。次に、戻す券を紙に3つ書き、1回目を A(無制限)で遊びます。その場で記録用紙に書き込むところから始めてみてください。