]> www.fi.muni.cz Git - aoc2021.git/blob - 26.pl
get.sh: print the destination file name while waiting
[aoc2021.git] / 26.pl
1 #!/usr/bin/perl -w
2
3 use v5.16;
4
5 my %dots;
6
7 while (<>) {
8         chomp;
9         my ($x, $y) = split /,/;
10         last if !defined $y;
11         $dots{$x}{$y}++;
12 }
13
14 my ($maxx, $maxy);
15 while (<>) {
16         chomp;
17         my ($axis, $val) = /fold along (.)=(\d+)/;
18
19         $maxx = $val if $axis eq 'x' && (!$maxx || $maxx > $val);
20         $maxy = $val if $axis eq 'y' && (!$maxy || $maxy > $val);
21
22         for my $x (keys %dots) {
23         for my $y (keys %{$dots{$x}}) {
24                 if ($axis eq 'x' && $x > $val) {
25                         $dots{2*$val - $x}{$y}++;
26                         delete $dots{$x}{$y};
27                 } elsif ($axis eq 'y' && $y > $val) {
28                         $dots{$x}{2*$val - $y}++;
29                         delete $dots{$x}{$y};
30                 }
31         } }
32 }
33
34 for my $y (0 .. $maxy) {
35         for my $x (0 .. 40) {
36                 print $dots{$x}{$y} ? '#' : ' ';
37         }
38         print "\n";
39 }
40