Zufälliger Ticket Code Generator

18

Eine Lotteriegesellschaft möchte eine zufällige Lotterielosnummer mit einer Länge von 10 Zeichen generieren.

Schreiben Sie einen Code in einer beliebigen Sprache, um eine solche Zahl zu erstellen, bei der jede Ziffer nur einmal vorkommt. 9354716208In dieser Zahl kommen beispielsweise alle Ganzzahlen von 0 bis 9 nur einmal vor. Diese Nummer sollte eine Zufallszahl sein.

  • Die generierte Nummer sollte auf dem Bildschirm angezeigt werden.
  • Es muss in der Lage sein, alle Permutationen aller zulässigen Zeichen zu generieren.
  • Der Code muss so klein wie möglich sein (in Byte).
Ankush
quelle
3
Warum sollte es in Java oder PhP sein?
Fabinout
4
Im Allgemeinen ist es eine gute Idee, jede Sprache gemäß der Code-Golf- Beschreibung zuzulassen .
Konrad Borowski
10
Wie kommt es, dass eine der längsten und am wenigsten golfenen Antworten (die SQL-Antwort) ohne Zeichenanzahl als akzeptierte Antwort im Code-Golf gilt, wenn Leute wie @Howard 5 oder 8 Zeichen haben?
Darren Stone
1
Ja, @marinus hat eine 4-Byte-Lösung (meine ist 6 Bytes)
Timtech
4
-1 Die Auswahl des Gewinners ist nicht korrekt, da dies eine Code-Golf-Herausforderung war.
DavidC

Antworten:

41

J (4 Bytes)

Konnte nicht widerstehen.

?~10

In J ist, wenn Fdyadisch F~ xist, dasselbe wie x F x.

Marinus
quelle
3
+1 Ich denke, ich muss vielleicht etwas knapperes als Python ausprobieren, um das zu übertreffen.
Joachim Isaksson
Ermöglicht dies ein Passwort, das mit Null beginnt? Gemäß den Regeln muss das Programm "in der Lage sein, alle Permutationen aller zulässigen Zeichen zu generieren"
DavidC
@ DavidCarraher: ja. Es werden 10 sich nicht wiederholende Zufallszahlen aus dem Intervall ausgewählt [0..10), sodass im Grunde eine zufällige Permutation von '0123456789' gemeint ist.
Marinus
1
Aha. Ich habe dies angesprochen, weil in den meisten Sprachen die "Nummer" 0123456789 automatisch in das Formular 123456789 geändert wird. Die Zeichenfolge "0123456789" bleibt unberührt. Meine Frage lautet also wirklich: Ist Ihre Ausgabe eine Zahl oder eine Zeichenfolge?
DavidC
@ DavidCarraher Es ist ein Array.
Swish
12

J, 5 Zeichen und APL, 8 Zeichen

J

10?10

J hat den eingebauten Deal Operator ( ?). Wir können also 10 von 10 nehmen ( 10?10).

APL

1-⍨10?10

APL hat den gleichen Operator, der leider mit eins anstelle von null beginnt. Wir subtrahieren daher eine von jeder Nummer ( 1-⍨XMittelwert X-1aufgrund des Pendlerbetreibers).

Howard
quelle
Oh, wow, das ist schön.
Konrad Borowski
Wenn OP speziell nach der Nummer und nicht nach einem Array gefragt hätte, sollten Sie diese ebenfalls in base10-Nummer konvertieren, mit10#.
swish
Sie können davon ausgehen, ⎕IO←0dass Sie keinen subtrahieren müssen. Sowohl für J als auch für APL können Sie mit commute ein Byte speichern, ?~10und ?⍨10da die monadische Anwendung der abgeleiteten Funktion das rechte Argument auch als linkes Argument verwendet. Beachten Sie jedoch, dass dadurch der J-Code mit dem von Marinus identisch wird .
Adám
9

Python 2.7 ( 64 63 57)

Keine Chance hier im Vergleich zu den schweren Sprachen des Betreibers und wegen des Mangels an standardmäßig geladenem Zufall :) Dies ist die kürzeste, die ich mir einfallen lassen konnte;

from random import*
print''.join(sample("0123456789",10))

Es wird ein Bereich erstellt und 10 Nummern ohne Ersatz abgetastet.

(Danke an @xfix für das kürzere Importformat und @blkknght für den Hinweis auf meinen etwas überkomplizierten Sampling-Bereich)

Python 2.7 (40)

Wenn Sie es über die interaktive Eingabeaufforderung ausführen und durch Kommas getrennt lesen können, können Sie es auf 40 setzen.

from random import*
sample(range(10),10)
Joachim Isaksson
quelle
1
Mit können Sie from random import*ein Zeichen speichern. Das sieht aus wie meine Perl 6-Lösung, ist aber ausführlicher, aber es ist großartig zu sehen, dass so etwas in Python funktionieren kann, auch wenn es ausführlicher ist.
Konrad Borowski
@xfix Ja, leider sind die Module in Python ein bisschen ausführlich, um sie im Vergleich zu bekommen :) Aktualisiert mit Ihrem Import-Fix, ganz neu in der Golfsache, also nicht bis zu "par" in meinen Redewendungen.
Joachim Isaksson
Sie können ein paar weitere Zeichen speichern, indem Sie die Zeichenfolge abtasten, "0123456789"anstatt die Zuweisung von rangeund zu verwenden str.
Blckknght
@Blckknght Danke, aktualisiert mit Ihrem Vorschlag :)
Joachim Isaksson
8

PHP, 29 Zeichen

<?=str_shuffle('0123456789');

Bei PHP ist das schließende Tag nicht erforderlich. Aber wenn das gegen die Regeln verstößt, können Sie es ersetzen. mit?> für 1 nettoerhöhung.

James S
quelle
Du hast mich zu dieser Lösung geschlagen.
Shaun Bebbers
8

Rubin, 18

Führen Sie dies in irb:

[*0..9].shuffle*''

Wenn Sie möchten, dass dies ein eigenständiges Programm ist, dessen Ausgabe an stdout(die Regeln scheinen dies nicht zu erfordern ), fügen Sie zu Beginn die folgenden 4 Zeichen hinzu:

$><<
Darren Stone
quelle
Sie können verkürzen (0..9).to_azu [*0..9].
Howard
Fertig, Sir. Vielen Dank!
Darren Stone
Bitte. Aber warum benutzt du das überhaupt nicht [*0..9].shuffle?
Howard
@Howard, weil es spät ist und ich dumm bin. :) Vielen Dank!
Darren Stone
Dieses Rückgabearray mit der Nummer nicht der Nummer
8

PHP - 37 Zeichen

<?=join('',array_rand(range(0,9),10))

Ich hatte eine 18-Zeichen-Lösung, die theoretisch funktionieren sollte, aber PHP ist komisch.

Oder, wenn Sie eine xkcd-Antwort wünschen:

<?="5398421706" // Chosen by program above; guaranteed to be random ?>

EDIT: Danke xfix, es ist jetzt 5 Zeichen kürzer und vollständig. WIEDER BEARBEITEN: Live-Beispiel .

cjfaure
quelle
Schreiben Sie ein komplettes Programm, anstatt nur komplette Teile. Auch echobraucht nicht Pars, und wenn echodie erste Anweisung im Programm ist, können Sie ersetzen <?php echomit <?=. Auch joinist ein Alias ​​für implode.
Konrad Borowski
@ xfix Danke, ich werde reparieren. :)
cjfaure
Du brauchst nicht mal das <?=und ?>. Es ist gültiger PHP-Code ohne diese.
Jeremy
@ Jeremy Der Golf erfordert, dass die Nummer angezeigt wird; außerdem echo ist die gleiche Länge wie <?=und ?>kombiniert, und ohne die, es funktioniert nicht in Codepad. Trotzdem danke. : P
cjfaure
1
@ Jeremy Ah, PHP, wo nicht eingebettete Implementierungen neben einem Terminal rar sind. : P
cjfaure
8

Perl 6 (18 16 Zeichen)

print pick *,^10

Dies erzeugt ein Array mit allen zufälligen Elementen ( pick *) von 0bis 9und gibt das Ergebnis ( print) aus.

Beispielausgabe:

$ perl6 -e 'print pick *,^10'
4801537269
$ perl6 -e 'print pick *,^10'
1970384265
$ perl6 -e 'print pick *,^10'
3571684902
Konrad Borowski
quelle
+1 Ich glaube, du brauchst vorher kein Leerzeichen pick.
Howard
1
@Howard: Ich brauche es eigentlich. [~](Wird gemäß Perl 6-Grammatik als Listop analysiert) erfordert ein Leerzeichen (oder eine Paren-Anweisung), wenn Argumente enthalten sind. Andernfalls beschwert sich der Perl 6-Compiler über "zwei Terme hintereinander". In älteren Versionen von Perl 6 wurde es nicht benötigt, aber das ist Vergangenheit. An Perl 6 wird noch gearbeitet.
Konrad Borowski
1
@ Xfix: Verwenden Sie printanstelle von say [~]und speichern Sie 2 Zeichen :)
Ayiko
@ Ayiko: Danke für eine Verbesserung :).
Konrad Borowski
7

GolfScript, 12 Zeichen

10,{;9rand}$

Erzeugt einfach die Liste der Ziffern ( 10,) und sortiert sie{...}$ nach zufälligen Schlüsseln - was eine zufällige Reihenfolge der Ziffern ergibt.

Beispiele ( online versuchen ):

4860972315

0137462985
Howard
quelle
Ich wollte folgendes posten: P
Doorknob
Das ist irgendwie ein Mist Shuffle, aber: zum Beispiel die erste Stelle etwa drei Mal so wahrscheinlich ist 0 als 1. Ersetzen sein 9randmit 99randWould (meistens) fix , dass; 9.?randwäre praktisch perfekt .
Ilmari Karonen
1
@IlmariKaronen Ich weiß, aber die Frage hat nichts über die Gleichverteilung gesagt.
Howard
6

R (23 Zeichen)

cat(sample(0:9),sep="")

Beispielausgabe:

> cat(sample(0:9),sep="")
3570984216
> cat(sample(0:9),sep="")
3820791654
> cat(sample(0:9),sep="")
0548697132
Djhurio
quelle
6

TI-BASIC, 5 Bytes

randIntNoRep(1,10
Timtech
quelle
Zeigt eher eine Liste als eine Zahl an. Du suchst nach randIntNoRep(0,9:.1sum(Ans10^(cumSum(1 or Ans.
Lirtosiast
2
Ich glaube nicht, dass diese Herausforderung einen Integer-Typ erfordert, sondern nur "Die generierte Nummer sollte auf dem Bildschirm angezeigt werden".
Timtech
Hmm, ich dachte , die Frage nach einer Reihe fragte (wie auch andere , aber es scheint die Absicht des Autors Herausforderung wurde nie geklärt einige andere Lösungen als Liste ausgegeben (J und APL) auf jeden Fall..
lirtosiast
Ich würde das nicht annehmen, wenn ich nicht sicher wäre, da diese Methode kürzer ist.
Timtech
5

Oktave (14)

randperm(10)-1

randperm schafft leider eine auswahl von 1..n, also muss man am ende 1 subtrahieren um 0-9 zu bekommen.

Joachim Isaksson
quelle
5

In SQL Server

DECLARE @RandomNo varchar(10)
SET @RandomNo = ''

;WITH num as (
SELECT 0 AS [number]
Union 
select 1
Union 
select 2
Union 
select 3
Union 
select 4
Union 
select 5
Union 
select 6
Union 
select 7
Union 
select 8
Union 
select 9
)
SELECT Top 9 @RandomNo = COALESCE(@RandomNo + '', '') + cast(n.number AS varchar(1))
FROM numbers n
ORDER BY NEWID()

SELECT cast(@RandomNo AS numeric(10,0))

Siehe Demo

ODER etwas Ähnliches (mit freundlicher Genehmigung von @manatwork) unter Verwendung von Rekursion und XML.

with c as(select 0i union all select i+1from c where i<9)select i+0from c order by newid()for xml path('')
vhadalgi
quelle
1
Mann, du liebst CTEs… Aber da es sich um eine Code-Golf- Herausforderung handelt, kürze sie besser so weit wie möglich ab. Meine beste ist 186 Zeichen: select i+0from(select 0i union select 1union select 2union select 3union select 4union select 5union select 6union select 7union select 8union select 9)f order by newid()for xml path(''). (Übrigens, großer Trick das newid().)
manatwork
1
Ok, du hast recht. Ist kürzer mit CTE. 106 Zeichen: with c as(select 0i union all select i+1from c where i<9)select i+0from c order by newid()for xml path('').
Manatwork
Sie können die CTE vereinfachen mit(VALUES (1),(2),...)
ypercubeᵀᴹ
5

Javascript ( 79 78 68 Zeichen)

Anstatt ein Array mit den Zahlen 0-9 zu erstellen und zu sortieren, habe ich mich entschieden, Zufallszahlen zu generieren. Wenn eine Nummer gefunden wurde, die noch nicht im Array enthalten war, wurde sie hinzugefügt. Dies wird zehnmal wiederholt und alarmiert dann die Ausgabe.

for(a="";!a[9];){~a.indexOf(b=~~(Math.random()*10))||(a+=b)}alert(a)

scribblemaniac
quelle
Sie können 1 Byte durch ||Kurzschlussauswertung einsparen, anstatt ifwie for(a="";!a[9];){b=Math.floor(Math.random()*10);~a.indexOf(b)||(a+=b)}alert(a)
folgt vorzugehen
1
@StevenPalinkas Danke, tolle Idee! Ich habe den Beitrag entsprechend aktualisiert.
scribblemaniac
Wir könnten auch 2 Bytes mit ein bisschen Neuordnung im Code sparen:for(a="";!a[9];){~a.indexOf(b=Math.floor(Math.random()*10))||(a+=b)}alert(a)
Steven Palinkas
Wir können zusätzliche 8 Bytes mit der "Kurzform" für Math.floor wie folgt speichern:for(a="";!a[9];){~a.indexOf(b=~~(Math.random()*10))||(a+=b)}alert(a)
Steven Palinkas
4

Mathematica, 27

Row@RandomSample@Range[0,9]

Bildbeschreibung hier eingeben

Ajasja
quelle
Nizza Weg, um Zeichenfolgen zu vermeiden!
DavidC
4

Shell / Coreutils, 23

shuf -i0-9|paste -sd ''
Hasturkun
quelle
Wenn wir keinen abschließenden Zeilenumbruch benötigen, können Sie diesen mitshuf -i0-9|tr -d \\n
joeytwiddle 22.01.14
was ist mitshuf -zi0-9
marcosm
@marcosm: Das gibt dir Zeilen, die mit Nullen abgeschlossen sind, was etwas seltsam ist.
Hasturkun
4

JavaScript, 82 Zeichen

BEARBEITEN: Dank Rob W wird die Codelänge auf 90 Zeichen reduziert.

BEARBEITEN: Dank George Reith wird die Codelänge auf 82 Zeichen reduziert (mit for-Schleife).

Ganz einfach: Wählen Sie ein zufälliges Element des [0,1,2,3,4,5,6,7,8,9]Arrays und hängen Sie es an die Ausgabe an. Reduzieren Sie dann das Array und wiederholen Sie die Wiedergabe.

Alte Version (106 Zeichen):

a=[0,1,2,3,4,5,6,7,8,9],l=11,t="";while(--l){r=Math.floor(Math.random()*l);t+=a[r];a.splice(r,1);}alert(t)

Lesbare Version:

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], l = 10,t = "";
while(l--) {
  r = Math.floor(Math.random() * l);
  t += a[r];
  a.splice(r, 1);
}
alert(t);

Bessere Version (90 Zeichen):

a="0123456789".split(t=""),l=11;while(--l)t+=a[r=0|Math.random()*l],a.splice(r,1);alert(t)

Letzte Version (82 Zeichen):

a="0123456789".split(t='');for(l=11;--l;t+=a.splice(0|Math.random()*l,1));alert(t)

JSFiddle: http://jsfiddle.net/gthacoder/qH3t9/ .

gthacoder
quelle
1
Ich golfed Ihre Methode , um 90 Zeichen nach unten: a='0123456789'.split(t=''),l=10;while(l--)t+=a[r=0|Math.random()*l],a.splice(r,1);alert(t). Math.random(x)Schnäppchenjäger : === 0|x. Ersetzen Sie geschweifte Klammern und Semikolons durch Kommas. Verwenden Sie das Ergebnis einer Zuweisung direkt als Wert, anstatt eine Zwischenvariable zu verwenden. Zum Schluss initialisieren Sie das ursprüngliche Array mit .split(r=''). Dies ist kürzer als das Erstellen eines Arrays mit Array-Literalen und das Zuweisen des Zeichenfolgenwerts in einem separaten Ausdruck.
Rob W
@RobW Danke für die Tipps. Ich habe meine Antwort aktualisiert. PS Du hast es wohl gemeint Math.floor(x) === 0|x.
gthacoder
1
Dies hat immer 9 am Ende. Um das Problem zu beheben, initialisieren l=11und ändern Sie Ihre while-Schleife aufwhile(--l)
Greg
@ Greg Guter Punkt. Vielen Dank. Ich habe die Antwort aktualisiert.
gthacoder
1
82 Zeichen: a="0123456789".split(t='');for(l=11;--l;t+=a.splice(0|Math.random()*l,1));alert(t)- Ihr Code passt perfekt in Argumente für Initialisierung, Bedingung und Ausdruck von for-Schleifen. Die rVariable ist redundant.
George Reith
4

145 Bytes

Ungolfed

using System;
using System.Linq;
class P
{
    static void Main()
    {
        Enumerable.Range(0,10).OrderBy(g => Guid.NewGuid()).ToList().ForEach(Console.Write);
    }
}

Golf gespielt

using System;using System.Linq;class P{static void Main(){Enumerable.Range(0,10).OrderBy(g => Guid.NewGuid()).ToList().ForEach(Console.Write);}}
JMK
quelle
1
Sie können verwenden Enumerable.Range(0,10), und Sie brauchen nicht die geschweiften Klammern in der foreachSchleife.
Rik
3

JavaScript (80 Zeichen)

alert("0123456789".split("").sort(function(){return .5-Math.random()}).join(""))

JS-Fiddle: http://jsfiddle.net/IQAndreas/3rmza/

IQAndreas
quelle
3
Beachten Sie, dass Sie mit einer Pfeilfunktion weiter Golf spielen können (die derzeit nur in FF funktioniert, aber in Kürze für Dolmetscher überall alert("0123456789".split("").sort(n=>.5-Math.random()).join(""))
verfügbar
1
Du brauchst kein Leerzeichen zwischen returnund.5
Tibos
1
@ Greg Shhhh! Wissen Sie, wie viele Zeichen eine echte Mischfunktion benötigt? ;)
IQAndreas
1
@Greg Es ist eine zufällige Verteilung (vorausgesetzt, Math.random ist ausreichend zufällig), es ist nur keine einheitliche.
SuperJedi224
1
Der ursprüngliche Blog-Beitrag ist weg und fügt das Internet-Archiv für die Nachwelt hinzu: web.archive.org/web/20150212083701/http://sroucheray.org/blog/…
Greg
3

K / Kona (6)

-10?10

Ist wie bei J ?der Deal-Operator; Das -zwingt die Werte, sich nicht zu wiederholen.

Kyle Kanos
quelle
3

Mathematica 40

Die Nummer wird als Zeichenfolge erstellt, damit bei Bedarf Null als erstes Zeichen angezeigt werden kann.

""<>RandomSample["0"~CharacterRange~"9"]

Ausgabebeispiele

0568497231
6813029574

Erläuterung

"0"~CharacterRange~"9" ist eine Infixnotation für "CharacterRange [" 0 "," 9 "]". Beides gibt die Liste zurück, {"0", "1", "2", "3", "4", "5", " 6, 7, 8, 9}.

RandomSample[list]Standardmäßig wird eine Permutation der Liste zurückgegeben. (Es kann auch für andere Arten der Abtastung verwendet werden, wenn Parameter enthalten sind. ZB RandomSample[list, 4]wird eine Zufallsstichprobe von 4 Zeichen ohne Wiederholungen zurückgegeben.

DavidC
quelle
Aber warum 0 als erstes Zeichen anzeigen?
Ankush
Laut OP muss das Programm "alle Permutationen aller zulässigen Zeichen erzeugen können".
DavidC
@Ankush Das ist eine Infixnotation, daher ist "0" nicht immer das erste Zeichen.
Ajasja
Ajasja ist richtig. Das Programm kann jede Permutation erzeugen. Ich habe einige Anmerkungen hinzugefügt, um dies zu verdeutlichen.
DavidC
3

Scala, 37

util.Random.shuffle(0 to 9).mkString
soldat motte
quelle
2

Forth, 72

needs random.fs : r ': '0 do i loop 9 for i 1+ random roll emit next ; r

Vielleicht noch Platz zum Golfen, aber Forth machte es schwer. Ich glaube.

Darren Stone
quelle
2

Prolog, 177/302 Zeichen

Ich bin ein Anfänger in Prolog, also ist dies wahrscheinlich nicht der am meisten komprimierte Code.

:- use_module(library(clpfd)).
sort(N) :-
    N = [N0,N1,N2,N3,N4,N5,N6,N7,N8,N9],
    domain([N0],1,9),
    domain([N1,N2,N3,N4,N5,N6,N7,N8,N9],0,9),
    all_different(N),
    labeling([],N).

Kehrt zurück:

| ?- sort2(N).                                         
N = [1,0,2,3,4,5,6,7,8,9] ? ;
N = [1,0,2,3,4,5,6,7,9,8] ? ;
N = [1,0,2,3,4,5,6,8,7,9] ? ;
N = [1,0,2,3,4,5,6,8,9,7] ? ;
N = [1,0,2,3,4,5,6,9,7,8] ? 
yes

Wenn Sie möchten, dass es eine Ganzzahl zurückgibt:

:- use_module(library(clpfd)).
sort(M) :-
    N = [N0,N1,N2,N3,N4,N5,N6,N7,N8,N9],
    domain([N0],1,9),
    domain([N1,N2,N3,N4,N5,N6,N7,N8,N9],0,9),
    all_different(N),
    labeling([],N),
    M is (N0*1000000000)+(N1*100000000)+(N2*10000000)+(N3*1000000)+
         (N4*100000)+(N5*10000)+(N6*1000)+(N7*100)+(N8*10)+N9.

Kehrt zurück:

| ?- sort(N).
N = 1023456789 ? ;
N = 1023456798 ? ;
N = 1023456879 ? ;
N = 1023456897 ? ;
N = 1023456978 ? 
yes

Verwenden Sie stattdessen:

labeling([down],N)

Gibt die Zahlen in umgekehrter Reihenfolge an:

| ?- sort(N).                                        
N = 9876543210 ? n
N = 9876543201 ? n
N = 9876543120 ? n
N = 9876543102 ? n
N = 9876543021 ? 
yes

Im Gegensatz zu einigen anderen Codes gibt dies alle Möglichkeiten zurück (ohne Wiederholungen).

Edu
quelle
2

q / kdb [6 Zeichen]

-10?10

erzeugt 10 eindeutige Zufallszahlen.

Nyi
quelle
2

√ å ı ¥ ® Ï Ø ¿ , 4 Bytes

XrśO

X    › Push 10 to the stack
 r   › Push the range from [1...10]
  ś  › Shuffle the stack
   O › Output the whole stack separated by spaces
Caird Coinheringaahing
quelle
2

Clojure, 42

(println (apply str (shuffle (range 10))))

6209847315

claj
quelle
Die generierte Nummer sollte auf dem Bildschirm angezeigt werden, nicht nur Teile.
Sylwester
2

Javascript, 83 Zeichen

a=[];while(!a[9]){b=Math.floor(Math.random()*10);!a.includes(b)&&a.push(b)}alert(a)

Während des Betriebs, bis das Array 10 Elemente enthält.

Wenn Sie eine Zufallszahl von 0 bis 9 generieren, prüfen Sie, ob das Array diese Zahl enthält, und fügen Sie sie dem Array hinzu.

David
quelle
1
Willkommen auf der Seite! :)
DJMcMayhem
1

Dies ist nicht viel kleiner als die Antwort von JMK, aber hier ist eine etwas kleinere C # -Lösung (135):

using System;
using System.Linq;
class P { 
    static void Main() 
    { 
        Console.Write(string.Join("", "0123456789".OrderBy(g => Guid.NewGuid()))); 
    } 
}

Verdichtet (134):

using System;using System.Linq;class P{static void Main(){Console.Write(string.Join("", "0123456789".OrderBy(g => Guid.NewGuid())));}}

Alternative Version (135):

using System;
using System.Linq;
class P { 
    static void Main() 
    { 
        "0123456789".OrderBy(g => Guid.NewGuid()).ToList().ForEach(Console.Write); 
    } 
}

Verdichtet:

using System;using System.Linq;class P{static void Main(){"0123456789".OrderBy(g => Guid.NewGuid()).ToList().ForEach(Console.Write);}}

Sie sind gleich lang, aber es hängt wirklich nur davon ab, ob Sie die ForEach-Funktion von Linq oder die Join-Funktion von String verwenden möchten. Ich konnte 10 Zeichen in der Länge entfernen, indem ich den Bereich "0123456789" in einer Zeichenfolge buchstabierte, anstatt Enumerable.Range (0, 10) zu verwenden.

Cameron Tinker
quelle
1

LOGO , 64 Zeichen

make "d 1234567890
repeat 10 [
    make "n pick d
    show n
    make "d butmember n d
]

pick gibt einen zufälligen Eintrag aus der angegebenen Liste zurück. butmember gibt eine Liste zurück, in der alle Vorkommen des angegebenen Elements entfernt wurden. Hinweis: Nicht alle Logo-Implementierungen unterstützen den butmemberBefehl.

Sandman4
quelle
1

Schläger 45 43

(map print(shuffle'(0 1 2 3 4 5 6 7 8 9)))
Sylwester
quelle