迷路

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

コメントする

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


The reCAPTCHA verification period has expired. Please reload the page.

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