Thread Natürlicher Sort, aber nicht mit @sorted = sort @unsorted
(30 answers)
Opened by Student87 at 2013-02-05 17:52 2013-02-05T20:24:02 Student87 Naja, Du wendest den numerischen Vergleichsoperator <=> auf nicht-numerische Werte ('X' etc.) in $1 an. Code (perl): (dl
)
my @sorted = map{$_->[0]} sort {$a->[1] <=> $b->[1]} map{/chr(\d+)/;$_=[$_,$1]}@unsorted; liest Du am besten rückwärts: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # Schritt 1: # Nimm elementweise vom @unsorted, # extrahiere alles nach 'chr', # speichere das Element und den Extrakt als "Wertepaar" in einem anonymen Array map { /chr(\d+)/; $_ = [$_, $1] } @unsorted; # Schritt 2: # sortiere die Wertepaare (bzw. ihre Referenzen) nach Element 1 (dem Extrakt) sort { $a->[1] <=> $b->[1] } # Schritt 3: # nimm aus den sortierten Wertepaaren nur das erste Element, # mach eine Liste daraus in der Reihenfolge aus Schritt 2 map{ $_->[0] } EDIT Linuxer war schneller ... Last edited: 2013-02-05 22:08:29 +0100 (CET) Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it? -- Brian Kernighan: "The Elements of Programming Style"
|