]> www.fi.muni.cz Git - aoc.git/blob - 2023/27.pl
Day 14: more polished solution
[aoc.git] / 2023 / 27.pl
1 #!/usr/bin/perl -w
2
3 use v5.38;
4
5 my @map = map { chomp; [ split // ] } <>;
6 my $xmax = $#{ $map[0] };
7 my $ymax = $#map;
8
9 my $sum;
10 for my $y (0 .. $ymax) {
11         for my $x (0 .. $xmax) {
12                 next if $map[$y][$x] ne 'O';
13                 my $y1 = $y;
14                 $y1-- while $y1 && $map[$y1-1][$x] eq '.';
15                 if ($y1 != $y) {
16                         $map[$y1][$x] = 'O';
17                         $map[$y][$x] = '.';
18                 }
19                 $sum += $ymax + 1 - $y1;
20         }
21 }
22
23 say join('', @$_) for @map;
24 say $sum;