La secuencia de enteros exponenciados por rango

16

Considere un triángulo en el que el N º fila (1-indexada) es la matriz de los primero N potencias enteras positivas de N . Aquí están las primeras filas:

N | Triángulo

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

Ahora, si concatenamos esos poderes en una sola secuencia, obtenemos OEIS A075363 :

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

Dado un número entero N , su tarea es devolver el N º término de esta secuencia. Puede elegir 0 o 1 indexación.

Casos de prueba

1 indexado:

N -> Salida

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

0 indexado:

N -> Salida

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

Tenga en cuenta que estas lagunas están prohibidas por defecto. Este es el , por lo tanto, gana la presentación válida más corta en cada idioma.

Sr. Xcoder
fuente
Creo que hay algún error en los casos de prueba: en 1 indexado 10 debería ser 256; en 0 indexado 9 debería ser 256.
Galen Ivanov
¿Podemos tener espacios finales?
Stan Strum
@StanStrum Sí.
Sr. Xcoder

Respuestas:

7

Cáscara , 7 bytes

!ṁṠM^ḣN

Pruébalo en línea!

1 indexado

Explicación:

      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
fuente
5

Wolfram Language (Mathematica) , 32 bytes

r=Range;Flatten[r@#^r@r@#][[#]]&

Pruébalo en línea!

Rangos al poder de rangos de rangos ...

Martin Ender
fuente
Range@Range@3vuelve {{1}, {1, 2}, {1, 2, 3}}? Maldición, el enhebrado de la lista de Mathematica es una locura.
numbermaniac
4

APL (Dyalog) , 15 13 10 bytes

3 bytes guardados gracias a @ Adám

⊢⊃∘∊⍳*⍳¨∘⍳

Pruébalo en línea!

¿Cómo?

⍳¨∘⍳ - cree un rango para cada número en el rango de entrada

⍳* - elevar cada número en el rango de entrada a las potencias correspondientes

- aplanar

⊢⊃ - elige el enésimo elemento

Uriel
fuente
Al intentarlo en línea, el código parece tener 17 bytes y no parece aceptar un argumento entero escalar ni producir una sola salida entera
Graham
1
@Graham Online, el código se asigna a una variable f(por lo tanto, f←son 2 bytes más, que no se cuentan aquí), y hay un arnés de prueba que devuelve los resultados de 1a 10.
Erik el Outgolfer
Seguramente debe contar todos los bytes, incluidas las asignaciones y las requeridas para recibir la entrada de acuerdo con la especificación de la pregunta y la salida de acuerdo con la especificación. Mi respuesta APL solicita entradas de pantalla.
Graham
@Graham, este es un dyalog APL dfns. No requiere que se aplique la asignación en ninguna entrada, la salida TIO es solo para una vista cómoda
Uriel
Sobre esa base, puedo suponer que puedo asignar n dentro de mi espacio de trabajo antes de ejecutar APL one liner y, por lo tanto, ahorrar 7 bytes, no estoy seguro de que nuestros competidores lo acepten.
Graham
3

Jalea , 7 bytes

*R$€Ẏ⁸ị

Pruébalo en línea!

-1 gracias al Sr. Xcoder .

1 indexado.

Erik el Outgolfer
fuente
Código impresionante aquí.
Jonathan Allan el
Deshaciéndome de la sintaxis elegante ", mi propia solución es de 7 bytes:*R$€F⁸ị
Sr. Xcoder
@ Mr.Xcoder Gracias, aunque ya había eliminado el ", pero aún así. Eso es lo que obtienes por tener que estudiar historia: /
Erik the Outgolfer el
3

Haskell , 30 28 bytes

Guardado 2 bytes gracias a xnor.

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

Pruébalo en línea!

0 indexado

H.PWiz
fuente
1
En realidad es más corto usar la lista de compilación [n^i|n<-[1..],i<-[1..n]].
xnor
Oh, lo estaba comparando con la >>=forma ...
H.PWiz
3

MATL , 9 bytes

:t!^RXzG)

La indexación se basa en 1. Pruébalo en línea! O verificar todos los casos de prueba .

Explicación

Considere la entrada 5como un ejemplo.

:     % 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
fuente
3

APL (Dyalog) , 14 12 bytes

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

Pruébalo en línea!

Utiliza 1 indexación

Guardado 2 bytes con ↑,/ → ∊, tomado de la respuesta de Graham

Tenga en cuenta que en el enlace de prueba, el código requiere un extra f←, pero esto no se cuenta según nuestras reglas.

H.PWiz
fuente
Uso muy inteligente de con .
Adám
@ Adám Gracias :-)
H.PWiz
{⍵⌷∊*∘⍳⍨¨⍳⍵}⊢⌷∘∊((*∘⍳)⍨¨⍳)⊢⌷∘∊(⍳(*∘⍳)¨⍳)⊢⌷∘∊⍳*∘⍳¨⍳
Adám
Publicaría eso ... si tuviera alguna idea de cómo funcionó
H.PWiz
es para una función tácita lo que es para un dfn. El intermedio y es necesario porque se llama monádicamente, por lo que se indexa al alistado . Y cambiamosf⍨⍳ en ⍳ f ⍳para evitar llamar f ( *∘⍳¨) monádicamente (siempre y ¨son adyacentes, que pueden intercambiar la posición).
Adám el
2

05AB1E , 9 bytes

ƒNDLm`}I@

Pruébalo en línea!

Explicación

1 indexado.

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

Solución alternativa sobre una lista en lugar de un bucle

ÝεDLm}˜sè
Emigna
fuente
1

Perl 6 , 29 bytes

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

Pruébalo

Expandido:

{  # 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
fuente
1

JavaScript , 30 bytes

-1 byte gracias a Nahuel Fouilleul

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

Pruébalo en línea!

FlipTack
fuente
-1 byte invirtiendo la pruebaf=(x,n=1)=>x>n?f(x-n,n+1):n**x
Nahuel Fouilleul
@NahuelFouilleul, por supuesto, ¡gracias!
FlipTack
0

APL + WIN, 23 bytes

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

Explicación:

[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
fuente
¿En qué dialecto APL funciona esto?
Erik the Outgolfer el
Está escrito en APL + WIN. Dejaré esto claro en cualquier respuesta futura
Graham
Tomé de tu respuesta para reemplazar mi ↑,/. No sabía de esa función. Gracias
H.PWiz
@EriktheOutgolfer Creo que esto funcionará en cualquier APL moderna.
Adám
0

Clojure 51 bytes

0 indexado, por ejemplo, la entrada 9devuelve 256.0.

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

C 7662 bytes

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

Lo basé en este código

Pruébalo en ideone

PrincePolka
fuente
0

Pyt , 39 37 bytes

1 indexado

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

Explicación:

Brevemente, calcula cada fila. Si el número solicitado está en esa fila, devuélvalo; de lo contrario, pase a la siguiente fila.

mudkip201
fuente