]> www.fi.muni.cz Git - aoc.git/blobdiff - 2018/13.pl
Year 2018
[aoc.git] / 2018 / 13.pl
diff --git a/2018/13.pl b/2018/13.pl
new file mode 100755 (executable)
index 0000000..5e1e161
--- /dev/null
@@ -0,0 +1,27 @@
+#!/usr/bin/perl -w
+
+use v5.30;
+use strict;
+
+my %prereqs;
+my %steps;
+while (<>) {
+       my ($src, $dst) = /(\w) must be.* (\w) can/;
+       $prereqs{$dst}->{$src} = 1;
+       $steps{$src} = 1;
+       $steps{$dst} = 1;
+}
+
+my $res = '';
+while (%steps) {
+       my @avail = sort grep { keys %{ $prereqs{$_} } == 0 } keys %steps;
+       my $finished = $avail[0];
+       $res .= $finished;
+       delete $steps{$finished};
+       for my $p (keys %prereqs) {
+               delete $prereqs{$p}->{$finished};
+       }
+}
+
+say $res;
+