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:
A | day05/day05.pl | | | 37 | +++++++++++++++++++++++++++++++++++++ |
A | day05/input | | | 512 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | day05/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