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

clms
 2010-10-20 12:22
#142083 #142083
User since
2010-08-29
373 Artikel
BenutzerIn
[default_avatar]
2010-10-20T08:55:40 pq
frag doch einfach =)

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},
  }
}

View full thread Gibt es für Zeile x einer Matrix andere Zeilen die ein Subset dieser Zeile sind?