Thread Terminologie: Sortieren nach anderswo definierter Reihenfolge (6 answers)
Opened by payx at 2014-05-06 09:23

murphy
 2014-05-06 16:09
#175337 #175337
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Deine erste Liste von Elementen (Obermenge) definiert nicht nur eine Partialordnung sondern eine Wohlordnung, es sei denn in Deiner zweiten Liste (Untermenge) können Elemente vorkommen, die nicht in der ersten auftreten (dann wäre sie allerdings keine Untermenge mehr).

Eine Wohlordnung ist eine Vergleichsfunktion, so dass Deine Aufgabe wirklich einfach eine Sortierung mit spezieller Vergleichsfunktion ist.

Du kannst zum Beispiel Raubtiers Code noch ein bischen mehr in funktionalem Stil schreiben, so dass die Eigenschaft der ersten Liste die Definition eines Vergleichsoperators zu sein, klarer zu Tage tritt:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use 5.012;

sub list2order {
  my %index = do {
    my $i;
    map {$_ => ++$i} @_;
  };
  sub {
    $index{$a} <=> $index{$b}
  };
}

use Data::Dumper;
my $order = list2order(qw(R A F U S W));
my @stuff = qw(U F S);

say for sort $order @stuff;
When C++ is your hammer, every problem looks like your thumb.

View full thread Terminologie: Sortieren nach anderswo definierter Reihenfolge