]> www.fi.muni.cz Git - aoc.git/blob - 2023/27.pl
Day 14: ugly but fast written 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 my $retry = 1;
11 while ($retry) {
12         $retry = 0;
13 for my $y (1 .. $ymax) {
14         for my $x (0 .. $xmax) {
15                 if ($map[$y][$x] eq 'O' && $map[$y-1][$x] eq '.') {
16                         $map[$y-1][$x] = 'O';
17                         $map[$y][$x] = '.';
18                         $retry = 1;
19                 }
20         }
21 }
22 }
23         
24 say join('', @$_) for @map;
25
26 for my $y (0 .. $ymax) {
27         for my $x (0 .. $xmax) {
28                 $sum += $ymax + 1 - $y if $map[$y][$x] eq 'O';
29         }
30 }
31 say $sum;