From 7b44d73c50a4bdc884e2acfb43588151f5ec335d Mon Sep 17 00:00:00 2001 From: Yanick Champoux Date: Sat, 2 Dec 2023 11:17:13 -0500 Subject: [PATCH] it begins --- 2023/02/Part1.pm | 14 ++++++++++++++ 2023/02/part1.t | 7 +++++++ 2 files changed, 21 insertions(+) diff --git a/2023/02/Part1.pm b/2023/02/Part1.pm index c9b4e65..08269d2 100644 --- a/2023/02/Part1.pm +++ b/2023/02/Part1.pm @@ -4,6 +4,20 @@ package Part1; use List::AllUtils qw/ /; +sub parse_line($line) { + my %data; + $line =~ s/Game (\d+)://; + $data{game} = $1; + + my @entries = split ';', $line; + + $data{entries} = [ + map { +{ map { /(\d+) (\w+)/; $2 => $1 } split ",", $_ } } @entries + ]; + + return \%data; +} + sub solution_1 ($input) { ...; } diff --git a/2023/02/part1.t b/2023/02/part1.t index d09f96c..cfd3549 100644 --- a/2023/02/part1.t +++ b/2023/02/part1.t @@ -6,6 +6,13 @@ use Path::Tiny; use Part1; + +is Part1::parse_line("Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green") => +{ game => 1, entries => [ + { blue => 3, red => 4 }, { red => 1, green => 2, blue => 6}, + { green => 2 }, +]}; + + my $input = path('input')->slurp; is Part1::solution_1($input) => 'TODO';