]> www.fi.muni.cz Git - aoc.git/blob - 2018/13.pl
Day 25: examining the input
[aoc.git] / 2018 / 13.pl
1 #!/usr/bin/perl -w
2
3 use v5.30;
4 use strict;
5
6 my %prereqs;
7 my %steps;
8 while (<>) {
9         my ($src, $dst) = /(\w) must be.* (\w) can/;
10         $prereqs{$dst}->{$src} = 1;
11         $steps{$src} = 1;
12         $steps{$dst} = 1;
13 }
14
15 my $res = '';
16 while (%steps) {
17         my @avail = sort grep { keys %{ $prereqs{$_} } == 0 } keys %steps;
18         my $finished = $avail[0];
19         $res .= $finished;
20         delete $steps{$finished};
21         for my $p (keys %prereqs) {
22                 delete $prereqs{$p}->{$finished};
23         }
24 }
25
26 say $res;
27