aoc2015

Advent of Code 2015 solutions in Perl.
git clone git://git.samirparikh.com/aoc2015
Log | Files | Refs | README

commit 1567c9d94981d17a8d1f9fc659270fdfe4cc45d2
parent a276c90085152cc5169f8625ea97bf5ebb29c832
Author: Samir Parikh <noreply@samirparikh.com>
Date:   Sun,  6 Nov 2022 13:22:09 +0000

solve part 1 of day14

Diffstat:
Mday14/day14.pl | 31+++++++++++++++++++++++++++++--
Aday14/input | 9+++++++++
2 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/day14/day14.pl b/day14/day14.pl @@ -4,13 +4,16 @@ use strict; use warnings; use v5.32; -use lib '.'; +#use lib '.'; #use Day13 qw( calc_tot_hap_chg ); +use List::Util qw( max ); use Data::Dumper; @ARGV = "input" unless @ARGV; chomp( my $input = do { local $/; <> } ); +my $TIME = 2503; my %reindeer; +my @distances; foreach ( split /\n/, $input ) { my ( $reindeer, $speed, $fly_duration, $rest_duration ) = @@ -22,5 +25,29 @@ foreach ( split /\n/, $input ) { } say Dumper \%reindeer; -#say "part 1: "; + +foreach ( keys %reindeer ) { +# say ${$reindeer{ $_ }}{speed}; +# say $reindeer{ $_ }->{speed}; +# say $reindeer{ $_ }{ speed }; + my $duration = $reindeer{ $_ }{ fly_duration } + + $reindeer{ $_ }{ rest_duration }; + my $distance; + say $duration; + my ( $cycles, $remainder ) = ( int $TIME / $duration, $TIME % $duration ); + say "$cycles\t$remainder"; + if ( $remainder >= $reindeer{ $_ }{ fly_duration } ) { + $cycles++; + $distance = $cycles * $reindeer{ $_ }{ fly_duration } * + $reindeer{ $_ }{ speed }; + } else { + $distance = $cycles * $reindeer{ $_ }{ fly_duration } + + ( $remainder * $reindeer{ $_ }{ speed } ); + } + say "$_ traveled $distance km after $TIME seconds"; + push @distances => $distance; +} + + +say "part 1: ", max @distances; #say "part 2: "; diff --git a/day14/input b/day14/input @@ -0,0 +1,9 @@ +Dancer can fly 27 km/s for 5 seconds, but then must rest for 132 seconds. +Cupid can fly 22 km/s for 2 seconds, but then must rest for 41 seconds. +Rudolph can fly 11 km/s for 5 seconds, but then must rest for 48 seconds. +Donner can fly 28 km/s for 5 seconds, but then must rest for 134 seconds. +Dasher can fly 4 km/s for 16 seconds, but then must rest for 55 seconds. +Blitzen can fly 14 km/s for 3 seconds, but then must rest for 38 seconds. +Prancer can fly 3 km/s for 21 seconds, but then must rest for 40 seconds. +Comet can fly 18 km/s for 6 seconds, but then must rest for 103 seconds. +Vixen can fly 18 km/s for 5 seconds, but then must rest for 84 seconds.