W: Wystarczająca ilość pamięci i dodatnia liczba całkowita N
Out: N-wymiarowa tablica N ^ N wypełniona N, gdzie N ^ N oznacza N wyrażenia N-by-N-by-N-by ...
Przykłady:
1: [1]
która jest tablicą 1D (lista) o długości 1, zawierającą pojedynczą 1
2: [[2,2],[2,2]]
czyli tablica 2D (tabela) z 2 rzędami i 2 kolumnami, wypełniona 2s
3: [[[3,3,3],[3,3,3],[3,3,3]],[[3,3,3],[3,3,3],[3,3,3]],[[3,3,3],[3,3,3],[3,3,3]]]
która jest macierzą 3D (sześcian) z 3 warstwami, 3 rzędami i 3 kolumnami, wypełnionymi 3s
4: [[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]],[[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]],[[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]]]
5 i 6: Zobacz jedną z odpowiedzi.
Odpowiedzi:
Python , 32 bajty
Wypróbuj online!
Tworzy ciąg znaków
"[[[n]*n]*n]*n"
zn
mnożenia i ocenia go jako kod Pythona. Ponieważ ocena odbywa się w zakresie funkcji, nazwa zmiennej jestn
przetwarzana na dane wejściowe funkcji.źródło
J, 4 bajty
Wypróbuj online!
Wyjaśnienie
źródło
$~$~
to, co jest równoważne, a jednocześnie się powtarza$~$~
przetłumaczone na angielski ... PIENIĄDZE, zdobądź więcej, PIENIĄDZE, uzyskaj więcej ...APL (Dyalog APL) , 4 bajty
Wypróbuj online!
źródło
⍴⍨⍴⍨
też działa, wyglądając fajniej.Mathematica,
2220 bajtówźródło
R 26
To oczywista odpowiedź, ale może jest coś mądrzejszego?
źródło
scan()
konieczne?n=scan();
,function(n)
ale wydłuża to czas.n
zadanie wewnątrzarray
:array(n<-scan(),rep(n,n))
.JavaScript (ES6),
4440 bajtówPróbny
Pokaż fragment kodu
źródło
Haskell , 52 bajty
Wypróbuj online!
Zainspirowany odpowiedzią @ nimi , ale używając bardziej zdefiniowanych funkcji.
iterate
i!!
zamiast funkcji pomocy rekurencyjnej.filter(>'"').show
do formatowania listy ciągów znaków, a następnie usuwania dodatkowych"
znaków.źródło
05AB1E (starsza wersja) ,
65 bajtów-1 dzięki Kevin Cruijssen
Wypróbuj online!
źródło
D
można usunąć, ponieważ dane wejściowe są ponownie używane niejawnie (nie jestem pewien, czy to było coś, kiedy opublikowałeś odpowiedź, ale nie potrzebujeszD
już tego jawnego ).Oktawa,
3533252320 bajtówWypróbuj online!
Dzięki @LuisMendo zapisano 8 bajtów
Wypróbuj online!
Poprzednia odpowiedź:
Wypróbuj online!
źródło
Haskell, 62 bajty
Przykład użycia:
f 2
->"[[2,2],[2,2]]"
. Wypróbuj online! .System ścisłego typu Haskell zapobiega funkcji, która zwraca zagnieżdżone listy o różnych głębokościach, więc wynik tworzę jako ciąg znaków.
Jak to działa:
źródło
f n=iterate(filter(>'#').show.(<$[1..n]))(show n)!!n
.(#0)=show
? Niezbyt zaznajomiony z Haskell(#)0=show
, ale wszystkie definicje funkcji muszą mieć tę samą liczbę argumentów. Druga linia (n#l='['...
) potrzebuje dwóch argumentów, więc pierwsza linia musi również mieć dwa argumenty.MATL, 8 bajtów
Wypróbuj go w MATL Online (dodałem kod pokazujący rzeczywisty rozmiar danych wyjściowych, ponieważ wszystkie n-wymiarowe dane wyjściowe w MATL są pokazane jako macierze 2D, w których wszystkie wymiary> 2 są spłaszczone do drugiego wymiaru).
Wyjaśnienie
źródło
Zy
na końcu kodu, będzie on określał rzeczywisty rozmiarPython 2 , 36 bajtów
-2 bajty dzięki @CalculatorFeline
Wypróbuj online!
źródło
~-n
==(n-1)
.CJam , 12 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Galaretka , 5 bajtów
Wypróbuj online!
W jaki sposób?
źródło
Java
979695 bajtówNie golfowany:
źródło
i<=1
zi<2
?(n,i)->{...}
JavaScript (ES6), 38 bajtów
Wersja głodna pamięci to 45 bajtów:
źródło
Narzędzia Bash + GNU, 117 bajtów
Wypróbuj online!
Program zasadniczo liczy od 0 do (n ^ n) -1 w bazie n, gdzie n jest wejściem. Dla każdej liczby bazowej n w zliczeniu wykonuje następujące czynności:
(Wartość n = 1 wymaga dodania nawiasów jako szczególnego przypadku. Ta wartość wejściowa generuje również dane wyjściowe do stderr, które można zignorować zgodnie ze standardowymi regułami PPCG.)
Może istnieje krótszy sposób na wdrożenie tego pomysłu.
Przykładowy przebieg:
źródło
Galaretka , 4 bajty
Wypróbuj online!
To samo, ale z jedną monadą i bez potrzeby stosowania separatora łańcucha:
4 bajty
źródło
Galaretka , 5 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Python 3 ,
57535038 bajtówWypróbuj online!
-4 bajty dzięki @CalculatorFeline
34 bajty:
Musi być nazwany jako
f(4,4)
źródło
c>1
zc
zaoszczędzić 1 bajt. (Markdown, przestań deduplikować spacje między`
s)c>0
w tym konkretnym przypadku.<space>n
. Problem rozwiązany i zapisano więcej bajtów! : D (Więc spacje na końcu kodu śródliniowego są możliwe, ale nie na początku? To dziwne ...) Link TIORubinowy,
2826 bajtówDzięki Cyoce za zapisanie 2 bajtów!
Skradziony bezwstydnie z XNOR jest doskonałą odpowiedzią .
źródło
Rubinowy, 27 bajtów
Tylko 1 bajt więcej, ale stosując inne podejście zamiast sztuczki „eval” z cudownej odpowiedzi xnora na Pythona.
źródło
Perl 6 , 25 bajtów
Zaczyna się
n
i iteracyjnie stosuje czasy transformacji „powtórz n razy”n
, za każdym razem tworząc dodatkowy poziomList
zagnieżdżenia.Wypróbuj online!
źródło
$_
Zamiast tego użyj, aby zapisać bajt$_
jako parametru bloku wewnętrznego, więc nie mogę go również użyć jako parametru bloku zewnętrznego.$n
i$_
zawsze mają taką samą wartość. Wypróbuj online!PHP,
7062 bajtówTo najprostszy, jaki mogę wymyślić.
Pobiera dane wejściowe jako pierwszy argument i drukuje wynikową tablicę na ekranie.
Dzięki @ user59178 za uratowanie mnie 8 bajtów !
źródło
$l
. Upuszczenie$i=0,
i wymianie$l
z$n
oszczędza 7 bajtów. Dodatkowy bajt można zapisać, nie przypisując$F
, przypisując$n
warunkowo i używając$F?:$n
array_fill()
Clojure, 36 bajtów
Iteruje funkcję, która powtarza swoje
n
czasy argumentów , tworzy nieskończoną sekwencję takich elementów, a następnie pobiera swójn
element th.Zobacz online
źródło
Rebol, 45 bajtów
źródło
Partia, 141 bajtów
Batch tak naprawdę nie ma tablic, więc po prostu drukuje reprezentację ciągu tablicy. Objaśnienie: Pierwsze dwie linie tworzą powtarzalny wzorzec
N
.
s oddzielony przezN-1
,
s w zmiennejt
. Czwarta linia używa tego jako wzorca podstawieniaN
razy do utworzeniaN
tablicy -wymiarowej. Podwajaniecall
jest konieczne ze względu na działanie instrukcjifor
iset
. Po pierwsze,for
polecenie zastępuje zmienne. Tak się składa, że wszystkie moje%
znaki są podwojone, więc nic nie robi poza tym, że cofnęłam je wszystkie, w wyniku czegocall call set s=[%%t:.=%s%%%]
. Następnie powtarza wynikoweN
czasy instrukcji . Za każdym razemcall
polecenie zastępuje zmienne. W tym momencies
zmienna ma tylko jeden zestaw%
s, więc zostaje podstawiony, co powoduje (npcall set s=[%t:.=[2,2]%]
. ) . Wewnętrzne wywołanie następnie zastępujet
zmienną, co powoduje (np.)set s=[[2,2],[2,2]]
Wykonanie żądanego przypisania. Ostateczna wartośćs
jest następnie drukowana.źródło
Clojure, 49 bajtów
Nie najkrótszy przykład Clojure, ale bawiłem się cytowaniem i nie cytowaniem.
źródło
I , 7 bajtów
Dostałem to od mojego kolegi, twórcy I.
#Bb
kopiowanie#
funkcji B ound do b indinghp
wys OOK argument do (na prawo), str funkcji ower (powtarzanie)h~
wys OOK argument w lewo~
(w stosunku do całej funkcji wynikających)Wypróbuj online!
źródło
Common Lisp,
128 102 9579 bajtówWypróbuj online!
źródło