User since
2008-07-29
4
Artikel
BenutzerIn
Hallo zusammen,
ich möchte ein Array in vierer Schritten sortieren.
Also aus:
(1,3,4,2,2,3,4,1)
soll
(1,2,3,4,1,2,3,4)
werden
Wie mach ich das in Perl ohne alles nochmal in einzeln in ein Arrays einzulesen?
Gruß
Bluescreen
User since
2008-05-02
69
Artikel
BenutzerIn
QuoteWie mach ich das in Perl ohne alles nochmal in einzeln in ein Arrays einzulesen?
Du kannst ja irgendwie mit arrayslices arbeiten. Musst ja nicht gleich neue Arrays erstellen.
edit:
irgendwie so:
my @a = (1, 6, 3, 4, 9, 2, 5, 1, 6, 3, 2, 9);
for (my $i = 0; $i <= $#a; $i += 4) {
print sort @a[map {$_ + $i} (0 .. 3)];
}
User since
2008-07-29
4
Artikel
BenutzerIn
Kannst du mir mal ein Beispiel dazu erstellen das Array oben schrittweise sortieren kann ?
User since
2008-07-29
4
Artikel
BenutzerIn
Ok, Danke mit Zahlen funktioniert es schonmal. Jetzt kommt der konkrete Anwendungsfall der mir die Kopfschmerzen bereitet.
Das Array besteht aus mehrere hundert solcher vierer Blöcke:
3 00:0B:3B:42:64:E9 5[9[@+Q6cKgB 06:04:51
1 00:0B:3B:42:65:E6 R1Q!Sw#dVdH= 06:04:51
2 00:0B:3B:42:65:F0 R1Q!Sw#dVdH= 06:04:51
4 00:0B:3B:42:64:5B 5[9[@+Q6cKgB 06:04:51
Die sollen jetzt in vierer schritten sortiert werden, so das nacher so was da steht
1 00:0B:3B:42:65:E6 R1Q!Sw#dVdH= 06:04:51
2 00:0B:3B:42:65:F0 R1Q!Sw#dVdH= 06:04:51
3 00:0B:3B:42:64:E9 5[9[@+Q6cKgB 06:04:51
4 00:0B:3B:42:64:5B 5[9[@+Q6cKgB 06:04:51
Es soll nach der Zahl am Anfang sortiert werden.
Gruß
Bluescreen
User since
2008-05-02
69
Artikel
BenutzerIn
Diese Anforderung ist nicht kongruent mit deiner initialen Problembeschreibung.
Du willst quasi, dass die 4-er Arrayslices intakt bleiben und jeweils nach dem ersten Element sortieren.
edit:
quasi:
my @a = qw(3 00:0B:3B:42:64:E9 5[9[@+Q6cKgB 06:04:51
1 00:0B:3B:42:65:E6 R1Q!Sw
2 00:0B:3B:42:65:F0 R1Q!Sw
4 00:0B:3B:42:64:5B 5[9[@+Q6cKgB 06:04:51
);
my @b;
for (my $i = 0; $i <= $#a; $i += 4) {
push @b, join " ", @a[map {$_ + $i} (0 .. 3)];
}
print "$_\n" for sort @b
Aber da würde man dann schon wieder über ein "extra" Array gehen. (Außerdem werden aus den kleinen "4er-Arrays" jeweils einzelne Strings...)
User since
2008-07-29
4
Artikel
BenutzerIn
Hat sich bereits erledigt. Funktioniert jetzt.
Dankeschön :-)
User since
2006-01-27
3890
Artikel
HausmeisterIn
Crosspost zu:
http://www.perlboard.de/cgi-bin/perlboard.pl?actio...
Hat Dir
asphalts Lösung weitergeholfen? Wenn ja, warum erhält er keine Antwort?
Wenn Du schon nicht in der Lage bist, Deine Crossposts zu kennzeichnen, dann solltest Du wenigstens in allen Foren, wo Du diese Frage gestellt hast, den Hinweis posten, dass das Problem gelöst ist (vor allem wie; es reicht ja ein Link auf den entsprechenden Lösungshinweis)...
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!