【作る】倉庫番パズルの自動プログラム 【解く】
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
04/07/03 08:04ID:/HqS7Sh0自動で生成したり解いたりするには
どのようなプログラムを書けばいいでしょうか?
プログラムの達人から初心者まで
興味のある方は是非参加してください。
0002名前は開発中のものです。
04/07/03 08:04ID:/HqS7Sh0http://www.sokoban.jp/
クローン
http://perso.wanadoo.fr/mrbozo/sokoban/
http://www.sourcecode.se/sokoban/
http://www.sokomind.de/
問題面集
http://levels.sokomind.de/
http://www.sourcecode.se/sokoban/levels.php
0003名前は開発中のものです。
04/07/03 08:05ID:/HqS7Sh0小さな問題面(を作る・解く)からだと思うのですが
何から手をつければよいのやら
作るためにはまず解けなければならないのか、
それとも解くルーチンが脆弱でもそこそこは作れるのかな?
0004名前は開発中のものです。
04/07/03 08:31ID:7RtovP1J疋田センセにでも聞け。糸終
0005名前は開発中のものです。
04/07/03 08:56ID:T5561hDdで、そいつで解けるレベルのものなら作れると
0006名前は開発中のものです。
04/07/03 13:20ID:QlamLHhphttp://www.ic-net.or.jp/home/takaken/so/soko/index.html
http://www.ic-net.or.jp/home/takaken/nt/soko/index.html
0007名前は開発中のものです。
04/07/04 11:07ID:39IxYScY0008名前は開発中のものです。
04/07/04 20:54ID:WaLy+q++0009名前は開発中のものです。
04/07/05 09:54ID:NuSjOHhlbit vol.26-27に紙か磁気で公開されてたりすんのかな。
あったとしても1994年だとWindows上では無理か。
Rogue系みたいに、毎回自動で作られたマップを遊べる倉庫番
なんてのがあるとアツイんだけどなー
0010名前は開発中のものです。
04/07/05 12:13ID:+7Vba4Jo0011名前は開発中のものです。
04/07/05 23:54ID:n2HoeUWw0012名前は開発中のものです。
04/07/06 21:32ID:+dqSWx6h# $ . #
# . #
# $ #
## . #
### $ ##
## @ #
##########
こんなんばっかになりそう。
0013名前は開発中のものです。
04/07/07 06:30ID:tnHXX92cそんなんツマンネ
ざっと見た感じ17歩くらいか
難易度設定できたら
少しはマシになるかもな
n=ユーザー設定項目クリアに必要な最低歩数;
while(n歩以下で解けたら){やり直し;}
で50歩くらいを設定しとけば
少しは手応えのある面になると思うが
0014名前は開発中のものです。
04/07/07 22:31ID:+MuW8iQV###################
# $ .#
# $ .#
# $ .#
# $ .#
# $ .#
# $ .#
# $ @ .#
# #
###################
0015名前は開発中のものです。
04/07/07 23:43ID:u5TlYlHT手数 * (1 / 正当数) = 難易度
とかの方が良くないか?>>14みたいに手数は多いが同時に正当数がいっぱいある奴は当然難易度は下がると。
0016名前は開発中のものです。
04/07/08 10:03ID:NzVDRXHrさらに荷物の数も要素に加えて難易度を算出すれば
精度が高まる気がする。
0017名前は開発中のものです。
04/07/08 17:17ID:CnPgVFe8http://www.ic-net.or.jp/home/takaken/so/soko/index.html
参考にどうぞ
001812,14
04/07/08 17:49ID:zY8B1Wlv########## ########## ########## ##########
# #### ### ### ########## ##########
## ## # ### ## # ###### # ##########
## # ### # # ## # ##########
## ## ### ##### # # ### ##
### ## ### # ### # # # ### #
### # ### ## # # # ### #
### # ### # # # ###### #
## # ### ### ## # ##########
########## ########## ########## ##########
001912,14
04/07/08 17:50ID:zY8B1Wlv########## ########## ########## ##########
####### ## ## ### #### # # # # # #
### # # ### ### #### # # # # #
## # ### # #### # # #
### # # # ### # ## #
### ## # # #### # # #
### ## # # ### # # ### #
### ### # # ## ## # ### #
#### #### # # # ## #### #### #
########## ########## ########## ##########
002012,14
04/07/08 17:58ID:zY8B1Wlv0021名前は開発中のものです。
04/07/09 00:11ID:4wETax93「倉庫番」の問題の自動作成
http://www.ipsj.or.jp/members/Journal/Jpn/3903/article007.html
ぐぐったらこんなん見つかった
でも会員じゃないと内容読めないみたい
0022概要
04/07/09 03:13ID:sexttaP2普通にプログラミングの能力のある人なら
考え付きそうな事をやってるだけで。
作ってる問題は 盤は8x8, 荷物は3つ。
リンク先にあるように
・問題作成→解を求める→面白さを評価
というステップを繰り返して、詰まらない問題は自動判定して捨てて、
面白い問題がいくつ出来るか、とかやってる。
実験結果の例
作成失敗 2
解なし 153
解ありだかつまらないと自動判定されて捨てられた 287
解ありでプログラムで捨てられなかった 58
合計 500
500回ループさせて残った問題が58。そのうち筆者が実際に解いて
面白いと感じられた問題が13だったと。
0023セックスタップ2
04/07/09 03:24ID:sexttaP2・初期状態は以下のようにする。
########
########
## ##
## ## ##
## ##
########
########
########
########
これに下の3つのパーツをランダムに投下して部屋を作る。
口口 (3*2の空白パーツ)
口口
口口
口口 (2*2の空白パーツ)
口口
口口口 (3*3の空白パーツの中央に壁)
口#口
口口口
部屋のパーツを選ぶ事でつまらない部屋が出来ないようにするらしい。
0024セックスタップ2
04/07/09 03:42ID:sexttaP2(まあ、ある程度考えれば考え付くようなパターン)
それをさけてゴールをランダムに配置。
また同様にある程度考えて荷物と人を配置。
面の作成はそれくらい。
次のステップで幅優先探索で最短の解を求める。
次の評価のステップだが、面白さの評価基準は
(1)手数、(2)荷物の持ち替え回数、(3)遠回り数、(4)部屋の広さ(マスの数)
を基準に判定している。
遠回りというのは、みかけの荷物とゴールの最短距離と
実際に荷物が移動した距離の差、らしい。
(距離は“マンハッタン距離”とか書いてある。)
持ち替えとは今持っている荷物を離し別の荷物を押す事を示す。
荷物の持ち替えが 多く必要な程、面白いと判断されるから、との事。
判定の具体的な数値は
・遠回りせずに解ける
・荷物の持ち替えが3回以下
・解が6手以内
の一つ以上あてはまったら、この問題を捨てる、との事。
考察に置いて、プログラムに実装されているかどうかに関わらず
以下のように述べている。
・荷物の持ち替え数のパラメータは難しさの評価に有効と言える。
・荷物の方向転換。面白い問題では同じ荷物を押し続ける時でも
こまめに方向転換する必要がある傾向が認められる。
・手数。多い方がよいが、単に荷物とゴールの距離が遠いだけの事もある。
・遠回り。発見しやすい遠回りもあるので面白さに直結しない場合もある。
0025セックスタップ2
04/07/09 04:06ID:sexttaP2・ゴールが邪魔。ゴールが隅の邪魔にならない所にあるのは簡単になりやすい。
面白い問題の多くはゴールを荷物が何度も通過する。
・荷物の軌跡が複雑。荷物の軌跡が他の荷物の軌跡と交差したり
絡み合ってると面白い事が多い。しかし軌跡が重ならなくても
面白いものはある。
実際に作成された問題の例
(#:壁, ・:ゴール, $:荷物, ■ゴール+荷物, 人:人)
######## ########
### ### ########
## ## ## ・ ##
# ・ ・$## ##人# ■##
# $人 # ## $ ##
####■# # ## #■ ##
#### # ## ##
######## ########
######## ########
######## ########
## ## ## ・ ■##
##・##$ # ## # #
# ・・$ # ##人$■ #
# #$ # ### ##
# 人 ### ### ##
######## ########
(以上)
0026セックスタップ2
04/07/09 04:27ID:sexttaP2問題を作ればいいかなと思っていたんだけど
著者らはそういう事はしていないですね。
0027名前は開発中のものです。
04/07/09 10:34ID:mw4kM0V81:壁とゴールと人の最終形をランダムで作成。
2:ランダムに一つずつ荷物を引く
3:その形の最短手順を調べる
4:一番手数の多い面を初期配置とする
ってことか。
0028名前は開発中のものです。
04/07/09 10:43ID:mw4kM0V8だとしたら・・・
2:荷物を移動させた全パターンを調べる
3:一番最短の手数の多い面を初期配置とする
のほうが速いかもな。
なんか結局上のと似たようなものになってしまった。
0029名前は開発中のものです。
04/07/10 00:11ID:AGnyOuyl読むに至らない論文は内容に依らず勝ちはない。
0030セックスタップ2
04/07/10 00:19ID:ErOnlOXh0031セックスタップ2
04/07/10 00:20ID:ErOnlOXh0032名前は開発中のものです。
04/07/10 00:23ID:AGnyOuyl0033セックスタップ2
04/07/10 00:26ID:ErOnlOXh0034名無しさん@そうだ選挙に行こう
04/07/11 09:25ID:YxVEQ1eT0035名前は開発中のものです。
04/07/13 07:26ID:gifgN+Yd地球にやさしいアルゴリズム第8回
倉庫番を解くアルゴリズム
http://software.nikkeibp.co.jp/software/download/down04c.html
http://software.nikkeibp.co.jp/software/download/0406/algo0406.zip
さくら美緒、takaken、DeepGreen、疋田輝雄、
どのSolverが最も賢い?
0036名前は開発中のものです。
04/07/27 12:57ID:H2IKfXqP0037名前は開発中のものです。
04/07/28 13:16ID:awaEZIr2初期の荷物の状態を1として、そこから移行できる全状態を2以降の番号をつけて生成し、記憶。
1番からどの番号へ移行できるかも記憶しておく。
続いて、2番の状態から移行できる全状態を生成し、記憶。もちろん重複チェックもさせるので
前の番号へ移行できるような状態も作られる。
次々に生成していって、0番への移行ができるような盤面が現れたら解決方法あり。
1番からの深度チェックをしていって、荷物を何手動かしたかの最短を出す。
ただし確実な最短を出すためには全手数のチェックが必要。
解く方のやり方を想定してみたが、こんな感じなのか?
0038名前は開発中のものです。
04/07/28 23:27ID:OaJflA5G>ただし確実な最短を出すためには全手数のチェックが必要。
幅優先探索でやれば最初に見つかったのが最短手順。
「幅優先探索」で検索してみて。
>もちろん重複チェックもさせるので前の番号へ移行できるような状態も作られる。
? 前と同じ状態に戻る場合は発生させなくてよいと思う。
0039名前は開発中のものです。
04/07/29 01:54ID:EpgRoJimこれは探索の方向を変えたところでどうしようもない。
人間が解いて面白いような規模の問題を解くのは無理っぽい。
で、どうするかというとA*とか分枝限定法とかの下界値を利用して枝刈りするような手法が使われる。
もっともそっちの世界でも倉庫番は難しい問題として知られてるから、良い方法が作れればそれだけで論文書けるかも。
まあ、そこまでいかなくても単純なA*くらいは入れた方が良いと思う。
経路探索にも使える(というかそっちの方が多い)から知ってて損はないし。
004037
04/07/29 05:40ID:4YxMTCfg調べてみたら、双方向探索とか行き詰まりのつぶしとか色々あるようだし。
0041名前は開発中のものです。
04/08/01 03:05ID:Q2G2XU2Zttp://www.ne.jp/asahi/ai/yoshio/sokoban/auto52/index.html
■ このスレッドは過去ログ倉庫に格納されています