Matching algorithms

Torsten Knorr create-soft at tiscali.de
Sun Jun 29 19:49:25 BST 2008


#!/usr/bin/perl -w
#*** compare.pl ***#
#-------------------------------------------------
 use strict;
 use warnings;
#-------------------------------------------------
 my @source = (1, 5, 7);
 my @sets = (
 	[ 1, 3, 6, 7 ],	[1, 5, 7],		['1', '2', '3'],
 	[ 2, 4, 7, 9 ],	[0, 1, 2, 3, 4, 5, 6],	[qw(5 6 7 8)],
 	[ 7, 3, 5, 2 ],	[1, 1, 1, 1, 1, 1],	[(7) x 20],
 	[ 1, 5, 7, 9 ],	[1..10],	[7 x 20],
 	[ 99, 99, 0, 0 ],	[7],	[qw(one two)],
 	);
#-------------------------------------------------
 print("Looking for similarity with: " . join(',', @source) . "\n");
 my $rh_result = CompareSets(\@source, \@sets);
 print(join(',', @{$sets[$_]}) . " = $rh_result->{$_} matchs\n") for(keys(%$rh_result));
#-------------------------------------------------
 sub CompareSets
 	{
 	my ($ra_source, $ra_sets) = @_;
 	my $rh_result;
 	for(my $i = 0; $i <= $#$ra_sets; $i++)
 		{
 		for my $item (@{$ra_sets->[$i]})
 			{
 			$rh_result->{$i} += grep { "$item" eq "$_" } @$ra_source;
 			}
 		}
 	return $rh_result;
 	}
#-------------------------------------------------
# BR Torsten



More information about the london.pm mailing list