迷路
2007/06/13
2 chから問題を貰ってきました。学校の課題だそうです。
上記のようなデータが入ったテキストファイルを読み込んで、迷路を解くという問題です
ttp://pc11.2ch.net/test/read.cgi/tech/1181479267/19-21
※spamTBが多いのでリンクにしないようにしてみました。(20070614)
ファイルからデータを読むところと迷路を表示するところだけできたようです。
アルゴリズム系は弱いので、スタートからゴールまでの最短パスを取得する部分は、諦めモードです。明日以降にやる予定。(落第です)
clispで動かしながら書きました。
(defstruct maze size data)(defun load-maze (file)(with-open-file (stream file :direction :input)(let (num data str)(setq num (read stream))(loop(if (eq (setq str (read stream nil 'eof)) 'eof)(return (make-maze :size num :data (make-array (list num num):initial-contents (reverse data))))(push str data))))))(defun print-maze (maze)(let ((c 0))(loop(let (x y (conv #'(lambda (n) (case n (0 " ") (1 "■") (2 "*")))))(if (= c (* (maze-size maze) (maze-size maze))) (return))(multiple-value-setq (y x) (truncate c (maze-size maze)))(if (< x (maze-size maze))(format t "~a" (funcall conv (aref (maze-data maze) y x))))(if (= x (1- (maze-size maze)))(terpri))(incf c)))(terpri)))(print-maze (load-maze "m9.txt"))
2chのスレには、回答が載ってたようですが、まだ見ません。