Thread Gibt es für Zeile x einer Matrix andere Zeilen die ein Subset dieser Zeile sind?
(11 answers)
Opened by leo11 at 2010-10-19 15:06
So nun habe ich verstanden was du machen willst, das geht durchaus kürzer:
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 #!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @index=(); my $pos=0; while(my $line=<DATA>) { chomp($line); next unless($line); (my $compare=$line)=~s/^.+?\s+//; $compare=~s/\s+$//; push(@index,[$pos,$line,[split(/\s+/,$compare)]]); $pos++; } for my $test (@index) { print "TEST: $test->[1]\n"; for my $comp (@index) { # mindestens ein Zahl next unless( grep{$_ ne '-'}@{$comp->[2]} ); # nicht die selbe Zeile next if($test->[0] == $comp->[0]); my $cnt=0; for my $p (0..$#{$test->[2]}) { my $sval=$test->[2]->[$p]; my $dval=$comp->[2]->[$p]; # verkürzte Bedingung :-) $cnt++ if($dval eq $sval || $dval eq '-'); } print " SUBSET: $comp->[1]\n" if($cnt==@{$test->[2]}) } } __DATA__ row18 - 0 0 1 0 0 - - - 0 0 - - - - - - - - - - - - - - - - row19 - 0 0 0 - - - - 1 0 0 - - - - - - - - - - - - - - - - row20 - 0 0 - - - - 1 - 0 0 - - - - - - - - - - - - - - - - row21 - 0 0 - - - - - - 0 0 - - - - 1 0 0 - - - - - - - - - row22 - 0 0 - - - - - - 0 0 - - - - 0 - - - 1 - - - - - - - row23 - 0 0 - - - - - - 0 0 - - - - - - - - - 1 - - - - - - row24 - 0 0 - - - - - - 0 0 - - - - - - - - - - 1 0 0 - - - row25 - 0 0 - - - - - - 0 0 - - - - - - - - - - 0 - - - 1 - row26 - 0 0 - - - - - - 0 0 - - - - - - - - - - - - - - - 1 row27 - 0 0 - - - - - - 1 0 0 - - - - - - - - - - - - - - - row28 - 0 0 - - - - - - 0 - - - - 1 - - - - - - - - - - - - row29 - 0 0 - - - - - - - - - 1 - - - - - - - - - - - - - - row30 1 0 0 - 1 - - - - 0 0 - - - - - - 1 - - - - - - - - - row31 1 0 0 - 1 - - - - 0 0 - - - - - - - - - - - 1 - - - - row32 1 0 0 - 1 - - - - 0 0 - - - - - - 1 - - - - 1 - - - - row33 1 0 0 - - - 1 - - 0 0 - - - - - - - - - - - - - - - - row34 1 0 0 - - - - - - 0 0 - - - - - - - 1 - - - - - - - - row35 1 0 0 - - - - - - 0 0 - - - - - - - - - - - - - 1 - - row36 1 0 0 - - - - - - 0 0 - - - - - - 1 - - - - 1 - - - - row37 1 0 0 - 1 - - - - - 1 - - - - - - 1 - - - - - - - - - row38 1 0 0 - 1 - - - - - 1 - - - - - - - - - - - 1 - - - - row39 1 0 0 - 1 - - - - - 1 - - - - - - 1 - - - - 1 - - - - row40 1 0 0 - - - 1 - - - 1 - - - - - - - - - - - - - - - - row41 1 0 0 - - - - - - - 1 - - - - - - - 1 - - - - - - - - row42 1 0 0 - - - - - - - 1 - - - - - - - - - - - - - 1 - - row43 1 0 0 - - - - - - - 1 - - - - - - 1 - - - - 1 - - - - row44 1 0 0 - - - - - - - - 1 - 1 - - - - - - - - - - - - - row45 - 1 - - - - - - - 1 0 0 - - - - - - - - - - - - - - - row46 - 1 - - - - - - - 0 - - - - 1 - - - - - - - - - - - - row47 - 1 - - - - - - - - - - 1 - - - - - - - - - - - - - - row48 - - 1 - - - - - - 1 0 0 - - - - - - - - - - - - - - - row49 - - 1 - - - - - - 0 - - - - 1 - - - - - - - - - - - - row50 - - 1 - - - - - - - - - 1 - - - - - - - - - - - - - - row51 - 1 0 - - - - - - - - - 0 - - - - - - - - - - - - - - row52 - 0 1 - - - - - - - - - 0 - - - - - - - - - - - - - - row53 - 1 0 - - - - - - - - - - - 0 - - - - - - - - - - - - row54 - 0 1 - - - - - - - - - - - 0 - - - - - - - - - - - - row55 - 1 0 - - - - - - 0 0 - - - - - - - - - - - - - - - - row56 - 0 1 - - - - - - 0 0 - - - - - - - - - - - - - - - - |