迷路3

ibazaさんの回答 id:ibaza:20070615:1181915322

ibazaさんの回答を見て、スタート地点とゴール地点探さないとダメなことに気付きましたorz.

スタートとゴールを決め打ちじゃ、サイズを指定してる意味ないですよね。

;スタート地点を求めるFunction(defun start-point (m)(let ((i 0))(loop(if (zerop (aref (maze-data m) 0 i))(return (make-point :x i :y 0)))(incf i))));ゴール地点を求めるFunction(defun goal-point (m)(let ((i 0))(loop(if (zerop (aref (maze-data m) (1- (maze-size m)) i))(return (make-point :x i :y (1- (maze-size m)))))(incf i))));問題 d. ファイル名を引数にとり、迷路を解いて表示する。(defun solv-maze (file)(let ((m (load-maze file)))(output-answer m(get-routes `(,(start-point m)) m (goal-point m) nil))(format t "Solved!~%")))

デカい迷路を試してみました。迷路を自分で作るのは気が遠くなる話なので、どっかから迷路を取ってこようとしました。ゲームのダンジョンのデータとかを置換すればいけると考えたんですが、その前に下のサイトを発見。

No001 迷路作成プログラムの製作

ここのプログラムで、99 x 99の迷路を作って入力に使いました。


出力結果はすごいことになりました。上の画像です。たぶんつぶれて訳わかんないと思いますが。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください