From e5eb8372a5d14fdcaca76dec539ffcb66ce3ba39 Mon Sep 17 00:00:00 2001 From: June McEnroe Date: Tue, 12 Dec 2023 12:37:44 -0500 Subject: Solve day 7 part 1 --- 2023/day07.pl | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 2023/day07.pl (limited to '2023/day07.pl') diff --git a/2023/day07.pl b/2023/day07.pl new file mode 100644 index 0000000..aa36965 --- /dev/null +++ b/2023/day07.pl @@ -0,0 +1,37 @@ +use strict; +use warnings; +sub handType { + my $hand = join("", sort(split(//, shift))); + return 7 if $hand =~ /(.)\g1{4}/; + return 6 if $hand =~ /(.)\g1{3}/; + return 5 if $hand =~ /(.)\g1{2}(.)\g2/ || $hand =~ /(.)\g1(.)\g2{2}/; + return 4 if $hand =~ /(.)\g1{2}/; + return 3 if $hand =~ /(.)\g1(.)\g2/ || $hand =~ /(.)\g1.(.)\g2/; + return 2 if $hand =~ /(.)\g1/; + return 1; +} +sub handRanks { + my %ranks = (T => 10, J => 11, Q => 12, K => 13, A => 14); + map { $ranks{$_} // $_ } split(//, shift); +} +sub handSort { + my $aType = handType($a); + my $bType = handType($b); + my @aRanks = handRanks($a); + my @bRanks = handRanks($b); + $aType <=> $bType || $aRanks[0] <=> $bRanks[0] || + $aRanks[1] <=> $bRanks[1] || $aRanks[2] <=> $bRanks[2] || + $aRanks[3] <=> $bRanks[3] || $aRanks[4] <=> $bRanks[4]; +} +my (@hands, %bids); +while (<>) { + my ($hand, $bid) = split(/ /); + push @hands, $hand; + $bids{$hand} = $bid; +} +my $winnings = 0; +my @ranked = sort handSort @hands; +for (0 .. $#ranked) { + $winnings += (1 + $_) * $bids{$ranked[$_]}; +} +print $winnings, "\n"; -- cgit 1.4.1 ght' method='get' action='/aoc/log/2016/LICENSE'>
path: root/2016/LICENSE (unfollow)
Commit message (Collapse)Author
2020-11-22Day 12June McEnroe
2020-11-22Day 11, part 2June McEnroe
2020-11-22Day 11June McEnroe
https://www.redblobgames.com/grids/hexagons/#coordinates-cube
2020-11-22Day 10, part 2June McEnroe
2020-11-22Day 10June McEnroe
2020-11-22Day 9, part 2June McEnroe
2020-11-22Day 9June McEnroe
I was really sick at the start of the week, okay?
2020-11-22Day 8, part 2June McEnroe
2020-11-22Day 8June McEnroe
2020-11-22Day 7, part 2June McEnroe
I don't even know what this is. Don't look at it.
2020-11-22Day 7June McEnroe
2020-11-22Day 6, part 2June McEnroe
2020-11-22Day 6June McEnroe
2020-11-22Day 5, part 2June McEnroe
2020-11-22Day 5June McEnroe
2020-11-22Day 4, part 2June McEnroe
That ugly sort map though.
2020-11-22Day 4June McEnroe
2020-11-22Day 3, part 2June McEnroe
I am super surprised that worked on the first try.
2020-11-22Day 3, clean upJune McEnroe
2020-11-22Day 3June McEnroe
This is fucking awful and I'm angry.
2020-11-22Day 2, part 2June McEnroe
2020-11-22Day 2June McEnroe
2020-11-22Day 1, part 2June McEnroe
2020-11-22Day 1June McEnroe
2020-11-22Move to 2016 directoryJune McEnroe