パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

11-puzzleを解くプログラム

2021-01-12 | プログラムをマスター計画2020

15パズルの少し小さいサイズの11パズルを解くプログラム

CodinGameの11-puzzle

一年前に16%しか解けなかった難問にリベンジをしようとして66%で断念

 

これはきっと解法を知らないと時間内には無理ではないだろうか?

一年前は位置があった所を1点換算の評価値でパスファインディング

 

今回は、各数値のズレを距離換算の評価値

またズレは都度計算せず差分だけを入れ替えるような形にする。

差分も2つの位置だけで辞書で引っ張れるようにあらかじめ設定。

最短で行こうとしているけど、本当に最短かは不明

 

全問解けるようにはなったけど、制限手数以内まではいかない。

たぶんちょっとした勘違いがみつからないのだろう

(差分計算でも基準を動かしてしまうよくある見つかりにくいミスに散々悩まされる)

 

どうしても解けないので、逆に最長になる局面を作成して、

ほこたてごっこをしてみました

 

11puzzle_hoko_and_tate.ipynb

 

バグを取るためにいれた表示、コメント化して残してみました。

 

プログラムって実際そんなに簡単に、うまくはいかないです。

 

 


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。