]> www.fi.muni.cz Git - aoc.git/blobdiff - 2023/27.pl
Day 14: ugly but fast written solution
[aoc.git] / 2023 / 27.pl
diff --git a/2023/27.pl b/2023/27.pl
new file mode 100755 (executable)
index 0000000..ab6cbcd
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/bin/perl -w
+
+use v5.38;
+
+my @map = map { chomp; [ split // ] } <>;
+my $xmax = $#{ $map[0] };
+my $ymax = $#map;
+
+my $sum;
+my $retry = 1;
+while ($retry) {
+       $retry = 0;
+for my $y (1 .. $ymax) {
+       for my $x (0 .. $xmax) {
+               if ($map[$y][$x] eq 'O' && $map[$y-1][$x] eq '.') {
+                       $map[$y-1][$x] = 'O';
+                       $map[$y][$x] = '.';
+                       $retry = 1;
+               }
+       }
+}
+}
+       
+say join('', @$_) for @map;
+
+for my $y (0 .. $ymax) {
+       for my $x (0 .. $xmax) {
+               $sum += $ymax + 1 - $y if $map[$y][$x] eq 'O';
+       }
+}
+say $sum;