N88-BASICでスライドパズル (3回目)
2022/2/26(土)
N88-BASICでスライドパズル (3回目)
Sliding puzzle(8)の解答探索
123 123 123
456 → 45 → 456
78 786 78
スペースの場所へ1~8を動かしてから、
元に戻すパズルです。
上の例では1回しか動かしていないので
すぐ元に戻せますが、たくさん動かせば
元に戻すのが難しくなります。
動かしたい方向のカーソルキーで移動します。
(移動方向表示は30回またはEnterで改行)
sキーで30回適当に移動します。
aキーで解答探索します。(qキーで途中中断)
スペースキーで終了です。
解答探索
(1) (2) (3)
xxx xxx xxx
盤面 xx2 → xxx , xx
x1 x 1 xx2
方法 "" "→" "↓"
(1)からは(2)と(3)の動かし方があります
PUZZNは(1),(2),(3)の盤面を記憶する最大数です
MOVENは(2),(3)へ至る方法を記憶する最大値です
(2),(3)について(1)と同様に繰り返し、
初めに見つけた答えを表示しています。
深さ探索(スタックの先入れ後出し)ではなく
幅探索(ストリームの先入れ先出し)で検索しています
ので初めに見つけた答えは最短経路の一つです。
1. (1)を保存
2. (1)を取出し移動可能な盤(2),(3)を保存
3. (2)を取出し移動可能な盤保存…(4)とします
4. (3)を取出し移動可能な盤保存…(5)~とします
5. (4)を取出し....
と保存しようとする盤が答えになるまで繰り返します。
ただし、今までと同じ盤面になったときは保存しない
チェックを入れています。
このチェックを入れると、答えを見つけるまでの
時間が節約できる代わりに、メモリーが多く必要です。
以下のメモリーでは、メモリーが不足で途中中断
する場合が多いです
1050 PUZZN = 45000
1060 MOVEN = 15000
を増やせば最後まで検索できると思います。
NL-BASICはNLBasic01.txtの
M, 0を
M, Eとして
NLBasic.exeのある場所にコピーすると
メモリーを増やせますので両方共、
10倍ぐらいで試して見て下さい。
1050 PUZZN = 450000
1060 MOVEN = 150000
NL-BASICとblg~.zip(puzz003.bas)は
N88-BASICでスライドパズル (3回目)
Sliding puzzle(8)の解答探索
123 123 123
456 → 45 → 456
78 786 78
スペースの場所へ1~8を動かしてから、
元に戻すパズルです。
上の例では1回しか動かしていないので
すぐ元に戻せますが、たくさん動かせば
元に戻すのが難しくなります。
動かしたい方向のカーソルキーで移動します。
(移動方向表示は30回またはEnterで改行)
sキーで30回適当に移動します。
aキーで解答探索します。(qキーで途中中断)
スペースキーで終了です。
解答探索
(1) (2) (3)
xxx xxx xxx
盤面 xx2 → xxx , xx
x1 x 1 xx2
方法 "" "→" "↓"
(1)からは(2)と(3)の動かし方があります
PUZZNは(1),(2),(3)の盤面を記憶する最大数です
MOVENは(2),(3)へ至る方法を記憶する最大値です
(2),(3)について(1)と同様に繰り返し、
初めに見つけた答えを表示しています。
深さ探索(スタックの先入れ後出し)ではなく
幅探索(ストリームの先入れ先出し)で検索しています
ので初めに見つけた答えは最短経路の一つです。
1. (1)を保存
2. (1)を取出し移動可能な盤(2),(3)を保存
3. (2)を取出し移動可能な盤保存…(4)とします
4. (3)を取出し移動可能な盤保存…(5)~とします
5. (4)を取出し....
と保存しようとする盤が答えになるまで繰り返します。
ただし、今までと同じ盤面になったときは保存しない
チェックを入れています。
このチェックを入れると、答えを見つけるまでの
時間が節約できる代わりに、メモリーが多く必要です。
以下のメモリーでは、メモリーが不足で途中中断
する場合が多いです
1050 PUZZN = 45000
1060 MOVEN = 15000
を増やせば最後まで検索できると思います。
NL-BASICはNLBasic01.txtの
M, 0を
M, Eとして
NLBasic.exeのある場所にコピーすると
メモリーを増やせますので両方共、
10倍ぐらいで試して見て下さい。
1050 PUZZN = 450000
1060 MOVEN = 150000
以下のリンクからダウンロードできます
]
]
Readme.txtを読んで遊んで下さい