]> www.fi.muni.cz Git - aoc.git/commitdiff
26.pl - simpler solution with text-based keys "$x,$y"
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Mon, 13 Dec 2021 11:51:19 +0000 (12:51 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Mon, 13 Dec 2021 11:51:19 +0000 (12:51 +0100)
26.pl

diff --git a/26.pl b/26.pl
index c789704db173f16096a2baced38a458901b23a28..adfba3822cd14bdef39cd4e9233a0150c646b3e1 100755 (executable)
--- a/26.pl
+++ b/26.pl
@@ -3,37 +3,34 @@
 use v5.16;
 
 my %dots;
-
+$; = ',';
 while (<>) {
        chomp;
-       my ($x, $y) = split /,/;
-       last if !defined $y;
-       $dots{$x}{$y}++;
+       last if !length;
+       $dots{$_}++;
 }
 
-my ($maxx, $maxy);
+my %max;
 while (<>) {
        chomp;
        my ($axis, $val) = /fold along (.)=(\d+)/;
+       $max{$axis} = $val;
 
-       $maxx = $val if $axis eq 'x' && (!$maxx || $maxx > $val);
-       $maxy = $val if $axis eq 'y' && (!$maxy || $maxy > $val);
-
-       for my $x (keys %dots) {
-       for my $y (keys %{$dots{$x}}) {
+       for (keys %dots) {
+               my ($x, $y) = split /,/;
                if ($axis eq 'x' && $x > $val) {
-                       $dots{2*$val - $x}{$y}++;
-                       delete $dots{$x}{$y};
+                       $dots{2*$val - $x,$y}++;
+                       delete $dots{$x,$y};
                } elsif ($axis eq 'y' && $y > $val) {
-                       $dots{$x}{2*$val - $y}++;
-                       delete $dots{$x}{$y};
+                       $dots{$x,2*$val - $y}++;
+                       delete $dots{$x,$y};
                }
-       } }
+       }
 }
 
-for my $y (0 .. $maxy) {
-       for my $x (0 .. 40) {
-               print $dots{$x}{$y} ? '#' : ' ';
+for my $y (0 .. $max{y}) {
+       for my $x (0 .. $max{x}) {
+               print $dots{$x,$y} ? '#' : ' ';
        }
        print "\n";
 }