迷路

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

コメントする

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


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

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