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.