or download this
@m=((16,(15)x15)x10,(16)x16);{$m[$c]|=16;(@a=grep!($m[$c+@$_[$l=0]]&(1
+6|$s*@$_[2])),[-1,1,2]
,[1,2,1],[-16,4,8],[16,8,4])?${($i,$j,$k)=@{$a[rand@a]},push@p,$c;$m[$
+c]&=~$j;$m[$c+=$i]&=~
$k;map{$_==16?$p:$_&=15}@m,$c=$s=1if++$v==150}:($c=pop@p) ;select$q,$q
+,$q,(print"\ec",(_)x30
,map{$l++%16?($l-1==$c?o:$_&8?_:$").($_&2?"|":_):"$/|"}@m[0..160])/9if
+$s;$c>158&$s?0:redo}