碁石拾い





ゲームの進め方

最初に取る碁石をクリックします。次に取る碁石と順番にクリックします。 最後までクリックしたら「解答」のボタンをクリックしてください。 正解であれば”正解”と表示、失敗であれば”失敗”と表示します。

もう一度最初から挑戦するときには「クリア」のボタンをクリックしてください。 正解が見たい場合は「探索」のボタンをクリックしてください。正解は一つでは無いかもしれません。 その場合には「検索」ボタンをもう一度クリックしてください。次の正解を表示します。

「次へ」ボタンをクリックすると次の問題を表示します。

碁石拾いソルバー

碁石拾いは、盤面上のすべての碁石を決められたルールに従って取り除くパズルです。 このプログラムは、深さ優先探索(DFS)によって解を探索します。 開始する碁石はどこからでも選ぶことができます。

ルール

  • 開始する碁石はどこから選んでも構いません。
  • 現在いる碁石から上下左右のいずれかの方向へ移動します。斜めには移動できません。 1から4へは進めません。

  • 空いているマスは通過できます。 1から6へは進むことができます。

  • 進行方向で最初に見つかった碁石を取ります。それより先へ進むことはできません。
  • 途中に碁石がある場合、その碁石を飛び越えて進むことはできません。 1から2を飛ばして3へは行けません。

  • 碁石を取ると、その碁石の位置へ移動します。
  • 取った碁石は盤面から取り除かれます。 下の図は2からスタートした時を示しました。 2->4->5->7->6->1 と取った場合、1から3へは2を既に取っているので、2の碁石は 取り除かれていますので、1->3の順で取ることは可能です。

  • 一度通った線は二度通ることはできません。
  • すべての碁石を取り終えれば成功です。

探索アルゴリズム

ソルバーは深さ優先探索(Depth First Search : DFS)とバックトラックを用いて解を探索します。 現在位置から移動可能な碁石を順番に試し、途中で行き詰まった場合は盤面と通過した線を元に戻して別の経路を探索します。 開始位置もすべて試すことで、解が存在するかどうかを判定します。