aoc2022

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

commit 823a068a43dad17198f581d7aa66e5e216754116
parent 168cb7133e982846058f27f63c937b12ecff238e
Author: Samir Parikh <noreply@samirparikh.com>
Date:   Sat, 24 Dec 2022 15:31:01 +0000

solve part 1 of day05

Diffstat:
Aday05/day05.pl | 37+++++++++++++++++++++++++++++++++++++
Aday05/input | 512+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aday05/test | 9+++++++++
3 files changed, 558 insertions(+), 0 deletions(-)

diff --git a/day05/day05.pl b/day05/day05.pl @@ -0,0 +1,37 @@ +#!/usr/local/bin/perl +# day 2022-05 +# taken from +# https://github.com/Abigail/AdventOfCode2022/blob/master/Day_05/solution.pl +use strict; +use warnings; +use v5.32; +use Data::Dumper; + +@ARGV = "input" unless @ARGV; + +my @stacks1; +while ( <> ) { + last if m/^ 1/; + my $stack_number = 1; + while ( m/(?: |\[([A-Z])\]) ?/g ) { + # crates at the top of the stack will be at the end of the array + # (e.g. lower crates will be at the beginning of the array) + unshift @{ $stacks1[ $stack_number ] } => $1 if $1; + $stack_number++; + } +} + +<>; # read blank line + +while (<>) { + my ( $move, $from, $to ) = m/\d+/g; + foreach ( 1 .. $move ) { + push @{ $stacks1[ $to ] } => pop @{ $stacks1[ $from ] }; + } +} + + +my $part1 = ''; +$part1 .= $_->[-1] foreach @stacks1[ 1 .. $#stacks1]; + +say "part 1: ", $part1; diff --git a/day05/input b/day05/input @@ -0,0 +1,512 @@ + [M] [W] [M] + [L] [Q] [S] [C] [R] + [Q] [F] [F] [T] [N] [S] + [N] [V] [V] [H] [L] [J] [D] + [D] [D] [W] [P] [G] [R] [D] [F] +[T] [T] [M] [G] [G] [Q] [N] [W] [L] +[Z] [H] [F] [J] [D] [Z] [S] [H] [Q] +[B] [V] [B] [T] [W] [V] [Z] [Z] [M] + 1 2 3 4 5 6 7 8 9 + +move 1 from 7 to 4 +move 1 from 6 to 2 +move 5 from 9 to 4 +move 2 from 2 to 8 +move 2 from 2 to 6 +move 3 from 3 to 7 +move 3 from 7 to 1 +move 1 from 9 to 4 +move 4 from 7 to 3 +move 5 from 1 to 8 +move 1 from 1 to 2 +move 1 from 4 to 9 +move 4 from 5 to 6 +move 1 from 5 to 8 +move 3 from 2 to 4 +move 3 from 6 to 4 +move 3 from 5 to 9 +move 1 from 9 to 7 +move 1 from 9 to 8 +move 2 from 7 to 9 +move 1 from 7 to 9 +move 1 from 7 to 8 +move 2 from 9 to 8 +move 13 from 4 to 2 +move 2 from 6 to 1 +move 3 from 3 to 2 +move 9 from 2 to 7 +move 1 from 9 to 7 +move 5 from 7 to 8 +move 9 from 8 to 4 +move 2 from 7 to 1 +move 1 from 1 to 7 +move 2 from 3 to 2 +move 14 from 4 to 5 +move 3 from 8 to 4 +move 13 from 8 to 3 +move 2 from 7 to 1 +move 6 from 6 to 5 +move 1 from 6 to 9 +move 3 from 2 to 8 +move 1 from 7 to 8 +move 5 from 2 to 8 +move 4 from 4 to 8 +move 1 from 9 to 8 +move 1 from 7 to 1 +move 1 from 1 to 2 +move 7 from 3 to 2 +move 4 from 3 to 2 +move 2 from 5 to 3 +move 2 from 1 to 5 +move 5 from 8 to 7 +move 6 from 8 to 3 +move 11 from 5 to 8 +move 8 from 8 to 9 +move 5 from 7 to 8 +move 3 from 1 to 8 +move 5 from 3 to 8 +move 11 from 2 to 9 +move 1 from 3 to 5 +move 1 from 2 to 1 +move 1 from 2 to 7 +move 6 from 5 to 7 +move 19 from 9 to 7 +move 3 from 5 to 3 +move 1 from 5 to 4 +move 1 from 1 to 4 +move 1 from 9 to 8 +move 25 from 7 to 9 +move 2 from 4 to 1 +move 2 from 1 to 4 +move 2 from 4 to 7 +move 2 from 7 to 9 +move 5 from 3 to 1 +move 1 from 7 to 1 +move 9 from 9 to 5 +move 3 from 5 to 6 +move 9 from 9 to 1 +move 7 from 1 to 3 +move 6 from 8 to 9 +move 1 from 5 to 2 +move 10 from 9 to 2 +move 1 from 2 to 7 +move 5 from 9 to 8 +move 1 from 5 to 8 +move 5 from 3 to 8 +move 1 from 9 to 4 +move 4 from 3 to 6 +move 4 from 6 to 3 +move 3 from 1 to 4 +move 3 from 2 to 4 +move 3 from 5 to 8 +move 3 from 4 to 9 +move 1 from 7 to 3 +move 2 from 9 to 8 +move 4 from 2 to 5 +move 1 from 3 to 4 +move 1 from 9 to 3 +move 5 from 5 to 6 +move 7 from 8 to 5 +move 3 from 1 to 7 +move 6 from 5 to 8 +move 5 from 4 to 5 +move 3 from 3 to 2 +move 1 from 1 to 4 +move 19 from 8 to 1 +move 3 from 7 to 3 +move 4 from 2 to 9 +move 1 from 2 to 6 +move 7 from 6 to 4 +move 1 from 6 to 2 +move 2 from 1 to 3 +move 5 from 4 to 1 +move 1 from 6 to 2 +move 3 from 3 to 6 +move 12 from 1 to 2 +move 2 from 8 to 1 +move 14 from 2 to 4 +move 7 from 1 to 5 +move 10 from 4 to 6 +move 3 from 6 to 4 +move 1 from 8 to 4 +move 4 from 3 to 5 +move 1 from 2 to 3 +move 2 from 1 to 4 +move 17 from 5 to 3 +move 7 from 4 to 1 +move 1 from 9 to 4 +move 4 from 6 to 3 +move 5 from 4 to 8 +move 12 from 3 to 1 +move 6 from 3 to 5 +move 17 from 1 to 5 +move 2 from 1 to 9 +move 3 from 1 to 4 +move 7 from 8 to 2 +move 4 from 3 to 7 +move 1 from 1 to 8 +move 17 from 5 to 2 +move 11 from 2 to 8 +move 11 from 8 to 4 +move 11 from 2 to 4 +move 4 from 6 to 1 +move 4 from 1 to 3 +move 2 from 6 to 9 +move 3 from 7 to 8 +move 3 from 5 to 3 +move 23 from 4 to 3 +move 4 from 4 to 8 +move 1 from 7 to 4 +move 2 from 2 to 3 +move 6 from 3 to 2 +move 16 from 3 to 9 +move 2 from 5 to 8 +move 1 from 4 to 5 +move 2 from 5 to 9 +move 1 from 2 to 3 +move 1 from 3 to 8 +move 9 from 9 to 1 +move 6 from 3 to 8 +move 3 from 3 to 1 +move 18 from 8 to 9 +move 1 from 3 to 5 +move 5 from 1 to 4 +move 5 from 1 to 8 +move 3 from 4 to 1 +move 1 from 5 to 2 +move 2 from 4 to 8 +move 1 from 1 to 2 +move 5 from 2 to 7 +move 2 from 8 to 1 +move 2 from 2 to 6 +move 3 from 1 to 6 +move 3 from 9 to 6 +move 31 from 9 to 7 +move 26 from 7 to 8 +move 3 from 1 to 6 +move 22 from 8 to 4 +move 2 from 4 to 5 +move 4 from 6 to 5 +move 11 from 4 to 3 +move 9 from 4 to 6 +move 2 from 5 to 9 +move 4 from 7 to 1 +move 2 from 6 to 1 +move 1 from 5 to 3 +move 6 from 8 to 6 +move 8 from 6 to 2 +move 1 from 1 to 6 +move 3 from 1 to 3 +move 1 from 5 to 3 +move 1 from 5 to 9 +move 5 from 7 to 2 +move 2 from 9 to 6 +move 4 from 8 to 6 +move 1 from 7 to 2 +move 1 from 5 to 4 +move 12 from 3 to 4 +move 3 from 3 to 1 +move 3 from 6 to 8 +move 1 from 9 to 3 +move 6 from 2 to 6 +move 2 from 3 to 2 +move 10 from 2 to 7 +move 2 from 1 to 9 +move 2 from 1 to 6 +move 1 from 1 to 4 +move 9 from 7 to 9 +move 3 from 8 to 7 +move 7 from 4 to 8 +move 2 from 7 to 4 +move 4 from 8 to 1 +move 5 from 8 to 2 +move 3 from 1 to 3 +move 1 from 8 to 7 +move 3 from 3 to 7 +move 4 from 2 to 6 +move 8 from 4 to 2 +move 5 from 2 to 5 +move 11 from 9 to 7 +move 2 from 5 to 7 +move 16 from 7 to 8 +move 5 from 8 to 7 +move 1 from 4 to 3 +move 3 from 5 to 1 +move 11 from 6 to 5 +move 7 from 5 to 4 +move 5 from 7 to 4 +move 1 from 3 to 7 +move 2 from 5 to 4 +move 10 from 4 to 8 +move 14 from 6 to 3 +move 1 from 5 to 9 +move 1 from 6 to 5 +move 2 from 2 to 9 +move 2 from 1 to 3 +move 2 from 5 to 3 +move 2 from 7 to 6 +move 2 from 1 to 4 +move 1 from 2 to 3 +move 19 from 3 to 6 +move 3 from 9 to 2 +move 4 from 2 to 6 +move 6 from 6 to 7 +move 13 from 6 to 2 +move 14 from 8 to 1 +move 6 from 4 to 3 +move 5 from 7 to 8 +move 3 from 6 to 3 +move 2 from 8 to 2 +move 2 from 6 to 8 +move 4 from 1 to 8 +move 13 from 8 to 4 +move 10 from 4 to 7 +move 1 from 4 to 5 +move 1 from 5 to 1 +move 3 from 6 to 5 +move 3 from 8 to 9 +move 9 from 3 to 1 +move 3 from 5 to 8 +move 3 from 9 to 6 +move 3 from 8 to 7 +move 1 from 6 to 9 +move 1 from 9 to 4 +move 9 from 2 to 8 +move 2 from 2 to 6 +move 14 from 7 to 1 +move 31 from 1 to 5 +move 3 from 1 to 7 +move 4 from 6 to 8 +move 24 from 5 to 3 +move 2 from 8 to 1 +move 1 from 8 to 5 +move 2 from 1 to 7 +move 3 from 7 to 6 +move 6 from 8 to 6 +move 2 from 4 to 2 +move 1 from 4 to 3 +move 2 from 2 to 7 +move 6 from 6 to 7 +move 4 from 8 to 6 +move 7 from 6 to 2 +move 12 from 7 to 5 +move 4 from 2 to 8 +move 1 from 2 to 4 +move 1 from 4 to 6 +move 1 from 6 to 7 +move 1 from 7 to 3 +move 3 from 3 to 8 +move 17 from 3 to 5 +move 4 from 3 to 6 +move 35 from 5 to 3 +move 2 from 2 to 6 +move 1 from 5 to 9 +move 9 from 3 to 7 +move 6 from 8 to 1 +move 4 from 2 to 6 +move 4 from 6 to 9 +move 20 from 3 to 9 +move 22 from 9 to 7 +move 1 from 8 to 6 +move 29 from 7 to 5 +move 4 from 6 to 8 +move 6 from 1 to 8 +move 2 from 7 to 3 +move 1 from 6 to 5 +move 2 from 3 to 9 +move 1 from 9 to 3 +move 4 from 5 to 6 +move 18 from 5 to 1 +move 7 from 3 to 1 +move 1 from 3 to 6 +move 3 from 5 to 1 +move 1 from 3 to 9 +move 4 from 5 to 2 +move 10 from 8 to 7 +move 2 from 9 to 3 +move 1 from 3 to 5 +move 21 from 1 to 9 +move 1 from 3 to 2 +move 1 from 2 to 9 +move 15 from 9 to 3 +move 4 from 7 to 1 +move 2 from 6 to 1 +move 7 from 9 to 1 +move 1 from 5 to 4 +move 1 from 4 to 6 +move 6 from 3 to 9 +move 3 from 6 to 5 +move 19 from 1 to 6 +move 8 from 3 to 6 +move 1 from 3 to 7 +move 20 from 6 to 7 +move 1 from 2 to 6 +move 6 from 9 to 8 +move 2 from 9 to 4 +move 1 from 1 to 3 +move 1 from 2 to 9 +move 3 from 5 to 6 +move 2 from 7 to 3 +move 2 from 9 to 7 +move 1 from 4 to 8 +move 4 from 8 to 9 +move 4 from 7 to 1 +move 2 from 1 to 7 +move 1 from 3 to 2 +move 2 from 8 to 9 +move 6 from 6 to 2 +move 1 from 8 to 1 +move 1 from 5 to 7 +move 4 from 2 to 9 +move 1 from 3 to 5 +move 5 from 6 to 1 +move 1 from 4 to 2 +move 1 from 9 to 6 +move 1 from 9 to 6 +move 4 from 6 to 3 +move 7 from 9 to 7 +move 8 from 7 to 2 +move 1 from 5 to 8 +move 5 from 2 to 9 +move 3 from 2 to 5 +move 6 from 1 to 3 +move 17 from 7 to 6 +move 1 from 8 to 2 +move 2 from 1 to 7 +move 5 from 9 to 4 +move 4 from 3 to 8 +move 3 from 4 to 1 +move 1 from 9 to 2 +move 4 from 2 to 1 +move 1 from 8 to 4 +move 1 from 5 to 9 +move 1 from 2 to 3 +move 3 from 3 to 2 +move 10 from 7 to 6 +move 3 from 4 to 1 +move 5 from 3 to 2 +move 4 from 1 to 5 +move 3 from 8 to 6 +move 12 from 6 to 4 +move 1 from 9 to 3 +move 1 from 5 to 2 +move 3 from 1 to 6 +move 12 from 6 to 8 +move 3 from 1 to 5 +move 2 from 4 to 3 +move 5 from 8 to 7 +move 7 from 5 to 3 +move 3 from 7 to 9 +move 1 from 5 to 8 +move 5 from 3 to 7 +move 10 from 6 to 5 +move 2 from 7 to 5 +move 8 from 2 to 9 +move 5 from 3 to 9 +move 9 from 5 to 1 +move 5 from 7 to 4 +move 15 from 9 to 5 +move 1 from 2 to 5 +move 1 from 8 to 5 +move 6 from 4 to 1 +move 2 from 2 to 9 +move 18 from 5 to 8 +move 18 from 8 to 3 +move 16 from 3 to 4 +move 3 from 5 to 8 +move 1 from 9 to 2 +move 3 from 1 to 7 +move 3 from 8 to 2 +move 3 from 7 to 9 +move 2 from 3 to 4 +move 3 from 9 to 8 +move 11 from 1 to 6 +move 2 from 9 to 4 +move 3 from 6 to 9 +move 8 from 6 to 4 +move 26 from 4 to 7 +move 1 from 2 to 5 +move 1 from 5 to 2 +move 3 from 9 to 3 +move 21 from 7 to 6 +move 4 from 2 to 4 +move 1 from 2 to 3 +move 5 from 7 to 6 +move 8 from 8 to 1 +move 1 from 3 to 7 +move 9 from 1 to 4 +move 1 from 7 to 4 +move 20 from 4 to 7 +move 1 from 8 to 5 +move 2 from 4 to 8 +move 1 from 4 to 9 +move 3 from 8 to 9 +move 1 from 5 to 8 +move 2 from 3 to 1 +move 4 from 7 to 8 +move 3 from 7 to 5 +move 1 from 1 to 7 +move 4 from 8 to 3 +move 3 from 5 to 6 +move 1 from 8 to 4 +move 1 from 1 to 8 +move 28 from 6 to 4 +move 1 from 6 to 1 +move 2 from 7 to 8 +move 1 from 8 to 7 +move 1 from 8 to 1 +move 2 from 1 to 9 +move 3 from 9 to 3 +move 12 from 7 to 5 +move 7 from 3 to 1 +move 1 from 3 to 6 +move 26 from 4 to 9 +move 1 from 6 to 3 +move 1 from 3 to 6 +move 1 from 8 to 6 +move 1 from 7 to 8 +move 1 from 6 to 3 +move 3 from 1 to 3 +move 5 from 4 to 3 +move 28 from 9 to 4 +move 2 from 1 to 5 +move 22 from 4 to 1 +move 3 from 5 to 3 +move 5 from 5 to 7 +move 10 from 1 to 6 +move 1 from 5 to 2 +move 3 from 5 to 3 +move 2 from 5 to 9 +move 3 from 9 to 7 +move 2 from 4 to 5 +move 1 from 5 to 4 +move 4 from 3 to 8 +move 1 from 5 to 7 +move 9 from 6 to 5 +move 1 from 7 to 6 +move 1 from 6 to 5 +move 2 from 6 to 9 +move 3 from 5 to 1 +move 13 from 1 to 3 +move 7 from 7 to 5 +move 1 from 2 to 9 +move 3 from 8 to 2 +move 1 from 7 to 2 +move 3 from 4 to 3 +move 19 from 3 to 8 +move 5 from 3 to 7 +move 1 from 7 to 1 +move 19 from 8 to 6 +move 5 from 1 to 4 +move 5 from 5 to 2 +move 2 from 2 to 7 +move 3 from 4 to 1 +move 6 from 5 to 7 +move 2 from 8 to 7 +move 2 from 2 to 7 +move 3 from 3 to 5 +move 5 from 7 to 6 +move 6 from 6 to 1 +move 2 from 5 to 1 +move 2 from 4 to 3 +move 1 from 5 to 8 diff --git a/day05/test b/day05/test @@ -0,0 +1,9 @@ + [D] +[N] [C] +[Z] [M] [P] + 1 2 3 + +move 1 from 2 to 1 +move 3 from 1 to 3 +move 2 from 2 to 1 +move 1 from 1 to 2