aoc24/day1/p1.pl
2024-12-01 16:38:02 +01:00

43 lines
1,016 B
Perl

use strict;
use warnings;
open(my $in, "<", "input1.txt");
my @nums1;
my @nums2;
# assign numbers correctly
while (<$in>) {
my $trimmed = $_;
$trimmed =~ s/\n//g;
my @parts = split(/\s{3}/, $trimmed);
push(@nums1, $parts[0]);
push(@nums2, $parts[1]);
}
my @sorted1 = sort(@nums1);
my @sorted2 = sort(@nums2);
my $total_length = scalar @sorted1;
#foreach my $i (0..$total_length - 1) {
# print "$sorted1[$i] $sorted2[$i]\n"
#}
my $result = 0;
my $similarity = 0;
foreach my $i (0..$total_length - 1) {
if ($sorted1[$i] > $sorted2[$i]) {
my $distance = $sorted1[$i] - $sorted2[$i];
$result = $result + $distance;
} elsif ($sorted1[$i] < $sorted2[$i]) {
my $distance = $sorted2[$i] - $sorted1[$i];
$result = $result + $distance;
}
my @filtered = grep(/$sorted1[$i]/, @sorted2);
my $numitems = scalar @filtered;
$similarity += $sorted1[$i] * $numitems;
}
print "Total distance: $result\n";
print "Total similarity: $similarity\n";