From 91e0bf0f4c2b28b6a70c5770262f3972b6879857 Mon Sep 17 00:00:00 2001 From: June McEnroe Date: Tue, 7 Dec 2021 11:15:45 -0500 Subject: Solve day 7 part 2 --- 2021/day07.pl | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to '2021/day07.pl') diff --git a/2021/day07.pl b/2021/day07.pl index 209bcb2..a403125 100644 --- a/2021/day07.pl +++ b/2021/day07.pl @@ -1,7 +1,18 @@ use strict; use warnings; +use List::Util qw(min max sum); my @crabs = sort { $a <=> $b } split(/,/, <>); my $median = $crabs[@crabs / 2]; -my $cost = 0; -$cost += abs($_ - $median) for @crabs; +my $cost = sum(map { abs($_ - $median) } @crabs); print "$cost\n"; +sub cost { + my ($to, $from) = @_; + my $n = abs($from - $to); + $n * ($n + 1) / 2; +} +sub totalCost { + my $x = shift; + sum(map { cost($x, $_) } @_); +} +my $min = min(map { totalCost($_, @crabs) } min(@crabs)..max(@crabs)); +print "$min\n"; -- cgit 1.4.1