Schrift
[thread]11782[/thread]

Sort()

Leser: 2


<< |< 1 2 >| >> 11 Einträge, 2 Seiten
taikahn22a
 2008-05-08 22:02
#109462 #109462
User since
2008-04-12
12 Artikel
BenutzerIn
[default_avatar]
Hallo!

Ich möchte gerne mit der Sortfunktion eine Zahlenreihe ordnen nach dem Teilungsrest. Die Zahlenfolge geht von 1 bis 20 und der Rest ergibt sich durch das Teilen von 5.

Habe bisher folgendes aber irgnedwie teilt er dort nicht... Habt ihr einen Tipp`?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
#! perl -w

unshift @array, $_ for 1..20;

@array3=sort({($b/5) <=> ($a/5)}@array);

foreach (@array3)
{
print "$_ ";
}
lichtkind
 2008-05-08 22:19
#109463 #109463
User since
2004-03-22
5680 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
vermute das runden klammern arras bilden die alle gleich lang sind also nichts sortiert werden kann. schon mal so versucht?

Code (perl): (dl )
@array3=sort({$b/5 <=> $a/5}@array);


das ganze geht klar weil in der vorrangtabelle \ wesentlich höher steht als <=>
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
FIFO
 2008-05-08 22:20
#109464 #109464
User since
2005-06-01
469 Artikel
BenutzerIn

user image
Der Teilungsrest ist der Modulus, Operator ist % vgl. perlop, es müsste heißen:

Code (perl): (dl )
1
2
3
4
5
6
use strict;
use warnings;

my @array = (1..20);
my @array3 = sort { $a % 5 <=> $b % 5 } @array;
print @array3;


$a und $b müssen evtl. die Plätze tauschen, je nachdem, ob Du auf- oder absteigend sortieren willst. In Deinem Beispiel taucht jeder Rest ohnehin mehrmals auf, so dass die Sortierung auch durch die Reihenfolge im Ausgangs-Array beeinflusst wird (mehrere Elemente mit gleichem Rest).

[edit: perl-tags]
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"
taikahn22a
 2008-05-08 22:27
#109465 #109465
User since
2008-04-12
12 Artikel
BenutzerIn
[default_avatar]
Mh habe die letze Varainte auch shcon im Sinn gehabt nur bekomm ich als Ergebnis keine Zahlen die mein Rest sind sondern:

19 14 9 4 18 13 8 3 17 12 72 16 11 6 1 20 15 10 5

Soll das irgnedwie meinen Rest darstellen? Kann damit sorechtn nichts anfangen.-.
FIFO
 2008-05-08 22:34
#109466 #109466
User since
2005-06-01
469 Artikel
BenutzerIn

user image
Du hattest gesagt, Du wolltest eine Zahlenreihe nach ihrem Teilungsrest sortieren ... Wenn Du wirklich die Reste sortieren willst:

Code (perl): (dl )
my @array3 = sort { $a <=> $b } map { $_ % 5 } @array;


aber denk dran, dass $_ als Alias Deine @array-Elemente ändert (nur wenn Du $_ im map-Block veränderst) ...
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"
taikahn22a
 2008-05-08 22:59
#109469 #109469
User since
2008-04-12
12 Artikel
BenutzerIn
[default_avatar]
Naja selbst wenn ich es so nehme wie ich es dort habe also das Ergebnis verstehe ich das auch nicht.. Ich weiß nicht wie ich emin Ergbenis interpretieren soll...Wenn ic hdas mauell rechne müsste der erste wert doch 20 sein. aber hier steht 19.. :-( 20 modulo 5 ist bei mir 0... Also muss doch 20 da stehen..oder wie?
FIFO
 2008-05-08 23:08
#109470 #109470
User since
2005-06-01
469 Artikel
BenutzerIn

user image
[edit] NICHT LESEN, IST KOMPLETTER UNFUG[/edit]

Oops, da fehlte noch das '=' nach dem '%', vor lauter Schlaumeierei, versuch mal
Code (perl): (dl )
my @array3 = sort { $a <=> $b } map { $_ %= 5 } @array;
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"
taikahn22a
 2008-05-08 23:09
#109471 #109471
User since
2008-04-12
12 Artikel
BenutzerIn
[default_avatar]
Ja ok ! Aber wie interpretiere ich nun mein Ergebnis welches ich dort oben geshcriben hatte...
FIFO
 2008-05-08 23:18
#109474 #109474
User since
2005-06-01
469 Artikel
BenutzerIn

user image
Code (perl): (dl )
1
2
3
4
5
6
use warnings;
use strict;

my @array = (1..20);
my @array3 = sort { $a <=> $b } map { $_ % 5 } @array;
print join(', ', @array3);


Ausgabe: 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4
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"
FIFO
 2008-05-08 23:23
#109475 #109475
User since
2005-06-01
469 Artikel
BenutzerIn

user image
taikahn22a+2008-05-08 20:27:30--

19 14 9 4 18 13 8 3 17 12 72 16 11 6 1 20 15 10 5

Soll das irgnedwie meinen Rest darstellen? Kann damit sorechtn nichts anfangen.-.


Das sind Deine Ausgangszahlen, absteigend sortiert nach dem % 5, die 20 erscheint hinten bei den Vielfachen von 5 (Rest 0).
Vielleicht versteh ich auch die Frage falsch?
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"
<< |< 1 2 >| >> 11 Einträge, 2 Seiten



View all threads created 2008-05-08 22:02.