La sequenza di numeri interi esponenziali


16

Si consideri un triangolo in cui il N ° fila (1-indicizzato) è la matrice dei primi N potenze intere positive di N . Ecco le prime righe:

N | Triangolo

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

Ora se concateniamo questi poteri in un'unica sequenza, otteniamo OEIS A075363 :

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

Dato un intero N , il vostro compito è quello di restituire l' N esimo termine di questa sequenza. Puoi scegliere 0 o 1-indicizzazione.

Casi test

1-indicizzati:

N -> Uscita

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

0-indicizzati:

N -> Uscita

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

Si noti che queste scappatoie sono vietate per impostazione predefinita. Questo è , quindi vince l'invio valido più breve in ogni lingua!


Penso che ci sia qualche errore nei casi di test: in 1 indicizzato 10 dovrebbero essere 256; in 0 con indice 9 dovrebbe essere 256.
Galen Ivanov,

Possiamo avere spazi finali?
Stan Strum,

@StanStrum Sì.
Mr. Xcoder,

Risposte:



7

Buccia , 7 byte

!ṁṠM^ḣN

Provalo online!

1-indicizzato

Spiegazione:

      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 byte

3 byte salvati grazie a @ Adám

⊢⊃∘∊⍳*⍳¨∘⍳

Provalo online!

Come?

⍳¨∘⍳ - creare un intervallo per ciascun numero nell'intervallo di input

⍳* - aumentare ogni numero nell'intervallo di input alle potenze corrispondenti

- appiattire

⊢⊃ - scegli l'ennesimo elemento


Provandolo online il codice sembra essere di 17 byte e non sembra accettare un argomento intero scalare o produrre un singolo output intero
Graham

1
@Graham Online, il codice viene assegnato a una variabile f(quindi f←sono 2 byte in più, che qui non vengono conteggiati) e c'è un cablaggio di prova che restituisce i risultati da 1a 10.
Erik the Outgolfer,

Sicuramente è necessario contare tutti i byte inclusi tali incarichi e quelli necessari per accettare l'input in base alle specifiche della domanda e in uscita in base alle specifiche. La mia risposta APL richiede l'inserimento dello schermo.
Graham,

@Graham questo è un dyal dllog APL. Non richiede l'assegnazione da applicare su nessun ingresso, l'uscita TIO è solo per una visione confortevole
Uriel

Su tale base posso supporre di poter assegnare n all'interno del mio spazio di lavoro prima di eseguire un liner APL e quindi di salvare 7 byte, non sono sicuro che i nostri colleghi concorrenti lo accetteranno.
Graham,


3

Haskell , 30 28 byte

Salvato 2 byte grazie a xnor.

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

Provalo online!

0-indicizzato


1
In realtà è più breve utilizzare l'elenco comp [n^i|n<-[1..],i<-[1..n]].
xnor

Oh, lo stavo confrontando con il >>=modulo ...
H.Pwiz,

3

MATL , 9 byte

:t!^RXzG)

L'indicizzazione è basata su 1. Provalo online! Oppure verifica tutti i casi di test .

Spiegazione

Considera l'input 5come esempio.

:     % 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 byte

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

Provalo online!

Utilizza 1-indicizzazione

Salvato 2 byte con ↑,/ → ∊, tratto dalla risposta di Graham

Si noti che nel collegamento di prova, il codice richiede un extra f←, ma questo non viene conteggiato secondo le nostre regole.


Uso molto intelligente di con .
Adám,

@Adám Thanks :-)
H.PWiz,

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


è una funzione tacita ciò che è un dfn. Il mezzo e è necessario perché viene chiamato monadicamente, quindi viene indicizzato l' elenco . E cambiamo f⍨⍳in ⍳ f ⍳per evitare di chiamare f ( *∘⍳¨) monadicamente (ogni volta che ¨sono adiacenti, possono scambiare posizione).
Adám,


2

05AB1E , 9 byte

ƒNDLm`}I@

Provalo online!

Spiegazione

1-indicizzati.

ƒ           # 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)

Soluzione alternativa su un elenco anziché su un ciclo

ÝεDLm}˜sè

1

Perl 6 , 29 byte

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

Provalo

Allargato:

{  # 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 byte

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

Spiegazione:

[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

Su quale dialetto APL funziona?
Erik the Outgolfer,

È scritto in APL + WIN. Lo chiarirò in tutte le risposte future
Graham,

Ho preso dalla tua risposta per sostituire il mio ↑,/. Non conoscevo quella funzione. Grazie
H.Piz,

@EriktheOutgolfer Penso che funzionerà su qualsiasi APL moderno.
Adám,



0

Clojure 51 byte

0 indicizzato, ad esempio i 9ritorni di input 256.0.

#(nth(for[i(range)j(range i)](Math/pow i(inc j)))%)


0

Pyt , 39 37 byte

1-indicizzato

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

Spiegazione:

In breve, calcola ogni riga. Se il numero richiesto è in quella riga, restituirlo; altrimenti, vai alla riga successiva.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.