in reply to help needed in modifying the code for counting possible combinations
use strict; use warnings; my %pairs; while (<DATA>) { chomp; next if ! length; my @pair = sort split; ++$pairs{$pair[0]}{$pair[1]}; } my $totalHits = 0; my %seconds; for my $first (sort keys %pairs) { for my $second (sort keys %{$pairs{$first}}) { next if $pairs{$first}{$second} <= 1; ++$totalHits; my $previous = grep {exists $pairs{$_}{$first} && exists $pairs{$_}{$seco +nd}} keys %{$seconds{$first}}; ++$seconds{$second}{$first}; next if $previous; print "$first $second\n"; } } print "$totalHits\n"; __DATA__ NP_01 NP_02 NP_02 NP_01 NP_01 NP_03 NP_03 NP_01 NP_02 NP_03 NP_03 NP_02 NP_04 NP_05
Prints:
NP_01 NP_02 NP_01 NP_03 3
Note that I changed YP_01 to NP_01 to avoid inconsistencies between your reported results and the actual results.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: help needed in modifying the code for counting possible combinations
by BhariD (Sexton) on Oct 31, 2009 at 14:40 UTC | |
by GrandFather (Saint) on Oct 31, 2009 at 22:15 UTC | |
by BhariD (Sexton) on Nov 01, 2009 at 01:36 UTC |