adventofcode/2017/22/2.pl

47 lines
832 B
Perl

use 5.20.0;
use Math::Vector::Real;
use experimental qw/ postderef signatures /;
my @d = map { V(@$_) } [ -1,0], [0,1],[1,0],[0,-1];
my $di = 0;
my %grid;
my ($i,$j) = (0,0);
for my $r( <> ) {
$j = 0;
chomp $r;
for ( split '', $r ) {
$grid{$i}{$j++} = $_ eq '#' ? 2 : 0;
}
$i++;
}
use DDP;
p %grid;
my $coord = V( ( 12 ) x 2);
my @id = ( 3, 0, 1, 2 );
my $sum;
for(1..10000000){
my $infected = $grid{$coord->[0]}{$coord->[1]};
$di += $id[$infected];
$di %= 4;
$grid{$coord->[0]}{$coord->[1]} = ($infected +1)%4;
$sum++ if $infected == 1;
$coord += $d[$di];
# my %p = ( 0 => '.', 1 => 'W', 2 => 'I', 3 => 'F' );
# for my $x ( -3..3 ) {
# for my $y ( -3..3 ) {
# print $p{ $grid{$x}{$y} };
# }
# print "\n";
# }
}
say $sum;