Pembuat kode tiket acak

18

Perusahaan lotere ingin menghasilkan jumlah tiket lotre acak dengan panjang 10 karakter.

Tulis kode dalam bahasa apa pun untuk membuat angka di mana setiap digit hanya datang satu kali misalnya 9354716208dalam angka ini semua bilangan bulat dari 0 hingga 9 hanya datang sekali. Nomor ini harus berupa angka acak.

  • Nomor yang dihasilkan harus ditampilkan di layar.
  • Itu harus dapat menghasilkan semua permutasi dari semua karakter yang diijinkan.
  • Kode ini harus sekecil mungkin (dalam byte).
Ankush
sumber
3
Mengapa harus di Jawa atau PhP?
Fabinout
4
Secara umum, ada baiknya untuk mengizinkan bahasa apa pun, sesuai dengan deskripsi kode-golf .
Konrad Borowski
10
Bagaimana salah satu jawaban terpanjang dan paling tidak golf (jawaban SQL), bahkan tanpa hitungan char, berdiri sebagai jawaban yang diterima dalam kode-golf ketika orang-orang seperti @Howard memiliki 5 atau 8 jawaban karakter?
Darren Stone
1
Ya, @marinus memiliki solusi 4 byte (milik saya adalah 6 byte)
Timtech
4
-1 Pemilihan pemenang tidak tepat, mengingat ini adalah tantangan kode-golf.
DavidC

Jawaban:

41

J (4 byte)

Tidak bisa menolak.

?~10

Dalam J, jika Fdiad, F~ xsama dengan x F x.

marinus
sumber
3
+1 Saya pikir saya mungkin harus mencoba sesuatu yang sedikit lebih pendek daripada Python untuk mengalahkan ini.
Joachim Isaksson
Apakah ini memungkinkan untuk kata sandi yang dimulai dengan nol? Menurut aturan, program "harus dapat menghasilkan semua permutasi dari semua karakter yang diizinkan"
DavidC
@ Davidvidarraher: ya. Ini memilih 10 angka acak yang tidak berulang dari interval [0..10), sehingga pada dasarnya berarti permutasi acak '0123456789'.
marinus
1
Saya melihat. Saya mengangkat ini karena di sebagian besar bahasa, "angka", 0123456789, secara otomatis akan diedit ke bentuk 123456789. String, "0123456789", tetap tidak tersentuh. Jadi pertanyaan saya adalah ini: apakah output Anda berupa angka atau string?
DavidC
@ Davidvidarrarrer Ini adalah array.
desir
12

J, 5 karakter dan APL, 8 karakter

J

10?10

J memiliki operator kesepakatan bawaan ( ?). Dengan demikian, kita dapat mengambil 10 dari 10 ( 10?10).

APL

1-⍨10?10

APL memiliki operator yang sama yang sayangnya dimulai dengan satu alih-alih nol. Karena itu kami mengurangi satu dari setiap angka ( 1-⍨Xberarti X-1karena operator bolak-balik).

Howard
sumber
Oh, wow, bagus sekali.
Konrad Borowski
Jika OP akan meminta secara khusus untuk nomor bukan array, Anda harus mengubahnya ke nomor base10 juga, dengan10#.
desir
Anda dapat berasumsi demikian ⎕IO←0sehingga Anda tidak perlu mengurangi satu. Juga, untuk J dan APL, Anda dapat menggunakan komuter untuk menyimpan byte dengan ?~10dan ?⍨10karena aplikasi monadik dari fungsi turunan menggunakan argumen kanannya juga sebagai argumen kiri. Namun demikian, ini membuat kode J identik dengan Marinus .
Adám
9

Python 2.7 ( 64 63 57)

Tidak ada kesempatan di sini dibandingkan dengan operator bahasa yang berat dan karena kurangnya default dimuat secara acak :) Ini adalah yang terpendek yang bisa saya buat;

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

Ini menciptakan rentang dan sampel 10 angka dari itu tanpa penggantian.

(Terima kasih kepada @xfix untuk perbaikan format impor yang lebih pendek dan @blkknght untuk menunjukkan rentang pengambilan sampel yang agak rumit).

Python 2.7 (40)

Jika Anda menjalankannya dari prompt interaktif dan dapat membaca koma yang dipisahkan, Anda dapat mencukurnya menjadi 40, tetapi rasanya agak seperti melanggar semangat aturan;

from random import*
sample(range(10),10)
Joachim Isaksson
sumber
1
Anda dapat menggunakannya from random import*untuk menyimpan satu karakter. Ini terlihat seperti solusi Perl 6 saya, tetapi lebih banyak bertele-tele, tetapi sangat bagus untuk melihat bahwa sesuatu seperti ini dapat bekerja dengan Python, bahkan jika lebih bertele-tele.
Konrad Borowski
@ Memperbaiki Ya, sayangnya modul-modul dengan Python agak bertele-tele untuk dibandingkan dengan :) Perbarui dengan perbaikan impor Anda, cukup baru untuk hal golf sehingga tidak sampai "par" pada idiom saya.
Joachim Isaksson
Anda dapat menyimpan lebih banyak karakter dengan mengambil sampel dari string "0123456789"daripada menggunakan rangedan memetakannya str.
Blckknght
@ Blckknght Terima kasih, diperbarui dengan saran Anda :)
Joachim Isaksson
8

PHP, 29 karakter

<?=str_shuffle('0123456789');

Dengan PHP, tag penutup tidak diperlukan. Tetapi jika itu melanggar aturan, maka Anda dapat mengganti; dengan?> untuk 1 kenaikan bersih.

James S
sumber
Anda mengalahkan saya untuk solusi ini.
Shaun Bebbers
8

Ruby, 18

Jalankan ini di irb:

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

Jika Anda ingin ini menjadi program yang berdiri sendiri, dengan output ke stdout(aturan tampaknya tidak mengharuskan ini), kemudian tambahkan 4 karakter ini di awal:

$><<
Darren Stone
sumber
Anda dapat mempersingkat (0..9).to_amenjadi [*0..9].
Howard
Dilakukan dan dilakukan, tuan. Terima kasih!
Darren Stone
Sama-sama. Tapi mengapa Anda tidak menggunakannya [*0..9].shuffle?
Howard
@ Howard, karena sudah larut dan saya bodoh. :) terima kasih!
Darren Stone
array pengembalian ini dengan nomor bukan angka
8

PHP - 37 Karakter

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

Saya punya solusi 18-karakter yang secara teori seharusnya berfungsi tetapi PHP aneh.

Atau, jika Anda menginginkan jawaban xkcd:

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

EDIT: Terima kasih xfix, sekarang 5 karakter lebih pendek dan lengkap. EDIT LAGI: Contoh langsung .

cjfaure
sumber
Tulis program yang lengkap, bukan hanya bagian yang lengkap. Juga, echotidak perlu parens, dan jika echopernyataan pertama dalam program, Anda dapat menggantinya <?php echodengan <?=. Juga, joinadalah alias untuk implode.
Konrad Borowski
@ Memperbaiki Terima kasih, saya akan memperbaiki. :)
cjfaure
Anda bahkan tidak perlu <?=dan ?>. Itu kode PHP yang valid tanpa itu.
jeremy
@ Jeremy Golf mengharuskan nomor ditampilkan; selain itu, echo panjangnya sama dengan <?=dan ?>digabungkan, dan tanpa itu, tidak akan berfungsi di Codepad. Terimakasih Meskipun. : P
cjfaure
1
@ Jeremy Ah, PHP, di mana implementasi non-embedded selain terminal jarang. : P
cjfaure
8

Perl 6 (18 16 karakter)

print pick *,^10

Ini menghasilkan array yang berisi semua elemen acak ( pick *) dari 0ke 9dan menampilkan hasilnya ( print).

Output sampel:

$ perl6 -e 'print pick *,^10'
4801537269
$ perl6 -e 'print pick *,^10'
1970384265
$ perl6 -e 'print pick *,^10'
3571684902
Konrad Borowski
sumber
+1 Saya pikir Anda tidak perlu spasi putih sebelumnya pick.
Howard
1
@ Howard: Saya benar-benar membutuhkannya. [~](yang diuraikan sebagai listop, menurut tata bahasa Perl 6) memerlukan spasi putih (atau paren) setelahnya jika berisi argumen. Kalau tidak, kompiler Perl 6 mengeluh tentang "dua istilah berturut-turut". Itu tidak diperlukan di versi lama dari Perl 6, tapi ini adalah masa lalu. Perl 6 masih dikerjakan.
Konrad Borowski
1
@xfix: gunakan printsebagai ganti say [~]dan simpan 2 karakter :)
Ayiko
@Ayiko: Terima kasih atas perbaikannya :).
Konrad Borowski
7

GolfScript, 12 karakter

10,{;9rand}$

Cukup membuat daftar digit ( 10,) dan mengurutkannya {...}$berdasarkan beberapa kunci acak - yang menghasilkan urutan acak digit.

Contoh (coba online ):

4860972315

0137462985
Howard
sumber
Saya akan memposting ini: P
Gagang Pintu
Itu semacam omong kosong, meskipun: misalnya, angka pertama adalah sekitar tiga kali lebih mungkin menjadi 0 daripada 1. Mengganti 9randdengan 99randakan (kebanyakan) memperbaikinya; praktis9.?rand akan sempurna .
Ilmari Karonen
1
@IlmariKaronen, saya tahu, tapi pertanyaannya tidak mengatakan apa-apa tentang distribusi seragam.
Howard
6

R (23 karakter)

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

Output sampel:

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

TI-BASIC, 5 byte

randIntNoRep(1,10
Timtech
sumber
Menampilkan daftar daripada angka. Anda sedang mencari randIntNoRep(0,9:.1sum(Ans10^(cumSum(1 or Ans.
lirtosiast
2
Saya tidak berpikir tantangan ini membutuhkan tipe bilangan bulat, hanya bahwa "Nomor yang dihasilkan harus ditampilkan di layar" yang mana.
Timtech
Hmm, saya pikir pertanyaannya adalah meminta nomor (seperti yang dilakukan orang lain tetapi tampaknya maksud penulis tantangan tidak pernah diklarifikasi. Beberapa solusi lain menampilkan sebagai daftar (J dan APL) dalam kasus apa pun.
lirtosiast
Yah, saya tidak akan menganggap itu kecuali saya yakin, karena metode ini lebih pendek.
Timtech
5

Oktaf (14)

randperm(10)-1

randperm sayangnya membuat pilihan dari 1..n, jadi harus mengurangi 1 di akhir untuk mendapatkan 0-9.

Joachim Isaksson
sumber
5

Di server sql

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))

Lihat Demo

ATAU sesuatu yang serupa (milik @manatwork) menggunakan rekursi dan 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
sumber
1
Sobat, kau suka CTE ... Tapi karena ini tantangan kode-golf , lebih baik persingkat sebanyak mungkin. Terbaik saya adalah 186 karakter: 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(''). (BTW, trik hebat itu newid().)
manatwork
1
Oke, kamu benar. Lebih pendek dengan CTE. 106 karakter: 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
Anda dapat menyederhanakan cte dengan(VALUES (1),(2),...)
ypercubeᵀᴹ
5

Javascript ( 79 78 68 karakter)

Daripada membuat array dengan angka 0-9 dan menyortirnya, saya memutuskan untuk menghasilkan angka acak. Ketika muncul dengan nomor yang belum ada dalam array kemudian menambahkannya. Ini mengulangi sepuluh kali dan kemudian memperingatkan output.

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

scribblemaniac
sumber
Anda dapat menghemat 1 byte menggunakan ||evaluasi hubung singkat, bukan ifseperti: for(a="";!a[9];){b=Math.floor(Math.random()*10);~a.indexOf(b)||(a+=b)}alert(a)
Steven Palinkas
1
@ SebelasPalinkas Terima kasih, ide bagus! Saya telah memperbarui posnya.
scribblemaniac
Kita juga bisa menyimpan 2 byte dengan sedikit penataan ulang dalam kode:for(a="";!a[9];){~a.indexOf(b=Math.floor(Math.random()*10))||(a+=b)}alert(a)
Steven Palinkas
Kita dapat menyimpan 8 byte tambahan menggunakan "steno" untuk Math.floor seperti:for(a="";!a[9];){~a.indexOf(b=~~(Math.random()*10))||(a+=b)}alert(a)
Steven Palinkas
4

Mathematica, 27

Row@RandomSample@Range[0,9]

masukkan deskripsi gambar di sini

Ajasja
sumber
Cara yang bagus untuk menghindari dawai!
DavidC
4

Shell / Coreutils, 23

shuf -i0-9|paste -sd ''
Hasturkun
sumber
Jika kami tidak memerlukan baris baru, Anda dapat mencukurnya hingga 20 denganshuf -i0-9|tr -d \\n
joeytwiddle
bagaimana denganshuf -zi0-9
marcosm
@marcosm: Itu memberi Anda garis yang diakhiri dengan nol, yang agak aneh.
Hasturkun
4

JavaScript, 82 karakter

EDIT: Berkat Rob W , panjang kode dikurangi hingga 90 karakter.

EDIT: Berkat George Reith , panjang kode dikurangi menjadi 82 karakter (menggunakan untuk loop).

Cara yang cukup mudah: pilih elemen acak [0,1,2,3,4,5,6,7,8,9]array dan tambahkan ke output, lalu kurangi array dan putar ulang.

Versi lama (106 karakter):

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)

Versi yang dapat dibaca:

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);

Versi yang lebih baik (90 karakter):

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

Versi terakhir (82 karakter):

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
sumber
1
Aku golfed bawah metode Anda untuk 90 karakter: a='0123456789'.split(t=''),l=10;while(l--)t+=a[r=0|Math.random()*l],a.splice(r,1);alert(t). Penghemat besar: Math.random(x)=== 0|x. Ganti kurung kurawal dan titik koma dengan koma. Langsung menggunakan hasil penugasan sebagai nilai, alih-alih menggunakan variabel perantara. Akhirnya, inisialisasi array awal menggunakan .split(r=''). Ini lebih pendek daripada membuat array menggunakan literal array dan menetapkan nilai string dalam ekspresi terpisah.
Rob W
@RobW Terima kasih atas tipsnya. Saya memperbarui jawaban saya. PS Saya kira Anda maksud Math.floor(x) === 0|x.
gthacoder
1
Ini selalu memiliki 9 di akhir. Untuk memperbaiki, menginisialisasi l=11dan mengalihkan kondisi loop sementara Anda kewhile(--l)
Greg
@Greg Poin bagus. Terima kasih. Saya memperbarui jawabannya.
gthacoder
1
82 Karakter: a="0123456789".split(t='');for(l=11;--l;t+=a.splice(0|Math.random()*l,1));alert(t)- Kode Anda sangat cocok dengan argumen inisialisasi loop, kondisi dan ekspresi. The rvariabel berlebihan.
George Reith
4

C #, 145 byte

Tidak disatukan

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

Golf

using System;using System.Linq;class P{static void Main(){Enumerable.Range(0,10).OrderBy(g => Guid.NewGuid()).ToList().ForEach(Console.Write);}}
JMK
sumber
1
Anda dapat menggunakan Enumerable.Range(0,10), dan Anda tidak perlu kurung keriting di foreachloop.
Rik
3

JavaScript (80 karakter)

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

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

IQAndreas
sumber
3
Perhatikan bahwa ini dapat di-golf lebih lanjut dengan menggunakan fungsi panah (yang saat ini hanya berfungsi di FF, tetapi akan segera hadir untuk penerjemah di mana saja):alert("0123456789".split("").sort(n=>.5-Math.random()).join(""))
apsillers
1
Anda tidak perlu ruang antara returndan.5
Tibos
1
@Greg Shhhh! Apakah Anda tahu berapa banyak karakter yang dibutuhkan fungsi pengocokan nyata ? ;)
IQAndreas
1
@Greg Ini adalah distribusi acak (dengan asumsi Math.random cukup acak), itu bukan yang seragam.
SuperJedi224
1
Posting blog asli hilang, menambahkan arsip internet untuk anak cucu: web.archive.org/web/20150212083701/http://sroucheray.org/blog/…
Greg
3

K / Kona (6)

-10?10

Seperti halnya J, ?adalah operator kesepakatan; yang -kekuatan nilai-nilai untuk tidak mengulangi.

Kyle Kanos
sumber
3

Mathematica 40

Angka tersebut dibuat sebagai string sehingga memungkinkan nol untuk ditampilkan sebagai karakter pertama, saat diperlukan.

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

Contoh keluaran

"0568497231"
"6813029574"

Penjelasan

"0"~CharacterRange~"9" adalah notasi infix untuk `CharacterRange [" 0 "," 9 "]". Keduanya mengembalikan daftar, {"0", "1", "2", "3", "4", "5", " 6 "," 7 "," 8 "," 9 "}.

RandomSample[list]secara default mengembalikan permutasi daftar. (Ini juga dapat digunakan untuk jenis pengambilan sampel lainnya, ketika parameter dimasukkan. Misalnya RandomSample[list, 4]akan mengembalikan sampel acak 4 karakter, tanpa mengulangi.

DavidC
sumber
Tetapi mengapa menampilkan 0 sebagai karakter pertama?
Ankush
Menurut OP, program "harus dapat menghasilkan semua permutasi dari semua karakter yang diizinkan".
DavidC
@Ankush Itu notasi infiks, jadi "0" tidak selalu karakter pertama.
Ajasja
Ajasja benar. Program dapat menghasilkan permutasi apa pun. Saya menambahkan beberapa komentar di atas untuk memperjelas hal ini.
DavidC
3

Scala, 37

util.Random.shuffle(0 to 9).mkString
tentara
sumber
2

Keempat, 72

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

Mungkin masih ada ruang untuk bermain golf, tetapi Forth membuat ini sulit. Kupikir.

Darren Stone
sumber
2

Prolog, 177/302 karakter

Saya seorang pemula di Prolog, jadi mungkin ini bukan kode yang paling kental.

:- 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).

Pengembalian:

| ?- 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

Jika Anda ingin mengembalikan integer:

:- 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.

Pengembalian:

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

Menggunakan sebaliknya:

labeling([down],N)

Memberikan angka dalam urutan yang berlawanan:

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

Tidak seperti beberapa kode lain yang diposting, ini mengembalikan semua kemungkinan (tanpa pengulangan).

Edu
sumber
2

q / kdb [6 karakter]

-10?10

akan menghasilkan 10 angka acak unik.

nyi
sumber
2

√ å ı ¥ ® Ï Ø ¿ , 4 byte

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
sumber
2

Clojure, 42

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

6209847315

Claj
sumber
Nomor yang dihasilkan harus ditampilkan di layar, bukan bagiannya.
Sylwester
2

Javascript, 83 karakter

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

Saat berjalan hingga array memiliki 10 elemen.

Menghasilkan angka acak dari 0 - 9 lalu memeriksa apakah array! Menyertakan nomor ini dan menambahkannya ke array.

David
sumber
1
Selamat datang di situs ini! :)
DJMcMayhem
1

Ini tidak jauh lebih kecil dari jawaban JMK, tetapi inilah solusi C # yang sedikit lebih kecil (135):

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

Dipadatkan (134):

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

Versi alternatif (135):

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

Kompak:

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

Panjangnya sama, tetapi itu benar-benar hanya tergantung pada apakah Anda ingin menggunakan fungsi ForEach Linq atau fungsi String's Join. Saya dapat menghapus 10 karakter panjangnya dengan mengeja kisaran "0123456789" dalam sebuah string alih-alih menggunakan Enumerable.Range (0, 10).

Cameron Tinker
sumber
1

LOGO , 64 karakter

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

pilih pengembalian item acak dari daftar yang disediakan. butmember mengembalikan daftar dengan semua kemunculan item yang ditentukan dihapus. Catatan: Tidak semua butmemberperintah dukungan implementasi Logo .

Sandman4
sumber
1

Raket 45 43

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