43 lines
1,016 B
Perl
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";
|