13 return $maze{$x,$y} if exists $maze{$x,$y};
15 my $sum = $in + $x*$x + 3*$x + 2*$x*$y + $y + $y*$y;
16 my $bin = sprintf("%b", $sum);
17 say "$x $y => $sum => $bin";
18 my $count = () = $bin =~ /1/g;
19 return $maze{$x,$y} = $count & 1;
26 my %seen = ( "1,1" => 1 );
27 my @paths = ( [ 1, 1, 0 ] );
30 my ($x, $y, $steps) = @$p;
31 if ($x == 31 && $y == 39) {
35 for my $d ([0, 1], [0, -1], [1, 0], [-1, 0]) {
36 my $x1 = $x + $d->[0];
37 my $y1 = $y + $d->[1];
38 next if $x1 < 0 || $y1 < 0;
39 next if $seen{$x1,$y1};
40 next if is_wall($x1, $y1);
42 push @paths, [$x1, $y1, $steps+1];