Schrift
[thread]8051[/thread]

zufallsnamengenerator: rätsel der stunde



<< >> 7 Einträge, 1 Seite
lichtkind
 2006-06-03 08:51
#66968 #66968
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
ich hab was geschrieben das geht so
Code: (dl )
1
2
$name .= chr 65 + int rand 26 for 1..3 + int rand 3;
print $name;


schreibt man es so

Code: (dl )
print $name .= chr 65 + int rand 26 for 1..3 + int rand 3;


macht es was ganz anderes. und es ist nichtmal trivial warum. ich halt es für ein interessantes rätsel der woche. also bitte nicht gleich verraten.
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
Linuxer
 2006-06-03 12:47
#66969 #66969
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hi,
ich erahne es ;o)
Was soll man denn machen mit der vermuteten Lösung?
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!
lichtkind
 2006-06-03 17:52
#66970 #66970
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
wir können es ja irgendwo in der wiki ablegen,

oder vorsichtige andeutungen machen\n\n

<!--EDIT|lichtkind|1149342885-->
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
vayu
 2006-06-05 14:44
#66971 #66971
User since
2005-01-13
782 Artikel
BenutzerIn
[default_avatar]
und was ist nun des rätsels lösung? :)
Thorium
 2006-06-06 01:32
#66972 #66972
User since
2003-08-04
232 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hier einen Tipp, da ich nicht weiss wo im Wiki ihr das Zeug eingetragen habt:
[color=lightgray]In Perl haben Rückgabewerte eine besondere Bedeutung...[/color]
Per|li|nist der; -en, -en <zu ↑...ist>: a) Anhänger, Vertreter der radikalen Perlinisten die Perl als die einzig wahre Sprache ansehen; b) Mitglied einer perlinistischen Community.
sid burn
 2006-06-06 02:04
#66973 #66973
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Irgendwie verstehe ich die ganze Problematik nicht so ganz.

Einmal wird ein "print" immer innerhalb der for Schleife aufgerufen. print wird also öfters aufgerufen, und bei jeden Schleifendurchlauf wird das Ergebnis geprinted. Also print wird 3-5 mal aufgerufen.

Und bei der zwei zeilenversion kommt das print erst nach der for Schleife. Also wenn der String bereits fertig zusammen gesetzt ist, erst dann wird der String geprinted. ...

Ist ja auch klar das dann dabei etwas anderes heraus kommt. Du machst ja auch etwas anderes. Und trivial finde ich es ebenso. ???

Vielleicht wird es mit einem zusätzlichen Newline ersichtlicher...
Code: (dl )
print $name .= chr 65 + int rand 26, "\n" for 1..3 + int rand 3;


Ausgabe:
Code: (dl )
1
2
3
4
5
J
JT
JTM
JTMR
JTMRX
\n\n

<!--EDIT|sid burn|1149545736-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
Linuxer
 2006-06-06 15:45
#66974 #66974
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Jo, ist auch trivial und springt sofort ins Auge ... :ghostface:

Besser finde ich es zu erklären, wenn man sich die Mühe macht und schreibt den Code um als klassische Schleife mit passender Klammerung; dann wird es wirklich klar, was passiert.

Nach nun drei Tagen bin ich so frei, das eben geschriebene umzusetzen und meine Lösung hier nun anzugeben:

Code (perl): (dl )
1
2
$name .= chr 65 + int rand 26 for 1..3 + int rand 3;
print $name;


wird zu
Code (perl): (dl )
1
2
3
4
for ( 1 .. 3 + int rand 3 ) {
  $name .= chr 65 + int rand 26;
}
print $name;


und
Code (perl): (dl )
print $name .= chr 65 + int rand 26 for 1..3 + int rand 3;


wird zu
Code (perl): (dl )
1
2
3
for ( 1 .. 3 + int rand 3 ) {
  print $name .= chr 65 + int rand 26;
}
\n\n

<!--EDIT|Linuxer|1149594359-->
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!
<< >> 7 Einträge, 1 Seite



View all threads created 2006-06-03 08:51.