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.


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



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


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

Haskell , 30 28 bytes

Guardado 2 bytes gracias a xnor.

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

Pruébalo en línea!

0 indexado


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

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.


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è

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






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

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


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.