迷路
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のスレには、回答が載ってたようですが、まだ見ません。