my @seen;
foreach my $target (@integer_data_set) {
if(defined($seen[$target]) {
print "Duplicate: $target\n";
next;
}
$seen[$target] = 1;
print "New: $target\n";
}
####
my %seen;
foreach my $target (@string_data_set) {
if (exists($seen{$target}) {
print "Duplicate: $target\n";
next;
}
$seen{$target} = 1;
print "New: $target\n";
}
##
##
sub hash {
my $string = shift;
my $buckets = 100;
my $hash_value = 0;
foreach my $ordinal (map {ord} split(//, $string)) {
$hash_value = ($hash_value + $ordinal) % $buckets;
}
return $hash_value;
}
##
##
sub find {
my ($storage_aref, $needle) {
my $hashed = hash($needle);
if(defined($storage_aref[$hashed)) {
my $found_ix = first_ix {$needle eq $storage_aref->[$hashed]->[$_]->[0]} @{$storage_aref->[$hashed]};
return $storage_aref->[$hashed]->[$found_ix]->[1];
}
return;
}
##
##
$storage_aref = [
[ # Bucket 0.
['string' => 'value'],
['another' => 'other value'],
],
[ # bucket 1.
['something' => 'its value'],
],
[...], # Bucket 2,
...
];