Musisz wypełnić tablicę każdą liczbą od 0-n
włącznie. Żadne liczby nie powinny się powtarzać. Jednak muszą być w losowej kolejności.
Zasady
Wszystkie standardowe zasady gry w golfa i standardowe luki są zabronione
Tablica musi zostać wygenerowana pseudolosowo. Każda możliwa permutacja powinna mieć jednakowe prawdopodobieństwo.
Wejście
n
w jakikolwiek sposób dozwolony w poście we / wy na meta.
Wynik
Tablica liczb wymieszała się z 0-n
włącznie.
Odpowiedzi:
Perl 6 , 14 bajtów
Spróbuj
Rozszerzony:
źródło
05AB1E , 3 bajty
Wypróbuj online!
źródło
Pyth, 3 bajty
Demonstracja
.S
jest losowe. Domyślnie rzutuje całkowitą liczbę wejściowąn
na zakres[0, 1, ..., n-1]
.h
jest+1
, a dane wejściowe są pobierane niejawnie.źródło
R , 16 bajtów
czyta z
stdin
.sample
losowo pobiera próbki z wektora wejściowego, zwracając (pseudo) losową sekwencję.Wypróbuj online!
źródło
Galaretka , 3 bajty
Wypróbuj online!
Objaśnienie:
Alternatywne rozwiązanie, 3 bajty
Wyjaśnienie:
Wypróbuj online!
źródło
Python 2 , 51 bajtów
Wypróbuj online!
Istnieje,
random.shuffle()
ale modyfikuje argument zamiast go zwrócić ...źródło
random.shuffle
lambda n:shuffle(range(n+1))
nigdzie nie zapisałbym danych wyjściowych.PHP, 42 bajty
Wypróbuj online!
źródło
Bash,
1811 bajtówWypróbuj online!
źródło
Mathematica, 24 bajty
źródło
MATL , 4 bajty
Wypróbuj online!
Wyjaśnienie
źródło
Brachylog , 2 bajty
Wypróbuj online!
Wyjaśnienie
źródło
Japt , 4 bajty
Wypróbuj online
źródło
öx
że to wystarczy, dopóki nie zauważyłem części „włączającej”. (Można zastąpićx
prawie wszystkim innym, btw)C #, 76 bajtów
Zwraca IOrDEREnumerable, mam nadzieję, że jest w porządku, bo potrzebuję jeszcze kilku bajtów dla funkcji .ToArray ()
źródło
CJam ,
76 bajtów1 bajt usunięty dzięki Erikowi Outgolfer .
Jest to anonimowy blok (funkcja), który pobiera liczbę całkowitą ze stosu i zastępuje ją wynikiem. Wypróbuj online!
Wyjaśnienie
źródło
{),mr}
1 bajt nie jest krótszy?Java 8,
11411197 bajtów-3 bajty i poprawione błędy dzięki @ OlivierGrégoire .
-4 bajty dzięki @Jakob .
-10 bajtów przez usunięcie
.toArray()
.Wyjaśnienie:
Wypróbuj tutaj.
źródło
n
. Fix i golf:for(n++;--n>=0;l.add(n));
. Mówię też, że nie musisz zwracać tablicy. Tablica i lista są takie same w większości języków, więc po prostu zwróć listę.>
powinno być>=
.Stack
zamiast aVector
i zmień pętlę nafor(;n>=0;l.add(n--));
. A zwrot ajava.util.List
jest zdecydowanie w porządku.Ohm , 2 bajty
Wypróbuj online!
źródło
Pyth, 4 bajty
Wypróbuj tutaj!
źródło
.S
with an integer argument is the same as.SU
, and[0..n]
can be coded asUh
, so you can use.SUh
, which then becomes.Sh
.C, 75 bytes
Recursive function that initializes from the array's end on the way in, and swaps with a random element before it on the way out.
źródło
n > 98
?a
into a para to fit the rule more?Charcoal, 33 bytes
Try it online! Link is to verbose version of code.
Apparently it takes 17 bytes to remove an element from a list in Charcoal.
Edit: These days it only takes three bytes, assuming you want to remove all occurrences of the item from the list. This plus other Charcoal changes cut the answer down to 21 bytes: Try it online!
źródło
APL (Dyalog), 5 bytes
Try it online!
Assumes
⎕IO←0
, which is default on many machines.Explanation
⊢
the right argument1+
add 1 to it?⍨
generate numbers 0 ..1+⊢
-1 and randomly deal them in an array so that no two numbers repeatźródło
q/kdb+, 11 bytes
Solution:
Example:
Explanation:
Use the
?
operator with a negative input to give the full list of0->n
without duplicates:źródło
TI-83 BASIC, 5 bytes (boring)
Yep, a builtin.
randIntNoRep(
is a two-byte token, andAns
is one byte.More fun, 34 bytes:
Straight from tibasicdev. Probably golfable, but I haven't found anything yet.
What this does: Sorts a random array, moving elements of the second arg (
L₁
here) in the same way as their corresponding elements.źródło
JavaScript (ES6), 51 bytes
źródło
f(5)
10 times and5
has been one of the last two items every time.1,5,4,0,2,3
&1,0,2,5,3,4
. EDIT: And a few more prnt.sc/fe0goef(5)
1e5 times and finds the average position of each number in the results. The resulting array was[ 1.42791, 1.43701, 2.00557, 2.6979, 3.3993, 4.03231 ]
, so I don't think it's uniform. (code)n=>(a=[...Array(n).keys(),n++]).reduce((a,v,i)=>([a[i],a[j]]=[a[j=n*Math.random()|0],v],a),a)
?random()
isn't uniform. See (for example) en.wikipedia.org/wiki/BrowserChoice.eu#CriticismAceto,
151416 bytesPush zero on the stack, read an integer, construct a range and shuffle it:
Set a catch mark, test length for 0, and (in that case) exit:
Else print the value, a newline, and jump back to the length test:
(I had to change the code because I realized I misread the question and had constructed a range from 1-n, not 0-n.)
źródło
Go, 92 bytes
Mostly losing to the need to seed the PRNG.
Try it online!
źródło
Ruby, 20 bytes
->n{[*0..n].shuffle}
źródło
8th,
423634 bytesCode
SED (Stack Effect Diagram) is
n -- a
Usage and example
źródło
Javascript (ES6), 68 bytes
Creates an array of form
Then sorts it and returns the last elements in the new order
źródło
J, 11 Bytes
Explanation:
Examples:
źródło
Tcl, 90 bytes
Try it online!
Tcl, 96 bytes
Try it online!
źródło