diff --git a/2016/18/1.pl b/2016/18/1.pl new file mode 100644 index 0000000..976673f --- /dev/null +++ b/2016/18/1.pl @@ -0,0 +1,34 @@ +use 5.20.0; + +use experimental qw/ postderef /; + +my @levels = ( + map { chomp; [ + map { $_ eq '^' } split '' ] } <> +); + +use DDP; + +p @levels; +my $sum = 0; +use List::AllUtils qw/ sum /; + +for ( 1..400000-1 ) { + my @previous = ( 0, $levels[-1]->@* ); + my @new; + while( @previous >= 2 ) { + my( $left, $mid, $right ) = @previous; + push @new, + ( $left && $mid && ! $right ) + || ( !$left && $mid && $right ) + || ( $left && !$mid && !$right ) + || ( !$left && !$mid && $right ); + shift @previous; + } + push @levels, \@new; + + $sum += sum map { !$_ } map { @$_ } shift @levels; +} + + +say sum $sum, map { !$_ } map { @$_ } @levels; diff --git a/2016/18/input.txt b/2016/18/input.txt new file mode 100644 index 0000000..d0f699e --- /dev/null +++ b/2016/18/input.txt @@ -0,0 +1 @@ +^^.^..^.....^..^..^^...^^.^....^^^.^.^^....^.^^^...^^^^.^^^^.^..^^^^.^^.^.^.^.^.^^...^^..^^^..^.^^^^