From: Jan "Yenya" Kasprzak Date: Tue, 21 Dec 2021 06:19:47 +0000 (+0100) Subject: Day 20: nothing to win, everything to lose X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=aoc2021.git;a=commitdiff_plain;h=ccdd559ae858fd11c6f5adc2b33e738fab2fefef Day 20: nothing to win, everything to lose --- diff --git a/39.pl b/39.pl new file mode 100755 index 0000000..e4d6c01 --- /dev/null +++ b/39.pl @@ -0,0 +1,76 @@ +#!/usr/bin/perl -w + +use v5.16; + +my @m = split //, <>; +scalar <>; + +$; = ','; +my @image = map { chomp; [ split // ] } <>; + +my $odd = 1; +sub enhance { + my $img = shift; + my $ymax = @$img; + my $xmax = @{ $img->[0] }; + + say "odd=$odd, m0=$m[0]"; + + my @rv; + for my $y (0 .. $ymax+3) { + for my $x (0 .. $xmax+3) { + my $idx = 0; + for my $dy (-2 .. 0) { + my $y2 = $y+$dy; + for my $dx (-2 .. 0) { + my $x2 = $x+$dx; + # say "$x,$y + $dx,$dy = $x2, $y2"; + $idx <<= 1; + if ($y2 >= 0 && $y2 < $ymax + && $x2 >= 0 && $x2 < $xmax) { + $idx++ if $img->[$y2][$x2] eq '#'; + } else { + $idx++ if !$odd && ($m[0] eq '#'); + } + } + } + # say "$x,$y => $idx => $m[$idx]"; + $rv[$y][$x] = $m[$idx]; + } + } + + $odd = !$odd; + + return @rv; +} + +sub imgdump { + my $img = shift; + my $ymax = @$img; + my $xmax = @{ $img->[0] }; + + my $sum; + + say "$xmax x $ymax"; + for my $y (0 .. $ymax-1) { + for my $x (0 .. $xmax-1) { + print $img->[$y][$x]; + $sum++ if $img->[$y][$x] eq '#'; + } + print "\n"; + } + say "sum=$sum"; +} + +for (1 .. 50) { + imgdump(\@image); + @image = enhance(\@image); +} +imgdump(\@image); +my $sum = 0; +for my $row (@image) { + for my $pixel (@$row) { + $sum++ if $pixel eq '#'; + } +} +say "pixels = $sum";