From cbc7a283a31f5bd4fe83f113f4b2db9100b4c9a0 Mon Sep 17 00:00:00 2001 From: Yanick Champoux Date: Thu, 7 Dec 2023 11:30:37 -0500 Subject: [PATCH] tweaks --- 2023/07/Part1.pm | 27 ++++++++++----------------- 1 file changed, 10 insertions(+), 17 deletions(-) diff --git a/2023/07/Part1.pm b/2023/07/Part1.pm index d72da20..31fd1b3 100644 --- a/2023/07/Part1.pm +++ b/2023/07/Part1.pm @@ -11,15 +11,14 @@ sub rank_hand (@hand) { my %group; $group{$_}++ for @hand; - #use DDP; p %group; - return 7 if 1 == keys %group; return 6 if grep { $_ == 4 } values %group; - return 5 if keys %group == 2 and grep { $_ == 3 } values %group; - - return 4 if grep { $_ == 3 } values %group; + if( grep { $_ == 3 } values %group ) { + return 5 if keys %group == 2; + return 4; + } return 3 if keys %group == 3; @@ -37,19 +36,16 @@ sub handify ($str) { A => 14 ); - my @cards = - map { chr( ord('a') + $_ - 2 ) } map { $map{$_} // $_ } split '', $str; - - return \@cards; + return [ + map { chr( ord('a') + $_ - 2 ) } map { $map{$_} // $_ } split '', $str + ]; } sub parse_input ($input) { - my @lines = split "\n", $input; - my @hand_score = pairmap { + return pairmap { [ handify($a), $b ] } - map { split " " } @lines; - return @hand_score; + map { split " " } split "\n", $input; } sub score (@hand) { @@ -57,11 +53,8 @@ sub score (@hand) { } sub solution_1 ($input) { - my @hand_score = sort_by { score( $_->[0]->@* ) } parse_input($input); my $rank = 0; - - # use DDP; p @hand_score; - return sum map { ++$rank * $_->[1] } @hand_score; + return sum map { ++$rank * $_->[1] } sort_by { score( $_->[0]->@* ) } parse_input($input); } 1;