Sekwencja liczb całkowitych wykładniczych w zakresie

16

Rozważmy trójkąta gdzie N ty rząd (1 indeksowane) to tablica pierwszych N dodatnich mocy całkowitą o N . Oto kilka pierwszych wierszy:

N | Trójkąt

1 | 1
2 | 2 4
3 | 3 9 27
4 | 4 16 64 256
5 | 5 25 125 625 3125
...

Teraz, jeśli połączymy te moce w jedną sekwencję, otrzymamy OEIS A075363 :

1, 2, 4, 3, 9, 27, 4, 16, 64, 256, 5, 25, 125, 625, 3125, 6, 36, 216, 1296, 7776, 46656 ...

Biorąc pod uwagę liczbę całkowitą N , Twoim zadaniem jest zwrócenie N- tego terminu tej sekwencji. Możesz wybrać indeksowanie 0 lub 1.

Przypadki testowe

1-indeksowany:

N -> Dane wyjściowe

1 -> 1
2 -> 2
3 -> 4
5 -> 9
10 -> 256
12 -> 25
15 -> 3125

0-indeksowane:

N -> Dane wyjściowe

0 -> 1
1 -> 2
2 -> 4
4 -> 9
9 -> 256
11 -> 25
14 -> 3125

Pamiętaj, że te luki są domyślnie zabronione. To jest , dlatego wygrywa najkrótsza ważna wersja w każdym języku!

Pan Xcoder
źródło
Myślę, że w testowych przypadkach występuje pewien błąd: w 1 indeksowanym 10 powinno być 256; w indeksie 0 powinno wynosić 256.
Galen Iwanow
Czy możemy mieć końcowe spacje?
Stan Strum,
@StanStrum Tak.
Pan Xcoder,

Odpowiedzi:

7

Łuska , 7 bajtów

!ṁṠM^ḣN

Wypróbuj online!

1-indeksowany

Wyjaśnienie:

      N   Get the list of all natural numbers
 ṁ        Map over each n in that list and then concatenate
  Ṡ  ḣ      Create the range [1,n] then ...
   M^       raise n to the power of each
!         Index into that sequence
H.PWiz
źródło
4

R , 40 bajtów

-2 bajty przenoszące odpowiedź Halvarda Hummela

function(N){while(N>T){N=N-T;T=T+1};T^N}

Wypróbuj online!

R , (oryginalna odpowiedź) 42 bajty

function(N)(rep(1:N,1:N)^sequence(1:N))[N]

Wypróbuj online!

1-indeksowany.

Giuseppe
źródło
4

APL (Dyalog) , 15 13 10 bajtów

3 bajty zapisane dzięki @ Adám

⊢⊃∘∊⍳*⍳¨∘⍳

Wypróbuj online!

W jaki sposób?

⍳¨∘⍳ - utwórz zakres dla każdej liczby w zakresie danych wejściowych

⍳* - podnieść każdą liczbę w zakresie danych wejściowych do odpowiednich mocy

- spłaszczyć

⊢⊃ - wybierz n-ty element

Uriel
źródło
Próbując go w trybie online, kod wydaje się mieć 17 bajtów i nie wydaje się, aby przyjmował argument liczb całkowitych skalarnych ani nie generował pojedynczej liczby całkowitej
Graham,
1
@Graham Online, kod jest przypisany do zmiennej f(w ten sposób f←są jeszcze 2 bajty, które nie są tutaj liczone), i istnieje wiązka testowa, która zwraca wyniki od 1do 10.
Erik the Outgolfer,
Na pewno musisz policzyć wszystkie bajty, w tym wszelkie takie przypisania i te wymagane do wprowadzenia danych wejściowych zgodnie ze specyfikacją pytania i wyjścia zgodnie ze specyfikacją. Moja odpowiedź APL monituje o wprowadzenie ekranu.
Graham
@Graham to dyalog APL dfns. Nie wymaga przypisania przypisania do żadnego wejścia, gniazdo TIO służy tylko wygodnemu widokowi
Uriel,
Na tej podstawie mogę założyć, że mogę przypisać n w moim obszarze roboczym przed uruchomieniem jednej linijki APL, a tym samym zaoszczędzić 7 bajtów, nie jestem pewien, czy nasi konkurenci to zaakceptują.
Graham
3

Galaretka , 7 bajtów

*R$€Ẏ⁸ị

Wypróbuj online!

-1 dzięki Mr. Xcoder .

1-indeksowany.

Erik the Outgolfer
źródło
Niesamowity kod tutaj.
Jonathan Allan,
Pozbywając się fantazyjnej składni ", moje własne rozwiązanie to 7 bajtów:*R$€F⁸ị
Pan Xcoder,
@ Mr.Xcoder Dzięki, chociaż już usunąłem ", ale nadal. Oto, co dostajesz za konieczność studiowania historii: /
Erik the Outgolfer,
3

Haskell , 30 28 bajtów

Zaoszczędzono 2 bajty dzięki xnor.

([n^m|n<-[1..],m<-[1..n]]!!)

Wypróbuj online!

0-indeksowane

H.PWiz
źródło
1
W rzeczywistości użycie komp [n^i|n<-[1..],i<-[1..n]]. Listy jest krótsze .
xnor
Och, porównywałem to do >>=formy ...
H.PWiz
3

MATL , 9 bajtów

:t!^RXzG)

Indeksowanie jest oparte na 1. Wypróbuj online! Lub sprawdź wszystkie przypadki testowe .

Wyjaśnienie

Rozważ dane wejściowe 5jako przykład.

:     % Implcit input n. Push range [1 2 ... n]
      % STACK: [1 2 3 4 5]
t!^   % Matrix of all pair-wise powers
      % STACK: [1    2    3    4    5;
                1    4    9   16   25;
                1    8   27   64  125;
                1   16   81  256  625;
                1   32  243 1024 3125]
R     % Upper triangular matrix
      % STACK: [1    2    3    4    5;
                0    4    9   16   25;
                0    0   27   64  125;
                0    0    0  256  625;
                0    0    0    0 3125]
Xz    % Nonzeros. Reads values in column-major order
      % STACK: [1; 2; 4; 3; 9; ...; 625; 3125]
G)    % Get n-th entry (1-based). Implcit display
      % STACK: 9
Luis Mendo
źródło
3

APL (Dyalog) , 14 12 bajtów

{⍵⌷∊*∘⍳⍨¨⍳⍵}

Wypróbuj online!

Wykorzystuje indeksowanie 1

Zapisano 2 bajty z ↑,/ → ∊ , zaczerpnięte z odpowiedzi Grahama

Pamiętaj, że w linku testowym kod wymaga dodatkowego f←, ale nie jest to liczone zgodnie z naszymi zasadami.

H.PWiz
źródło
Bardzo sprytne użycie z .
Adám
@ Adám Dzięki :-)
H.PWiz
{⍵⌷∊*∘⍳⍨¨⍳⍵}⊢⌷∘∊((*∘⍳)⍨¨⍳)⊢⌷∘∊(⍳(*∘⍳)¨⍳)⊢⌷∘∊⍳*∘⍳¨⍳
Adám
Zamieściłbym
jest funkcją ukrytą, co jest dla dfn. Pomiędzy i jest potrzebna, ponieważ nazywa monadically, więc jest to indeks zamieszczenia . I że zmiany f⍨⍳w ⍳ f ⍳Aby uniknąć wywoływania f ( *∘⍳¨monadically) (o ile i ¨sąsiadują ze sobą, mogą zamienić położenie).
Adám
2

05AB1E , 9 bajtów

ƒNDLm`}I@

Wypróbuj online!

Wyjaśnienie

1-indeksowany.

ƒ           # for N in range [0 ... input]
 N          # push N
  DL        # push range [1 ... N]
    m       # raise N to the power of each in [1 ... N]
     `      # flatten to stack
      }     # end loop
       I@   # get the element at index (input)

Alternatywne rozwiązanie dla listy zamiast pętli

ÝεDLm}˜sè
Emigna
źródło
1

Perl 6 , 29 bajtów

{({|($++X**1..$++)}...*)[$_]}

Sprawdź to

Rozszerzony:

{  # bare block lambda with implicit parameter 「$_」

  (  # generate the sequence

    {  # code block used to generate each value in the sequence

      |(         # slip the values into the outer sequence

        $++      # post-incremented anonymous state value
        X**      # cross using &infix:«**»
        1 .. $++ # from 1 to post-incremented anonymous state value

      )
    }

    ...          # keep generating values until

    *            # never stop

  )[ $_ ]        # index into the sequence (0-based)
}
Brad Gilbert b2gills
źródło
1

JavaScript , 30 bajtów

-1 bajt dzięki Nahuelowi Fouilleulowi

f=(x,n=1)=>x>n?f(x-n,n+1):n**x

Wypróbuj online!

FlipTack
źródło
-1 bajt odwracający testf=(x,n=1)=>x>n?f(x-n,n+1):n**x
Nahuel Fouilleul
@NahuelFouilleul oczywiście, dziękuję!
FlipTack,
0

Galaretka ,  15  12 bajtów

Prawdopodobnie nie optymalne.

-3 dzięki grze w golfa Erika the Outgolfer .

=RṁR€T€µT*FḢ

Wypróbuj online!

Jonathan Allan
źródło
Wow, musisz być dzisiaj naprawdę zmęczony.
Erik the Outgolfer,
Jestem naprawdę chory!
Jonathan Allan,
10
Przepraszam! Mam nadzieję, że niedługo poczujesz się lepiej!
Erik the Outgolfer,
Poza tym oto około 3 bajtów, z których udało mi się wyciągnąć z tego trywialnie.
Erik the Outgolfer,
0

APL + WIN, 23 bajty

(∊n↑¨⊂[2]n∘.*n←⍳n)[n←⎕]

Wyjaśnienie:

[n←⎕] prompts for screen input and selects the nth element of the concatenated vector
see below

n←⍳n creates a vector of 1 to n

∘.* outer product with exponentiation as the operator

⊂[2] enclose each row of the resulting array as an element of a nested array

∊n↑¨ take 1 to n elements from the 1 to nth row of the matrix and concatenate into a vector
Graham
źródło
Na jakim dialekcie APL działa to?
Erik the Outgolfer,
Jest napisany w APL + WIN. Wyjaśnię to w przyszłych odpowiedziach
Graham,
Wziąłem z twojej odpowiedzi, aby zastąpić moją ↑,/. Nie wiedziałem o tej funkcji. Dzięki
H.PWiz
@EriktheOutgolfer Myślę, że to zadziała na każdej nowoczesnej APL.
Adám
0

Perl 5, 30 + 1 (-p) bajtów

$_-=$.++until$.>$_;$_=$.**++$_

spróbuj online

Nahuel Fouilleul
źródło
0

Clojure 51 bajtów

Indeksowane 0, na przykład 9zwraca dane wejściowe 256.0.

#(nth(for[i(range)j(range i)](Math/pow i(inc j)))%)
NikoNyrh
źródło
0

do 76, 62 bajty

y;f(n){for(y=0;n>y*++y/2;);return(int)pow(y-1,n+y*(3-y)/2-1);}

y; f (n) {y = (int) (-. 5 + sqrt (1 + 8 * ~ -n) / 2) +2; n + = y * (3-y) / 2-1; return (int ) pow (y-1, n);}

Oparłem go na tym kodzie

Wypróbuj na ideone

PrincePolka
źródło
0

Pyt , 39 37 bajtów

1-indeksowany

←000`ŕŕ⁺ĐĐř^Đ04Ș↔+⇹Ł-Đ↔3Ș0>łŕ0↔⇹+⁻⦋↔ŕ

Wyjaśnienie:

W skrócie, oblicza każdy wiersz. Jeśli żądany numer znajduje się w tym wierszu, zwróć go; w przeciwnym razie przejdź do następnego wiersza.

mudkip201
źródło