Sokoban: Difference between revisions

Line 1,622:
 
for my $d (keys %dirs) {
splice @loc, 1;
substr $tiles, 1, 99, '';
 
$ push @loc[1+$_] =, $loc[$_-1] + $dirs{$d} for 0,1;
substr $tiles, 1, 99,.= substr $level, $loc[-1], 1;
 
if( my $walk = $walk{ $tiles } ) {
my $new = $level;
substr $new, $loc[$_], 1, $walk->[$_] for 0, .. 1;
 
next if $seen{$new}++;
Line 1,637 ⟶ 1,639:
next if $wall{$tiles};
 
substrpush $tiles, 2, 99, substr $level@loc, $loc[2-1], 1+ $dirs{$d};
$tiles .= substr $level, $loc[-1], 1;
 
my $push = $push{ $tiles } or next;
 
my $new = $level;
substr $new, $loc[$_], 1, $push->[$_] for( 0 .. 2 );
 
next if $seen{$new}++;