]> www.fi.muni.cz Git - aoc.git/blob - 2015/27.pl
Day 25: examining the input
[aoc.git] / 2015 / 27.pl
1 #!/usr/bin/perl -w
2
3 use v5.16;
4 use strict;
5
6 my (%speed, %time, %resttime);
7 my %state;
8 my %dist;
9 while (<>) {
10         my ($name, $sp, $t, $r) = /(\w+) can fly (\d+) .* for (\d+) .*rest for (\d+) /;
11         $speed{$name} = $sp;
12         $time{$name} = $t;
13         $resttime{$name} = $r;
14         $state{$name} = $t;
15 };
16
17
18 my $time = 2503;
19
20 my $max;
21
22 for my $n (keys %speed) {
23         my $loops = int($time/($time{$n}+$resttime{$n}));
24         my $dist = $loops * $time{$n} * $speed{$n};
25         my $rest = $time - $loops*($time{$n}+$resttime{$n});
26         $rest = $time{$n} if $rest > $time{$n};
27         $dist += $speed{$n} * $rest;
28         say "$n $dist";
29         $max = $dist if !$max || $max < $dist;
30 }
31
32 say $max;
33