]> www.fi.muni.cz Git - aoc.git/commitdiff
Day 8: dummy solution with off-by-one errors
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Thu, 8 Dec 2022 05:23:10 +0000 (06:23 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Thu, 8 Dec 2022 05:23:10 +0000 (06:23 +0100)
2022/15.pl [new file with mode: 0755]
2022/16.pl [new file with mode: 0755]

diff --git a/2022/15.pl b/2022/15.pl
new file mode 100755 (executable)
index 0000000..f8c3ff1
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/perl -w
+
+use v5.36;
+use strict;
+use experimental 'multidimensional';
+
+my @m = map { chomp; [ split // ] } <>;
+my $xmax = @{ $m[0] };
+my $ymax = @m;
+
+my $count;
+for my $x (1 .. $xmax-2) {
+for my $y (1 .. $ymax-2) {
+       my $h = $m[$y][$x];
+       say $h;
+       my $visible = 1;
+       for my $dx (0 .. $x-1) {
+               $visible = 0 if $m[$y][$dx] >= $h;
+       }
+       if ($visible) {
+               $count++; next;
+       }
+       $visible = 1;
+       say " $visible";
+       for my $dx ($x+1 .. $xmax-1) {
+               $visible = 0 if $m[$y][$dx] >= $h;
+       }
+       if ($visible) {
+               $count++; next;
+       }
+       $visible = 1;
+       say " $visible";
+       for my $dy (0 .. $y-1) {
+               $visible = 0 if $m[$dy][$x] >= $h;
+       }
+       if ($visible) {
+               $count++; next;
+       }
+       $visible = 1;
+       say " $visible";
+       for my $dy ($y+1 .. $ymax-1) {
+               $visible = 0 if $m[$dy][$x] >= $h;
+       }
+       if ($visible) {
+               $count++; next;
+       }
+       $count++ if $visible;
+} }
+
+say $count + 2* $xmax + 2*$ymax-4;
diff --git a/2022/16.pl b/2022/16.pl
new file mode 100755 (executable)
index 0000000..c83a77f
--- /dev/null
@@ -0,0 +1,49 @@
+#!/usr/bin/perl -w
+
+use v5.36;
+use strict;
+use experimental 'multidimensional';
+
+my @m = map { chomp; [ split // ] } <>;
+my $xmax = @{ $m[0] };
+my $ymax = @m;
+
+my $max = 0;
+for my $y (1 .. $ymax-2) {
+for my $x (1 .. $xmax-2) {
+       my $h = $m[$y][$x];
+       my $mul = 1;
+       my $count = 0;
+       for my $dx (reverse (0 .. $x-1)) {
+               $count++;
+               last if $m[$y][$dx] >= $h;
+       }
+       $mul *= $count;
+
+       $count = 0;
+       for my $dx ($x+1 .. $xmax-1) {
+               $count++;
+               last if $m[$y][$dx] >= $h;
+       }
+       $mul *= $count;
+
+       $count = 0;
+       for my $dy (reverse 0 .. $y-1) {
+               $count++;
+               last if $m[$dy][$x] >= $h;
+       }
+       $mul *= $count;
+
+       $count = 0;
+       for my $dy ($y+1 .. $ymax-1) {
+               $count++;
+               last if $m[$dy][$x] >= $h;
+       }
+       $mul *= $count;
+       # say "$x $y $h $mul";
+
+       $max = $mul if $max < $mul;
+
+} }
+
+say $max;