]> www.fi.muni.cz Git - aoc.git/commitdiff
Day 4: not bad, but too slow
authorJan "Yenya" Kasprzak <kas@fi.muni.cz>
Mon, 4 Dec 2023 07:31:26 +0000 (08:31 +0100)
committerJan "Yenya" Kasprzak <kas@fi.muni.cz>
Mon, 4 Dec 2023 07:31:26 +0000 (08:31 +0100)
2023/07.pl [new file with mode: 0755]
2023/08.pl [new file with mode: 0755]

diff --git a/2023/07.pl b/2023/07.pl
new file mode 100755 (executable)
index 0000000..eb32805
--- /dev/null
@@ -0,0 +1,12 @@
+#!/usr/bin/perl -w
+
+use v5.38;
+
+my $sum;
+while (<>) {
+       my ($have, $win) = /: (.*) \| (.*)/;
+       my %is_win = map { $_ => 1 } ($win =~ /(\d+)/g);
+       my $count = grep { $is_win{$_} } ($have =~ /(\d+)/g);
+       $sum += 1 << ($count-1) if $count;
+}
+say $sum;
diff --git a/2023/08.pl b/2023/08.pl
new file mode 100755 (executable)
index 0000000..3c558e5
--- /dev/null
@@ -0,0 +1,22 @@
+#!/usr/bin/perl -w
+
+use v5.38;
+
+my $sum;
+my @scores;
+while (<>) {
+       my ($have, $win) = /: (.*) \| (.*)/;
+       my %is_win = map { $_ => 1 } ($win =~ /(\d+)/g);
+       push @scores, scalar grep { $is_win{$_} } ($have =~ /(\d+)/g);
+}
+
+my @cards = (1) x @scores;
+while (@scores) {
+       my $n = shift @scores;
+       my $c = shift @cards;
+       $sum += $c;
+       next if !$n;
+       $cards[$_] += $c for 0 .. $n-1;
+}
+       
+say $sum;