aoc2022

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

commit 423ad4564eca1a9d5460185723ce1816e983a040
parent 9174d8656036482d73d9c50b763400e325b6743a
Author: Samir Parikh <noreply@samirparikh.com>
Date:   Wed, 21 Dec 2022 17:17:13 +0000

solve part 2 of day02

Diffstat:
Mday02/day02.pl | 19++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)

diff --git a/day02/day02.pl b/day02/day02.pl @@ -23,6 +23,12 @@ my %translate = ( Z => 'scissors', ); +my %translate2 = ( + X => 'lost', + Y => 'draw', + Z => 'won', + ); + my %score = ( rock => 1, paper => 2, @@ -34,16 +40,27 @@ my %score = ( my @rounds = split /\n/, $input; my $part1_score = 0; +my $part2_score = 0; foreach my $round ( @rounds ) { my ( $opponent, $me ) = split /\s/, $round; - #say "opponent = $translate{$opponent} and me = $translate{$me}"; $part1_score += $score{ $translate{ $me } }; if ( $translate{ $me } eq $translate{ $opponent } ) { $part1_score += $score{ draw }; } elsif ( $defeats{ $translate{ $me } } eq $translate{ $opponent } ) { $part1_score += $score{ won }; } + + $part2_score += $score{ $translate2{ $me } }; + if ( $me eq 'X' ) { # must lose + $part2_score += $score{ $defeats{ $translate{ $opponent } } }; + } elsif ( $me eq 'Y' ) { # draw + $part2_score += $score{ $translate{ $opponent } }; + } else { # win + my @matching_keys = grep { $defeats{ $_ } eq $translate{ $opponent} } keys %defeats; + $part2_score += $score{ $matching_keys[0] }; + } } say "part 1: ", $part1_score; +say "part 2: ", $part2_score;