読者です 読者をやめる 読者になる 読者になる

迷路

人材獲得作戦・4 試験問題ほか: 人生を書き換える者すらいた。
3時間きっちり考えた結果
maze.arc

(= m (filechars "~/gists/maze_arc/maze.txt") ; or (drain:readc) 
   w (+ 1 (pos #\newline m))
   a (n-of len.m nil)
   (a:pos #\S m) '(0)
   d 0
   route)

(until route
  (on p a
    (if (is car.p d)
      (on n (map [+ _ index] `(1 -1 ,w ,-.w))
	  (case m.n
	    #\G (= route cdr.p)
	    #\  (or= a.n `(,(+ d 1) ,n ,@cdr.p))))))
  (++ d))

(map [= m._ #\$] route)
pr.m

適当に畳んで

(loop(= m(drain:readb)w(+(pos 10 m)1)a(n-of len.m())(a:pos 83 m)'(0)d 0 r)no.r(++ d)
(on p a(if(is car.p d)(on n(map[+ _ index]`(1 -1,w,-.w))(case m.n 71(= r cdr.p)32(or= a.n `(,(+ d 1),n,@cdr.p)))))))
(map[= m._ 36]r)(map writeb m)

これで230bくらいらしい。

http://shinh.skr.jp/m/?date=20100113#p05
読めないけど凄いなぁ…