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";