Willkommen in der Webstatt Zum Webstatt Blog und Stories
nuit nuit am 14.02.07 23:05

ich bin schon den ganzen Tag an einem Einzeiler den immer kürzer zu kriegen:
echo join(',',array_rand(array_fill(1,49,1),6));
Was er macht:
Er gibt 6 Zufallszahlen im Bereich 1-49 aus wobei keine Zahl doppelt ist.
So...was ich suche....wenn es jemand findet...etwas noch kürzeres :D immo bin ich bei 48 Zeichen....vielleicht hat noch jemand eine idee *g* jedes Zeichen zählt...also wenn jemandem noch was einfällt nur her damit :D

das ganze Codestück hat zwar keinen sinn, aber es ist ein schöner einzeiler *g* und je kürzer desto besser....

also...nur her, fals jemand noch was hat :D

danke, nuit

netcup.de Warum gibt es hier Werbung?
Kevz am 14.02.07 23:25

Zahlen via range auflisten, und dann in ein Separates Array hinzufügen. Dann beim nächsten durchlauf Prüfen ob zahl vorhanden ist =) und des solange bis halt 6x Elemente vorhanden sind *hihi*

nuit nuit am 14.02.07 23:34

ja schon...quasi so:
for($i = 0; $i < 6; in_array($a=rand(1,49),!is_array($b) ? $b = array() : $b) ? --$i : $b[$i++] = $a);
print_r($b)

aber der ist ein Tick länger :P ausserdem unsauberer und schlechter zu lösen, damit hab ich aber unseren lehrer gebashed :D
Das ganze war heute ein Coding Wettbewerb von unserem Lehrer, wer das ganze am kürzesten hinkriegt :D und das war das kürzeste....nun hab ich aber was besseres....aber unter 48 Zeichen komm ich nicht....

edit: ausserdem ist das kein einzeiler, wobei man sicher das print noch in die for schleife mitreinschreiben kann :D

edit: es gäbe noch diese Variante:
echo join(',',array_rand(array_flip(range(1,49)),6));
aber auch diese ist um ein paar Zeichen länger :D wegen dem dummen range :D

edit: grad getestet auch 48 Zeichen....das kann doch nicht sein..diese verteufelte Zahl

Kevz am 14.02.07 23:44

Habe von range gesprochen, nicht von einer for-schleife ò.Ó! Schau dir mal die Funktion range an..., ist zwar des gleiche mit dem auflisten usw. aber würde es Persönlich so bevorzugen. Kannst es auch kürzer machen, schreib ne Funktion ^^

nuit nuit am 14.02.07 23:46

ich kenne die funktion range und benutze sie in den beiden anderen kleinen.....als ich das geschrieben hab, war ich unter Zeitdruck und hab nicht nachgedacht...

aber ich kann mir immer noch nicht vorstellen, dass das kürzer sein soll...man muss die for schleife bzw. die foreach schleife beachten....dann musst du das prüfen....mhh...das wird länger als 48 Zeichen....

die idee von dir hat der lehrer angewendet...und wir sind von einem 2 Zeiler nicht weggekommen...kleiner haben wir es nicht bekommen....

Kevz am 14.02.07 23:56

mhh, ja es ist immer so ne sache der Logik. Ich denke mal da lag dein Lehrer auch nicht falsch... Es ist selbstverständlich das es länger als 48 Zeichen ist... Aber kürzer wirst, es ned bekommen, als deine Lösung =/ Vllt. wäre array_unique noch von vorteil, bez. der Zahlen.

nuit nuit am 15.02.07 00:00

wir haben uns nur um den Speicherbedarf gedanken gemacht....nun gut er hat ein array erzeugt mit boolean werte, nicht so der bedarf....aber wir haben gerechnet dass wir ungefähr gleich gefahren sind....und so speicher ich überhaupt nichts mehr... :D

array_unique? jaa ich bin schon alle durchgegangen...die hab ich mir auch schon intensiv angeschaut...mal schauen vielleicht kommt mir im traum noch eine idee zugeflogen :D

mhh..in php krieg ichs nicht kürzer aber in ruby gings :D sage und schreibe 37 Zeichen :D

puts (1..49).to_a.sort_by{rand}[1..6]
war ein bisschen wälzen aber am ende....mhh...ist eigentlich noch recht gut lesbar :D

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt