Webstatt.org - Community seit 2006 - 2012 (2024?)

Noch kürzer....

Avatar user-271
14.02.2007 22: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 Fettes Grinsen 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 Fettes Grinsen

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 Fettes Grinsen

danke, user-271

#!/bin/bash
traurig){ neutral:& };:
user-220
14.02.2007 22:25

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

Avatar user-271
14.02.2007 22: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 frech ausserdem unsauberer und schlechter zu lösen, damit hab ich aber unseren lehrer gebashed Fettes Grinsen
Das ganze war heute ein Coding Wettbewerb von unserem Lehrer, wer das ganze am kürzesten hinkriegt Fettes Grinsen 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 Fettes Grinsen

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 Fettes Grinsen wegen dem dummen range Fettes Grinsen

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

#!/bin/bash
traurig){ neutral:& };:
user-220
14.02.2007 22: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 ^^

Avatar user-271
14.02.2007 22: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....

#!/bin/bash
traurig){ neutral:& };:
user-220
14.02.2007 22: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.

Avatar user-271
14.02.2007 23: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... Fettes Grinsen

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 Fettes Grinsen

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

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 Fettes Grinsen

#!/bin/bash
traurig){ neutral:& };: