Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11707[/thread]

sortieren

Leser: 1


<< >> 3 Einträge, 1 Seite
Andreas
 2008-04-25 16:28
#108869 #108869
User since
2003-09-24
111 Artikel
BenutzerIn
[default_avatar]
Hallo an alle,
ich habe ein Problem mit dem sortieren, und weiss nicht so recht
wie ich es löse.

folgendes möchte ich sortieren:

C1,C12,R5,C3,C21,C2,D12

sort liefert eine alphabetische Sortierung:

C1, C12, C13, C2, C21

ich hätte aber gerne

C1, C2, C12, C13, C21...
Habe mir verschieden Sortscripte angeschaut, aber find keine Lösung für
diese Art der Sortierung.
Wär super wenn einer helfen könnte.

Danke

Gruß
Andreas
Taulmarill
 2008-04-25 16:47
#108872 #108872
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
Folgendes Script zerlegt die einzelnen Elemente erst so, dass sie sortierbar werden, sortiert sie und fügt sie dann wieder zusammen. Nennt sich Schwartzsche Transformation nach Randal Schwartz:
Code: (dl )
1
2
3
4
5
6
my @foo = qw/C1 C12 R5 C3 C21 C2 D12/;
@foo =
map { $_->[0] . $_->[1] }
sort { $a->[0] cmp $b->[0] or $a->[1] <=> $b->[1] }
map { [/(\D*)(\d*)/] } @foo;
print join( ", ", @foo ) . "\n";
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Linuxer
 2008-04-25 16:48
#108873 #108873
User since
2006-01-27
3872 Artikel
HausmeisterIn

user image
Ähnliche Lösung, ebenfalls Schwartzsche Transformation:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl -w
use strict;

my @list = qw( C1 C12 R5 C3 C21 C2 C12 );

my @sort =
    map { $_->[0] }
    sort { $a->[1] cmp $b->[1] || $a->[2] <=> $b->[2] }
    map { [ $_, m/^(\D+)(\d+)/ ] }
    @list;


print "@sort\n";
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
<< >> 3 Einträge, 1 Seite



View all threads created 2008-04-25 16:28.