April 16, 2003

clever perl

from twoshortplanks.com


@m=(_,"|")x345;{my@a;!$v{$_}&$_>0&$_<346?push@a,$_:0for($p-1)%23?$p-1:0,

$p%23?$p+1:0,$p+23,$p-23;$p=pop@v,redo if!@a;(($r=$a[@a*rand])-$p)**2>1?

$m[$r>$p?2*$p-2:2*$r-2]=$":($m[$r>$p?2*$p-1:$r*2-1]=_);push@v,$p;$v{$p}=

$p=$r;keys%v<345&&redo}print$l?"":"\ec"."_"x47,$l++%46?"":"$/|",$_ for@m

Maze Solver


$|=print"\ec",@m=map{s#\ec##;split//}<>;{$v{$p=$r||50}=1;my@a;!$v{$_}&$_

>0&$_<767?push@a,$_:1for$m[$p-2]eq _?$p-2:0,$m[$p]eq _?$p+2:0,$m[$p-1]ne

_?$p+48:0,$m[$p-49]ne _?$p-48:0;select$q,$q,$q,.1;printf"\e[%d;%dH",1+$p

/48,$p%48;$p>765?exit:1;$r=!@a?pop@v:$a[@a*rand];push@v,$p if@a;redo}

How to use

Copy the generator into a file called maze.pl and the solver into solve.pl (or something!), Then


perl maze.pl | perl solve.pl

Posted by jamespo at April 16, 2003 03:44 PM
Comments