aoc2022

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

commit 9174d8656036482d73d9c50b763400e325b6743a
parent 3a8cebbbee04e96852d64f926a17fc437d525f99
Author: Samir Parikh <noreply@samirparikh.com>
Date:   Wed, 21 Dec 2022 16:51:42 +0000

solve part 1 of day02

Diffstat:
Aday02/day02.pl | 49+++++++++++++++++++++++++++++++++++++++++++++++++
Aday02/input | 2501+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aday02/test | 3+++
3 files changed, 2553 insertions(+), 0 deletions(-)

diff --git a/day02/day02.pl b/day02/day02.pl @@ -0,0 +1,49 @@ +#!/usr/local/bin/perl +# day 2022-02 + +use strict; +use warnings; +use v5.32; + +@ARGV = "input" unless @ARGV; +chomp( my $input = do { local $/; <> } ); + +my %defeats = ( + rock => 'scissors', + scissors => 'paper', + paper => 'rock', + ); + +my %translate = ( + A => 'rock', + B => 'paper', + C => 'scissors', + X => 'rock', + Y => 'paper', + Z => 'scissors', + ); + +my %score = ( + rock => 1, + paper => 2, + scissors => 3, + lost => 0, + draw => 3, + won => 6, + ); + +my @rounds = split /\n/, $input; +my $part1_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 }; + } +} + +say "part 1: ", $part1_score; diff --git a/day02/input b/day02/input @@ -0,0 +1,2501 @@ +C Z +C Z +C Y +C Z +C Z +C Z +A X +A X +C X +C X +A Z +B X +A X +C Z +A Z +C Z +C Z +C Z +A Z +A X +C Z +C Z +A Y +A Y +A X +C Z +A Y +A Y +C Z +C Y +C Y +C Z +A X +A X +A Y +C Z +A Y +A Y +A X +A Z +C Z +A X +C X +A Y +B Y +B Y +C Z +A Z +B X +A Z +B Z +B Z +A Y +C Z +C Z +C X +B Z +C Z +A Y +C Z +A X +C X +A X +C Z +A Y +B X +A Y +C Z +B Y +C Z +C Z +A Y +A Y +A Y +C Z +B Y +A X +A Y +C Z +A Y +C Z +C Z +C Z +B X +A Y +B X +C Z +C Z +B Y +A X +B Z +C Z +A X +C Z +B Y +C Z +A Y +A Y +A Z +C Z +A Y +B Z +A Z +A Y +A X +A Y +A X +A Y +A X +C Z +A Y +B Z +B Y +A X +C Z +A X +B Z +A X +A Y +C Z +A Z +A X +C X +A Y +A X +A X +A X +B Y +B Y +A X +C Z +C Z +A Y +A X +A Z +C Z +B Y +B Z +C X +C Z +A X +A Y +C Z +A X +C Y +B X +B Y +A Y +A Z +A X +A X +C Y +C Y +A X +A Z +B Z +C Y +A Z +A X +A Y +C X +A X +C Z +C Z +A Z +B Y +C Z +A Z +C Z +B Z +C Z +C Y +A X +C Z +C Z +A Z +C Z +A X +C Y +A X +C Z +A Z +A Y +C Y +B Z +C Y +C Y +A Z +A Y +C Z +C Z +C Z +C Z +A Y +A X +C Z +A Z +C Z +A Z +C Z +B Y +C X +A Y +C Z +A X +A X +C Z +C X +C X +C Z +A X +C X +A X +B X +A Y +C Z +C Z +A Y +C Y +C Z +A X +A X +A Z +C X +C Z +A Y +C Z +C Z +C Z +C Z +A Y +C Z +C Z +C Z +A Y +A X +A Y +C Y +A Y +A Y +A Y +B Y +C Y +B X +C X +A Y +C X +C Y +B X +A Z +C Z +A X +B X +C Z +C Z +A Y +A Y +A Y +A X +C Z +C Z +C Z +A X +A Y +A Y +A Z +B Y +B Y +A Z +A Y +A Y +C X +A Y +A X +A X +A Z +A X +B X +C Z +B Y +A Z +C Z +C Z +C Z +B Y +A Y +A Y +A X +B Z +C Z +C Y +A X +A Y +A Y +C X +A X +B Y +A X +A Y +C X +A X +A Y +C Z +A X +A X +C Z +C Z +C Z +C Z +A Y +A Y +C Z +A Y +A X +A Y +B Z +A X +C Y +C Z +B X +A X +C Z +A Z +C Z +A Z +B Y +A X +C Z +C X +C Z +C Z +C Z +C Z +A X +C Z +C X +C X +C X +C Z +A Z +C Z +C Z +C Z +C Y +A X +C Y +A X +A Z +A X +C Z +A X +A Y +B Y +C Z +A Y +C Z +C Z +B Z +A Z +B Y +A X +C Z +A Z +C Z +C Z +A X +C Z +A X +A Z +A X +A Z +B Z +B Z +C Z +C Z +A X +C Z +C Z +C Z +A Y +A X +A X +C X +A Y +C Z +B Z +C Z +C X +C Z +C Z +C Y +A X +A X +A X +B X +C Z +C Z +A X +C Z +C Z +A Y +B Z +A Z +A Y +A X +C Z +A Y +A X +C Z +C X +A Y +A Y +A Z +C X +A Y +A Y +C Z +A Y +C X +A Y +C X +A X +A X +A X +A Y +C Y +C Z +B Z +A X +C Z +A Y +C Z +C Z +B Z +A X +A Z +A Y +B Y +B X +C Z +B Y +C Z +A Y +C Z +B X +B Y +C Y +A Y +B X +C Z +A Y +C Z +A Y +A X +B X +B Y +A Y +C X +A Y +A Y +A X +C Z +A X +B Y +B X +A Y +B Z +C X +A Z +A Z +B Y +A X +A Z +A Y +B Z +C Z +A X +A Z +A X +A Z +A Y +C Z +C Z +A Z +C Z +C Y +A Y +C Z +A Y +B Z +C Z +A X +C Z +C Y +C Z +C Z +A X +A Y +A X +C Z +A X +B X +A Z +C Y +A Y +B X +A X +A X +C Y +B Z +A X +A Y +B X +B Y +A X +B X +A Y +A X +A Y +A X +A X +A Z +C Z +A X +C Z +B Y +A X +A Z +A Z +B Y +A Y +C Z +C X +C Z +C Z +C Z +B X +A Y +A X +A X +B Z +C Z +A X +A X +C X +A X +A X +A Y +B X +A Z +A Z +C Z +C Z +B Z +C Z +B Y +C Z +C Z +A Y +B Z +B Y +C Z +A X +A Z +A X +C Z +C Z +A Y +B X +A X +B Z +A Y +C Z +A Z +C Z +A Z +C Z +A X +A Y +C Z +A Y +A X +C Z +A X +C Z +B X +B Y +C Y +C X +A Y +C Z +A Y +A Y +B Y +B Y +C X +A X +C Z +B X +A Y +A Y +A Y +A Y +B Y +B X +A X +B Z +A X +B Z +A X +C Z +B X +C Z +C Y +C Z +B Y +A Z +C Z +C Z +A Y +C Z +B X +A Y +B Z +A Y +A Y +A X +A Y +C Z +A Z +A Y +A X +B Z +B Y +A X +C Z +A Y +A Y +A Z +A X +C Y +C Z +C Z +C Z +A Y +A X +A X +C Z +C Z +A Y +A Y +A X +B Z +C X +B Z +C Z +C X +A X +B Y +C Z +A X +C Z +C Z +C Z +A Z +A X +B Z +C Y +A X +A X +C Z +C Z +A Y +B X +C Y +C X +B Z +C Z +A Z +A Z +A X +A Y +C Z +C Z +A X +A Y +A Z +A Y +A Z +B X +B Y +C Z +A Z +B Z +A Y +C Z +B Z +C Y +C Z +A Y +A Y +B X +B Y +C Z +B X +B X +A Z +A X +A Y +A X +C Z +C Y +C Z +A X +A X +C Z +C Z +A Z +C Z +C Z +A Y +A X +C Z +A Z +A Y +A Y +A X +A X +A Y +A X +A Y +C Z +A X +A X +A Y +C Z +A Y +B Y +A X +A Z +A Y +C Z +A Y +A Z +C Z +B Y +A Z +C Z +A Z +A X +A X +B Y +C Z +C Z +A Z +C Z +A Y +C Z +B X +A Z +A Y +A X +A X +A X +B Y +A X +A Z +A X +C X +A X +A Z +C Z +A Y +C Z +A X +A Y +A X +C Z +A Y +B Z +B Y +A X +A X +A Y +C Z +C Z +C Z +C Z +B X +C Y +C Z +A Y +A X +A X +C Z +A X +C Z +C Z +A Y +C Z +A X +A Y +C Z +B Y +C Z +C Z +A Z +C Y +A Z +A X +A X +A Y +C X +B Z +C Z +C X +C Z +B Y +C Z +A Y +C Y +C Z +A Z +C Z +A Y +B X +A Y +A Y +A Y +C Y +B X +A X +B X +A Y +C Z +C Z +B Z +A Z +C Z +A Z +B Y +A Y +C Z +C Z +A X +B Y +B Z +A X +C Z +A X +A Y +A Y +A Z +B X +A Y +A X +A Z +C Z +C Z +A X +C Z +C X +C Z +A X +A X +A X +A Y +C Z +B Z +A X +B Z +C Y +A X +B Z +A Y +A X +C Z +C Z +C Z +B Y +C Z +C Y +B Y +A Y +A Y +A X +C X +A X +B X +B Y +A Y +A X +B X +A X +A X +C Z +C Y +A Y +A X +C Z +C Y +C Z +C Z +A Z +A Y +A Y +C X +A X +C Z +A Y +C Z +A X +B Y +A X +B X +C Z +C Z +A Z +A Y +C Z +C Z +C Z +B Z +A Y +C Z +A X +A Z +A Y +C Z +A Z +A Z +A X +A Y +C Z +C Z +A Y +C Y +A Y +B Z +C Z +C Y +C Z +A X +C Z +A Y +A Z +A X +C Z +A X +A X +A Y +C Z +A X +A X +A X +C X +C Z +C Y +B Z +A Y +A Y +C Z +C Z +A Y +C Z +C Z +C Z +C Z +C Z +A Y +B X +B Z +A X +A Z +B Y +C Z +C Z +A Y +A X +A Y +A Z +C Z +C Z +A Y +C Z +A X +C Y +C Z +A X +A X +C Z +A X +C Z +A X +A X +C Z +C X +B Y +C Z +A Y +C Y +A Y +A Y +C Z +C Z +C Y +A X +A X +C X +A X +A Z +A X +A Y +C Z +C Z +A X +B X +B Z +C Z +C Z +C Z +C X +C Y +A X +B Z +A X +A X +B Y +B X +A Z +A X +A Y +C Z +A Y +C Z +A X +A X +B Z +C Z +C X +A X +A Y +C Z +C Y +C Z +A Y +C Z +A Y +A Y +A Z +A Y +C Z +A Y +C Z +B Y +C Z +A X +C Z +C Y +A Y +A Y +A Y +C Y +A Z +A Y +A Y +C Z +B X +B Z +A X +C Z +A Y +C Z +A Z +A Z +A Y +A X +C Y +A X +A Y +C Z +A X +A Y +A Y +C Z +A X +C Z +B X +A Y +A X +C Z +C Z +C Z +C Z +B Y +C Y +A X +C Z +A X +B X +B Y +A Y +A X +A X +A X +C Y +A X +A X +A Y +C X +A X +B X +A Z +C Z +A Z +A X +C Z +C Z +B Y +A Y +A Y +C Z +C Z +A Y +B Y +C Z +A Y +A X +A X +C Z +C Z +C Z +A Z +A Z +A X +C Z +A X +A X +A X +B Z +B X +C Z +A X +C Z +C Z +A X +C Z +A Y +B Z +B Z +A X +C X +C Y +A Y +B Y +A X +C Z +A Y +C Z +C Z +B Z +C Z +C Y +A Y +C X +A X +C Y +C Y +C Z +A Y +B Y +C Z +C Y +A X +C X +A Y +B X +C Y +C X +C Y +C Z +C Z +B Z +A Z +A X +A X +C Z +A X +B Y +C Y +B Z +A Y +C Z +A X +A Y +A Y +C Z +B Z +A X +A X +A Y +A Y +A Y +A X +C Z +A Y +A Y +C Y +C Z +A Y +A X +C Y +A X +A Y +A X +C Z +A X +A Z +C Z +A Y +A Y +C X +A X +C Z +A Y +A Y +A Y +A Z +A X +A Z +C Z +C Z +A X +C X +A Z +A Z +C Z +C Z +C Y +B X +C Z +A Y +A Y +B X +B Y +A Y +B X +A X +C X +B Y +B X +A X +C Y +B X +A X +C Y +B X +B Y +C Z +A X +A Y +A X +C Y +C Y +C Z +A Y +A X +B Z +A Y +C Z +A Y +B Z +B Y +B X +B Z +C X +A Z +C Z +C Z +B Y +C Z +C Z +A X +A Y +A X +A Y +A Y +B X +A X +A X +A Z +B Y +A Y +B Y +A Y +A X +C Z +A X +B Y +A Y +C Z +A Y +A Y +A Y +C Z +B Z +C Z +A X +C Z +A Z +A Y +A Z +C Z +C Z +A Y +A Y +A X +A X +C Z +C Z +C X +C Z +B Y +C Z +A X +C Z +A Z +C X +C Y +B Z +C Z +C Y +A Y +A X +C Z +A Z +C Z +B Z +A Y +A Y +A Y +C X +A Y +C Z +A X +A X +A X +A Y +C Z +C Z +C Y +A Y +A Z +A Y +A Y +C Y +A X +C Z +A Y +C Z +C Z +C Z +C Z +C Z +B Z +C Z +C Z +A X +C Z +A Y +A Y +B Y +C Z +B X +B Y +A Y +A X +C X +A Z +C Z +C Z +C Y +A Y +C Y +C Z +B X +C Z +A X +C Z +A Y +A X +A X +A Y +B Y +C Y +C Z +C Z +B Z +C Z +A Z +A Y +A X +C Z +A Y +C Z +C Z +C Y +A Y +C Z +B Y +A Y +A Y +C X +C Z +A Z +C X +A X +A Y +C Z +A Y +A Y +C X +A X +C Z +B Y +A Y +A Z +A Z +A Y +A X +A Y +A X +C X +B X +C Y +B Z +A Z +B X +A Y +B Y +A X +C Z +C Z +A Y +C Y +B Z +B Y +C Y +A Z +B X +A X +A X +A X +C X +B X +C Y +A X +C Z +B Z +C Y +B X +C Z +C X +A Y +A X +C Y +B Z +C Z +B X +B Y +A X +A Y +A Y +A Y +B Y +A X +C X +C Y +A X +A X +C Z +A X +C Z +C Z +A X +C Z +C Z +C Z +A X +C Z +C Y +C Z +A Z +A Y +A Y +C Z +C X +C Z +C Z +C X +A X +A Y +B X +C Y +B Z +B Y +B Y +C Z +C Z +A X +C Z +A Y +C Z +A X +B Y +A Y +A X +C Z +C Y +C Z +A Y +A X +B Z +B Z +A Z +A Y +A X +C Z +B Z +C X +A Y +C Z +C Z +A Z +A Z +C Z +B X +A Y +A Y +B X +B Y +A Y +C Y +C Z +C Z +C X +A Y +A Y +A Z +C Y +B X +B X +A Y +C Z +C Z +A Y +A Y +A Z +C Z +B Y +A Y +A Z +A X +C Z +C Z +B Y +C Z +C Z +A Y +C Z +B Z +B Z +C Z +B X +A Z +A Z +A Y +C Y +B Z +C Z +C Z +A X +A X +A X +A Y +A X +A Y +C Z +A X +C Z +C Z +C Z +C Z +A X +A Y +C Z +A X +A Y +C Z +A Y +A Z +B Y +C Z +A Y +C Z +A Y +B X +C Z +A Y +C Z +C X +C Z +A Y +B Z +A X +C Z +C Y +A Y +B Z +A Y +B X +A Y +A X +A X +A Y +A X +A Y +C Z +A Y +C Y +A X +A Z +C Z +A Z +A Y +A X +A Y +A X +A Y +A X +B X +A X +A X +C Y +C Z +A X +A Y +A X +A Y +C Z +C Z +A X +A X +B Z +A Y +C Z +A Y +B Y +C Z +C Z +C Z +C Z +C Z +C Z +C Z +C Z +A Y +C X +B Y +A X +C Z +A X +A Z +A Y +B Y +C X +C Z +C X +B Y +C Z +A Y +B Z +C Z +C Z +A Y +A X +A Z +C Z +C Y +A Y +A X +A X +A Y +C Z +C Z +B Y +B Y +C Z +A X +A Y +B X +B Y +C Z +A Z +C Z +A X +B Y +C Z +C Z +A X +A Z +A Y +C Z +B Y +B Z +C Y +B X +C Z +A X +A Y +C Z +C Z +C Y +A Y +A Y +A Y +C X +B Y +A Y +C Z +C Z +A X +C Z +A X +C Z +B Z +C Z +A Y +A Y +C Z +C Z +C Z +A Y +A Y +B Z +C Z +A X +C Y +A X +A Y +A X +A X +C Z +C Z +C Z +A Y +C X +B Z +C Z +C Y +B X +A Y +A Y +A X +A X +B Y +C Z +A Y +A Z +B Z +A Z +A X +A Z +A X +A X +C Z +C X +C Z +B Y +C X +C Z +C Z +A X +A X +A Y +A Z +A Z +A Y +C Z +A Z +A X +A Y +A Y +A Z +A Y +A X +B X +A Y +A Y +C Z +C Z +C Y +A X +B X +B Y +A Y +C Z +A X +A Y +B Z +A Y +C X +B X +C Z +A Y +C X +C Y +A Y +A X +A X +C Z +C Y +A Z +A X +C Z +C Z +A Z +A X +C Y +C Z +A Y +A Y +C Z +C Z +C Z +C Z +A Y +C Z +C Z +C Z +B Z +A Y +C Z +A X +C Z +A X +A Y +C Y +C Z +B Y +A X +A X +C Z +C Z +A Y +A X +C Z +A Y +C Z +C Z +A X +A Z +A Y +C Z +A Y +C Z +B Y +C X +C Z +A X +A Y +C Y +A X +A Y +A Y +A Z +A Y +C X +A Y +B Y +C Z +C Y +B Z +A Y +B X +A Y +C Z +A X +A X +C Z +C Z +A X +A X +A Z +C Z +C Z +A Z +A X +B Y +B Z +B Z +C Z +A X +C Z +C Z +A Y +C Z +C Z +B Z +A X +B Z +C Z +C Y +A Z +C Z +A Y +A X +B X +A Z +C Z +A Z +B X +A Y +A Y +B Z +C Z +B Z +C Z +A X +C Y +A Y +B Y +B Y +C Z +C Y +A Y +A Z +C Z +A X +A Y +A Z +A X +A X +C X +C Z +C Z +A Z +C Z +A X +C Z +C Z +A X +A X +A Z +A X +A X +C X +A X +C Z +C Z +C Z +A Z +A X +B X +A Y +A X +B Z +B Z +C X +A Y +A X +B Z +C Z +A Z +C X +A Y +A X +B Z +C Z +C Z +B X +B X +A X +A X +A Y +A Z +A X +A X +A Y +B Z +C X +A X +A Y +B Z +C Z +A X +A Z +C X +C X +B Z +B Y +C Y +A Y +B Z +C Z +A X +C Z +A Y +C Z +C Z +A Y +C Y +A X +A Y +B Y +C Y +C Y +A X +A Y +C Y +A Z +C Z +A Z +B Z +A X +A Y +C Z +A Y +B Y +A X +C Z +A X +C Y +A Y +A X +C Z +A X +C Y +B X +A X +A Y +A Y +C X +C Z +A X +A Z +A Y +C Z +A Y +C Z +B X +C Z +C Z +A X +A X +A X +A Y +C Z +A Y +A Y +A Z +A X +C Y +C Z +A Z +A Y +C Z +C Z +B X +A X +C Y +A X +A X +B Y +B X +C Z +A X +C Y +A Y +C Z +B Y +C Z +A Y +A X +A Y +C Z +A Z +C Z +B Z +A Y +C Z +A Z +A X +A X +C Z +C Z +A X +A X +A Y +C X +A X +B Z +B Z +B Z +C Z +C Z +A X +C Z +C X +A X +C Z +A Y +C X +C Z +B Y +B Z +C Z +A X +C X +A X +C Y +A Y +B Y +C Z +A Z +C X +A Z +A X +A Z +A X +A Z +C Y +C Z +A Y +A Y +A X +B Y +C Z +B Y +C Y +C Z +A Z +C Z +A Y +B Z +C Z +A Z +C Y +A Z +A Z +A X +A X +C Y +C Z +A Z +A Y +B Y +A Z +C Z +C Z +B X +C Z +A X +C Z +B Z +A Y +A X +B Y +C X +C Z +A Z +B X +C Z +C Z +B Y +B Z +A Y +A Y +A X +C Z +A Z +C Z +A X +C Z +C Z +A X +A X +A Y +C Z +B Y +A X +A Y +A X +C Z +A Y +A Y +A Y +C X +C Z +A X +C Z +B X +A X +A Z +C Z +A Y +A Z +A Z +A X +B Z +A X +C Z +A Y +B X +C Z +B Y +B X +C Z +A X +A Y +A X +A Z +A Y +A X +C Y +C Z +B X +C Y +C Z +B X +A Z +C Z +C Z +B Y +B Z +C Z +C Z +C Z +C Z +B Z +B Y +A Y +C Z +C Z +B Y +A Y +C Z +A Y +C Z +C Z +C Z +A Y +B X +A Z +B Y +C Z +B Y +C Z +A Y +B Z +A X +B Y +B Y +A Y +B X +C Z +A Z +C Y +A X +C Z +C Z +A X +C Z +A Y +A X +C Z +A X +A Z +B Z +C Z +A Y +A Y +A X +A Y +C Z +B Z +C Z +C Z +C Z +A Y +C Y +A Y +A Y +A X +B Y +A Y +A Y +B Z +B Y +C Z +A Y +A X +A Y +A Z +A Y +C Y +C Z +B Y +A Y +A X +C X +A Y +C Z +A Z +C Z +A X +C Y +A Y +B Y +B Z +A Y +C X +B Y +A Z +A X +A X +A X +A X +A Y +C Y +A Y +A X +C Z +A Y +A X +C Z +B Y +B X +C Z +B Z +A Y +A X +C Z +C Z +A X +C Z +A Y +C Z +C Z +C Z +C X +A Y +A Y +C Z +C Z +A X +A X +A Z +A Y +C Z +A Z +C Z +C Z +A X +A Y +A X +C Y +A Y +A X +A Y +A X +C Z +C Y +C Z +C Y +B Y +A X +A Y +A Y +B Z +A Z +C X +C Z +C Z +A Y +B X +C Z +A X +A Y +A Y +A X +A X +C X +B Y +B X +A X +C Z +A X +A Y +C Y +A X +A X +B Z +A X +C Z +A X +A Y +A Y +C Z +A Y +A Y +C Z +A X +A Y +B Y +C Z +C X +C X +B X +A Z +A Y +A X +B X +A Y +A Z +C Z +A Z +C X +A Y +C Z +A Y +A Y +A X +C Z +C Z +C Z +C Z +B X +A X +A Z +A X +A Y +A X +A X +B Z +C Z +C X +B Y +A Y +A X +C X +C Z +B Z +A Y +B Z +A X +A X +B Y +A Z +A Y +A Y +B X +A Y +A Y +A Y +C Z +C Z +B Z +A Y +A X +A Y +C Z +C Z +C Z +A Z +A Y +B X +A Y +A Y +A X +A X +C Z +B Z +C Z +C Z +C Z +A Y +C Y +A Y +C Z +C Z +B X +C Z +C Z +C X +A Y +C Z +A Y +C Z +A Y + diff --git a/day02/test b/day02/test @@ -0,0 +1,3 @@ +A Y +B X +C Z