Poszarpana tablica to tablica, w której każdy element jest tablicą o nieznanej liczbie dodatnich liczb całkowitych.
Na przykład następujące tablice są poszarpane:
[[1,2,3],[4],[9,10]] Shape: 3,1,2
[[1],[2],[3]] Shape: 1,1,1
[[1,2,3,4,5,6,8]] Shape: 7
Poniższe tablice nie są poszarpane:
[1] Each element will be an array
[] The array will contain at least 1 element
[[1,2,3],[]] Each subarray will contain at least 1 integer
Musisz wprowadzić nierówną tablicę i zwrócić nierówną tablicę z losowymi liczbami całkowitymi
- Tablica wyjściowa musi mieć taki sam kształt jak tablica wejściowa. Definiujemy kształt tablicy jako długość każdej podtablicy.
- Każda liczba całkowita musi mieć jednakową szansę na pojawienie się w każdej możliwej lokalizacji.
- Możesz założyć, że losowo wbudowany język jest przypadkowy.
Na przykład, jeśli zdałem w: [[4],[1,2,3],[4]]
, wtedy [[1],[4,4,2],[3]]
byłoby ważne wyjście, ale [[4,1,3],[3],[4]]
czy [[4],[4],[1,2,3]]
nie.
code-golf
array-manipulation
random
Nathan Merrill
źródło
źródło
Odpowiedzi:
Galaretka, 3 bajty na stronie kodowej Jelly
Wyjaśnienie:
Ponieważ program jest niekompletny (
ṁ
nie podano drugiego argumentu), domyślnie jest używane wejście programu;ṁ
powoduje więc, że wyjście ma taki sam wzorzec listy podrzędnej jak wejście.Wypróbuj online!
źródło
F
iṁ
praca dla wielu warstw spłaszczenie, a nie tylko jednego.)ṁ
może być cokolwiek, nie tylko płaska lista. Na przykład: tio.run/nexus/jelly#@/9wZ@P///@jow11FIxidRSijXUUTEC0qY6CWWzs/…PowerShell v2 +, 86 bajtów
Działa poprzez manipulację ciągiem. Dane wejściowe są przekazywane jako ciąg znaków reprezentujący tablicę, w dowolnym formacie odpowiednim dla Twojego języka. ;-)
-split
wypisuje dane nie będące cyframi,sort
są oparte narandom
bloku skryptu (który przypisuje inną losową wagę dla każdego wejścia do sortowania), przechowuje to w$a
. Następniesplit
wprowadzamy ponownie, tym razem na cyfrach, i dla każdego z nich wyprowadzamy bieżącą wartość (zwykle nawiasy i przecinki) łączoną łańcuchem z odpowiednią liczbą z$a
. Jest to-join
edytowane razem z powrotem w ciąg, a dane wyjściowe są niejawne.Przykłady
źródło
Python 2 , 89 bajtów
Wypróbuj online!
źródło
shuffle(r=sum(x,[]))
?JavaScript (ES6),
7875 bajtówTo pierwszy raz, kiedy pamiętam grę
.splice()
w golfa kodowego ...Możesz zagrać w golfa o dwa bajty, uprzednio tasując tablicę:
Wydaje się jednak, że przez większość czasu to ostatnia liczba całkowita jest na pierwszym miejscu, więc założę, że liczby całkowite nie są równomiernie rozmieszczone.
źródło
sort
nie działa poprawnie, gdy otrzyma niespójny klucz porównania. Nawet jeśli losowość języka jest losowa, jego rodzaj będzie działać nieprawidłowo w tej sytuacji, i właśnie to powoduje tendencyjność, którą widzisz. Dlatego uważam, że drugie rozwiązanie jest nieprawidłowe.Ruby, 47 bajtów
źródło
Brachylog , 17 bajtów
Wypróbuj online!
Wyjaśnienie
Zasadniczo tworzymy listę list podrzędnych z elementami zmiennymi, które mają ten sam „kształt” co Dane wejściowe, a następnie stwierdzamy, że jeśli połączymy wszystko w jedną listę, musi to doprowadzić do przetasowania połączenia danych wejściowych w jedną listę .
źródło
Perl, 37 bajtów
36 bajtów kodu +
-p
flaga.Aby uruchomić:
Objaśnienia:
źródło
05AB1E , 17 bajtów
Wypróbuj online!
Czekam na rozwiązanie 05AB1E lub 2sable przy użyciu wbudowanego spłaszczania / formowania, którego jeszcze nie wiem :).
źródło
APL, 35 bajtów
Ledwo biję Perla, coś musi mi brakować.
Na przykład:
Wyjaśnienie:
⍳¨⍴¨⍵
: Dla każdej pod-tablicy uzyskaj listę indeksów{⍵+⊃⌽⍺}\
: Zaczynając od pierwszej pod-tablicy, dodaj ostatnią wartość w tablicy do każdej wartości w następnej tablicy.⊃¨
: zdobądź pierwsze elementy tablic, które są miejscami początkowymi(⍳⍴Z←∊⍵)∊
: przechowuj spłaszczoną tablicę wZ
. Wygeneruj wektor bitowy, w którym te oznaczają miejsca, w których powinny się zacząć pod-tablice.?⍨⍴Z
: wygeneruj losową permutacjęZ
.Z[
...]
: permuteZ
.⊂⍨
: Podziel permutację na pod-tablice zgodnie z wektorem bitowym.źródło
A⊣(∊A)←(∊A)[?⍨≢∊A←⎕]
Pyth, 15 bajtów
Program, który pobiera dane z listy i drukuje wynik.
Zestaw testowy
Jak to działa
źródło
PHP , 105 bajtów
zredukowane do 105 bajtów dzięki
user59178
.Oryginalna odpowiedź:
PHP , 132 bajty
źródło
$m=array_merge(...$i=$_GET[i]);
jest o 25 bajtów krótszy niż$i=$_GET['i'];$m=call_user_func_array('array_merge',$i);
i robi to samo. Ponadto można upuścić{}
po,foreach
aby zapisać 2 kolejne bajty.Grzmotnąć,
63, 58 bajtówEDYCJE:
Uwaga:
Bash tak naprawdę nie obsługuje tablic wielowymiarowych (można je tylko symulować, do pewnego stopnia), więc zamiast tego program zaakceptuje „zserializowaną” reprezentację tekstową wytrzymałej tablicy, jak pokazano w opisie zadania, np .:
[[1,2,3],[4],[9,10]]
i zapewnia dane wyjściowe w tym samym formacie.Grał w golfa
Test
Dobrą zaletą jest to, że możesz karmić je wytrzymałymi tablicami o dowolnej głębokości:
i nadal będzie działać poprawnie.
Wypróbuj online!
źródło
Oktawa, 60 bajtów
źródło
MATLAB , 84 bajty
źródło
Java, 368 bajtów
metoda
static int[][] f( int[][] r ){...}
rozwiązuje wyzwanie. Postanowiłem stworzyć własny interfejs funkcjonalny, aby uniknąć importu i dodać domyślną metodę dla łatwości użyciaźródło
Mathematica, 67 bajtów
Objaśnienie: To tasuje listę pozycji wszystkich liczb całkowitych w niewyrównanej tablicy 2D.
Union@@
jest skrótem odFlatten@
Uwaga:
{}
Zamiast wsporników stosowane są nawiasy kwadratowe[]
.źródło