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!


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



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


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

Haskell , 30 28 bajtów

Zaoszczędzono 2 bajty dzięki xnor.

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

Wypróbuj online!

0-indeksowane


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

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.


Bardzo sprytne użycie z .
Adám

@ Adám Dzięki :-)
H.PWiz

{⍵⌷∊*∘⍳⍨¨⍳⍵}⊢⌷∘∊((*∘⍳)⍨¨⍳)⊢⌷∘∊(⍳(*∘⍳)¨⍳)⊢⌷∘∊⍳*∘⍳¨⍳
Adám


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è

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)
}






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

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

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)))%)


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.