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 2010-10-20T08:55:40 pq Hab ich indirekt ja auch gemacht. Danke für die Info. Ich hatte extra in perlfunc oben in den Listen nachgeschaut, ob es da passende Funktionen gibt (ich konnte mir nicht vorstellen, das es die nicht gibt) und hab' dann u.a. pack ausprobiert. Aber auf oct() wäre ich ohne Deine Hilfe nicht gekommen. Aber jetzt habe ich im Abschnitt zu den bitwise operators in perlop gelesen, dass die auch bei strings funktionieren. Man muss die Muster garnicht in eine Zahl verwandeln. Folgendes funktioniert auch: 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 sub prepare_line($) { my $line = shift; chomp $line; my $l = $line; $l =~ s/^row\d+\s+//; $l =~ s/\s+//g; # Leerzeichen entfernen; $l =~ tr/-/ /; # '-' durch ' ' ersetzen, wg. Bitfilter my $mask = $l; $mask =~ tr/0/1/; # alle Ziffern => '1' return { line => $line, mask => $mask,pattern => $l}; } my @all = map {prepare_line($_)} (<DATA>); foreach my $target (@all) { print "\nTarget:\t\t",$target->{line},"\n"; foreach my $comp (@all) { next if $target->{line} eq $comp->{line}; # gleiche Zeile print "Subset:\t\t",$comp->{line},"\n" if ($target->{pattern} & $comp->{mask}) eq $comp->{pattern}, } } |