Definicja
Zdefiniuj n- tą tablicę sekwencji CURR w następujący sposób.
Zacznij od tablicy singletonów A = [n] .
Dla każdej liczby całkowitej K w A wymienić wejścia k o k liczb naturalnych, liczy się od 1 do k .
Powtórz poprzedni krok n - 1 jeszcze raz.
Na przykład, jeśli n = 3 , zaczynamy od tablicy [3] .
Zastąpić 3 z 1, 2, 3 , w wyniku czego otrzymano [1, 2, 3] .
Teraz zastąpić 1 , 2 i 3 w 1 ; 1, 2 i 1, 2, 3 (odpowiednio), uzyskując [1, 1, 2, 1, 2, 3] .
Na koniec wykonujemy takie same zamiany jak w poprzednim kroku dla wszystkich sześciu liczb całkowitych w tablicy, uzyskując [1, 1, 1, 2, 1, 1, 2, 1, 2, 3] . To jest trzecia tablica CURR.
Zadanie
Napisz program funkcji, która na podstawie ściśle dodatniej liczby całkowitej n jako wartości wejściowej oblicza n- tą tablicę CURR.
Wynik musi być jakąś płaską listą (i tablicą zwróconą z funkcji, ciągiem znaków reprezentującym składnię tablicy języka, oddzielonymi spacjami itp.).
To jest golf golfowy . Niech wygra najkrótszy kod w bajtach!
Przypadki testowe
1 -> [1]
2 -> [1, 1, 2]
3 -> [1, 1, 1, 2, 1, 1, 2, 1, 2, 3]
4 -> [1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4]
5 -> [1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5]
6 -> [1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 1, 2, 1, 1, 2, 1, 2, 3, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 1, 2, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6]
[2]
) zamiast liczb całkowitych?Odpowiedzi:
Galaretka, 3 bajty
Wypróbuj online
Wyjaśnienie
źródło
Python, 50 bajtów
Nadużycie zakresu! Na przykład
i=3
ciąg znaków do oceny rozwija się do.W jakiś sposób, pomimo użycia zmiennej wejściowej funkcji
i
do wszystkiego, Python wyróżnia każdy indeks iteracji jako należący do osobnego zakresu, tak jakby wyrażeniez
i
wejściem do funkcji.źródło
eval
, oczywiście, sam kod musi zostać przeniesiony, ale myślałem, że i tak możesz to założyć.05AB1E,
63 bajtyWyjaśniono
Wypróbuj online
Zaoszczędź 3 bajty dzięki @Adnan
źródło
DFL
jest 3 bajty krótszy :)Siatkówka , 33 bajty
Wejście i wyjście unary.
Wypróbuj online!
Mimo że nie użyłem zamkniętego formularza do powiązanego wyzwania, dostosowanie tej odpowiedzi było zaskakująco trudne.
źródło
+%(M!&
jest najdłuższym tagiem, jaki kiedykolwiek widziałem.Python 2, 82 bajty
To nie jest najkrótsze rozwiązanie, ale ilustruje interesującą metodę:
2^(2*n-1)
liczby binarnien
tymiźródło
Właściwie 9 bajtów
Wypróbuj online!
Wyjaśnienie:
Dzięki Leaky Nun za bajt i inspirację na kolejne 2 bajty.
źródło
;#@"♂R♂i"*ƒ
zapisuje bajt;#@`♂R♂i`n
ratuje kolejny!C #, 128 bajtów
źródło
using static System.Linq.Enumerable
możesz to zrobić:int[]J(int n){var l=new[]{n};while (n-- > 0){l = l.Select(p => Range(1, p)).SelectMany(m => m).ToArray();}return l;}
APL, 11 bajtów
Test:
Wyjaśnienie:
+⍵
: zaczynając od⍵
,⍣⍵
: wykonaj następujące czynności⍵
:⍳¨∘∊
: spłaszcz wejście, a następnie wygeneruj listę [1..N] dla każdego N na wejściu∊
: spłaszcz wynik tegoźródło
{(∊⍳¨)⍣⍵⊢⍵}
{(∊∘(⍳¨))⍣⍵+⍵}
a potem pomyślałem, jak mogę pozbyć się tych aparatów ortodontycznych?CJam, 14 bajtów
Sprawdź to tutaj.
Wyjaśnienie
źródło
Mathematica,
2726 bajtów1 bajt zapisany z pewną inspiracją z odpowiedzi Essari.
Dość proste: na wejściu
x
mamy zacząć{x}
, a następnie zastosowaćRange
do niejx
razy (Range
toListable
co oznacza, że automatycznie odnosi się do liczb całkowitych wewnątrz dowolnie zagnieżdżone listy). Na koniecFlatten
wynik.źródło
Clojure, 59 bajtów
Wyjaśnienie:
Naprawdę prosty sposób rozwiązania problemu. Praca od wewnątrz:
źródło
Python 3,
7574 bajtówTo tylko proste tłumaczenie opisu problemu na kod.
Edycja: Zapisano jeden bajt dzięki @Dennis.
źródło
print
może wyjść na zewnątrzexec
.[k]
z jakiegoś powodu po prostu drukuje . Zrezygnowałem z prób ustalenia, czy to był problem z zasięgiem, czy coś innego.R
60 60bajtówDość proste użycie
unlist
isapply
.Dzięki @MickyT za zapisanie 11 bajtów
źródło
seq
obniżyć liczbę bajtówphp 121
Nie bardzo przeszkadza w tym podstępem. Spłaszczanie tablicy w php nie jest krótkie, więc najpierw trzeba ją zbudować na płasko
źródło
<?
lub 6 bajtów bez-r
i bez znacznika.Haskell, 33 bajty
Dzięki nim za uratowanie bajtu.
Wersja bez punktów jest dłuższa (35 bajtów):
źródło
iterate(>>= \a->[1..a])
za jeden bajt mniej.JavaScript (Firefox 30-57),
6360 bajtówPort odpowiedzi na Python @ xnor.
źródło
SyntaxError: missing : in conditional expression
) i Babel (Unexpected token (1:21)
). Co ja robię źle?)
wkradł się do tej wersji.J, 18 bajtów
Proste podejście oparte na procesie opisanym w wyzwaniu.
Stosowanie
Wyjaśnienie
źródło
Pyth, 8 bajtów
Wypróbuj online!
źródło
Galaretka, 7 bajtów
Szybko, zanim Dennis odpowie (jk)
Wypróbuj online!
źródło
F #, 63 bajty
Zwraca anonimową funkcję przyjmującą n jako dane wejściowe.
Zastępuje każdy wpis k w A przez [1..k], powtarza proces n razy, zaczynając od A = [n].
źródło
Swift 3, 58 bajtów
Przeznaczony do biegania bezpośrednio na placu zabaw, z n ustawionym na wejście
Bez golfa, z cofnięciem większości notacji krótkiej ręki:
źródło
Java, 159 bajtów
Procedura
Stosowanie
Przykładowe dane wyjściowe:
źródło
Python 2,
696866 bajtówEdycja: Zapisano 1 bajt dzięki @xnor. Zaoszczędź 2 bajty dzięki @ Dennis ♦.
źródło
exec
. W Pythonie 2 jest to słowo kluczowe, a nie funkcja. Liczę 68 bajtów btw.Narzędzia Bash + GNU, 49
Funkcje rekurencyjne z potokami FTW!
n
jest przekazywany w wierszu polecenia. Dane wyjściowe są oddzielone znakiem nowej linii.Zastosowanie
dd
powoduje przesłanie statystyk do STDERR. Myślę, że to jest OK, ale jeśli nie,dd
można je zastąpićcat
kosztem 1 dodatkowego bajtu.źródło
{...;}
z(...)
zapisać bajt.Perl 5, 53 bajtów
Podprogram:
Zobacz to w akcji jako
źródło
Rubin, 61 bajtów
źródło
PHP,
10098 bajtówUruchom z
php -r '<code>' <n>
.W każdej iteracji utwórz tymczasową pętlę kopiowania od 1 .. (pierwsza wartość usunięta), aż
$a
będzie pusta.Te dwa są nadal i prawdopodobnie pozostaną przy 100 bajtach:
W każdej pętli iteracji do tyłu przez tablicę, zastępując każdą liczbę zakresem.
W każdej pętli iteracji przez tablicę zwiększając indeks o poprzednią liczbę i zastępując każdy indeksowany element zakresem
źródło