From b957ac325434a1623becbe1850127821a94c38fe Mon Sep 17 00:00:00 2001 From: "Jan \"Yenya\" Kasprzak" Date: Sun, 13 Dec 2020 15:50:03 +0100 Subject: [PATCH] Day 13 --- 25.pl | 19 +++++++++++++++++++ 26.pl | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100755 25.pl create mode 100755 26.pl diff --git a/25.pl b/25.pl new file mode 100755 index 0000000..60b72ca --- /dev/null +++ b/25.pl @@ -0,0 +1,19 @@ +#!/usr/bin/perl -w + +use strict; + +my $timestamp = <>; +my @buses = grep { /\d+/ } split /,/, <>; + +my ($min_del, $min_bus); +for my $bus (@buses) { + my $delay = $bus*(1+int(($timestamp-1)/$bus))-$timestamp; + print "Bus $bus delay $delay\n"; + if (!defined $min_del || $min_del > $delay) { + $min_bus = $bus; + $min_del = $delay; + } +} + +print "$min_bus * $min_del = ", $min_bus * $min_del, "\n"; + diff --git a/26.pl b/26.pl new file mode 100755 index 0000000..90d07ae --- /dev/null +++ b/26.pl @@ -0,0 +1,34 @@ +#!/usr/bin/perl -w + +use strict; + +my $timestamp = <>; +my @buses = split /,/, <>; + +my $mins = 1; +my %bus_time; +my $first = shift @buses; +for my $bus (@buses) { + if ($bus =~ /\d/) { + $bus_time{$bus} = $mins % $bus; + print "Bus $bus at t+$mins ($bus_time{$bus})\n"; + } + $mins++; +} + +@buses = grep /\d/, @buses; + +my $t = $first; +my $add = $first; + +for my $bus (keys %bus_time) { + print "bus $bus at $bus_time{$bus}\n"; + while (1) { + print "t=$t, add=$add\n"; + last if ($t + $bus_time{$bus}) % $bus == 0; + $t += $add; + } + $add *= $bus; +} +print "t=$t\n"; + -- 2.43.0