A sequência de números inteiros exponenciados por intervalo

16

Considere-se um triângulo, onde a N -ésima linha (1-indexada) representa a matriz dos primeiro N potências inteiras positivas de N . Aqui estão as primeiras linhas:

N Triângulo

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

Agora, se concatenarmos esses poderes em uma única sequência, obteremos o OEIS A075363 :

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

Dado um inteiro N , sua tarefa é devolver o N º termo desta seqüência. Você pode escolher a indexação 0 ou 1.

Casos de teste

1 indexado:

N -> Saída

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

Indexado em 0:

N -> Saída

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

Observe que essas brechas são proibidas por padrão. Isso é , e assim vence o envio válido mais curto em cada idioma!

Mr. Xcoder
fonte
Eu acho que há algum erro nos casos de teste: em 10 indexados em 1 deve ser 256; em 0-indexados 9 deve ser 256.
Galen Ivanov
Podemos ter espaços à direita?
Stan Strum
@StanStrum Sim.
Mr. Xcoder

Respostas:

7

Casca , 7 bytes

!ṁṠM^ḣN

Experimente online!

Indexado 1

Explicação:

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

Wolfram Language (Mathematica) , 32 bytes

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

Experimente online!

Varia de acordo com o poder das faixas de faixas ...

Martin Ender
fonte
Range@Range@3retorna {{1}, {1, 2}, {1, 2, 3}}?! Porra, o encadeamento de listas do Mathematica é insano.
numbermaniac
4

APL (Dyalog) , 15 13 10 bytes

3 bytes salvos graças a @ Adám

⊢⊃∘∊⍳*⍳¨∘⍳

Experimente online!

Quão?

⍳¨∘⍳ - crie um intervalo para cada número no intervalo de entrada

⍳* - aumentar cada número na faixa de entrada para as potências correspondentes

- achatar

⊢⊃ - escolha o enésimo elemento

Uriel
fonte
Tentá-lo on-line as aparece código a ser 17 bytes e ele não aparece para aceitar um argumento inteiro escalar ou produzir uma única saída inteiro
Graham
1
@ Graham Online, o código é atribuído a uma variável f(portanto, f←são mais 2 bytes, que não são contados aqui), e há um equipamento de teste que retorna os resultados de 1para 10.
Erik the Outgolfer
Certamente, você deve contar todos os bytes, incluindo as atribuições e os necessários para receber a entrada de acordo com a especificação da pergunta e produzir de acordo com a especificação. Minha resposta do APL solicita a entrada na tela.
Graham
@ Graham este é um dfns APL dyalog. Ele não requer que a atribuição seja aplicada a nenhuma entrada, a saída TIO é apenas para uma visualização confortável #
913 de Uriel
Com base nisso, posso assumir que posso atribuir n em minha área de trabalho antes de executar o liner da APL e, assim, economizar 7 bytes, não tenho certeza de que nossos colegas concorrentes aceitem isso.
Graham
3

Geléia , 7 bytes

*R$€Ẏ⁸ị

Experimente online!

-1 graças ao Sr. Xcoder .

1 indexado.

Erik, o Outgolfer
fonte
Código incrível aqui.
Jonathan Allan
Livrando-me da sintaxe extravagante ", minha própria solução é de 7 bytes:*R$€F⁸ị
Sr. Xcoder 19/17/17
@ Mr.Xcoder Obrigado, embora eu já tivesse removido o ", mas ainda assim. Isso é o que você ganha por ter que estudar história: /
Erik the Outgolfer
3

Haskell , 30 28 bytes

Economizou 2 bytes graças ao xnor.

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

Experimente online!

Indexado a 0

H.PWiz
fonte
1
Na verdade, é mais curto usar o comp da lista [n^i|n<-[1..],i<-[1..n]].
Xnor
Ah, eu estava comparando-o com a >>=forma ... #
2117 H.PWiz
3

MATL , 9 bytes

:t!^RXzG)

A indexação é baseada em 1. Experimente online! Ou verifique todos os casos de teste .

Explicação

Considere a entrada 5como um exemplo.

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

APL (Dyalog) , 14 12 bytes

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

Experimente online!

Usa indexação 1

2 bytes salvos com ↑,/ → ∊ , retirado da resposta de Graham

Observe que no link de teste, o código requer um extra f←, mas isso não é contabilizado de acordo com nossas regras.

H.PWiz
fonte
Uso muito inteligente de com .
Adám 19/11/19
@ Adám Thanks :-)
H.PWiz
{⍵⌷∊*∘⍳⍨¨⍳⍵}⊢⌷∘∊((*∘⍳)⍨¨⍳)⊢⌷∘∊(⍳(*∘⍳)¨⍳)⊢⌷∘∊⍳*∘⍳¨⍳
Adám
Eu ia postar isso ... se eu tivesse alguma idéia de como isso funcionou
H.PWiz
é para uma função tácita o que é para um dfn. O entre e é necessário porque é chamado monadicamente, portanto é indexado o alistado . E nós mudar f⍨⍳para ⍳ f ⍳evitar chamar f ( *∘⍳¨) monadically (sempre e ¨são adjacentes, eles podem trocar de posição).
Adám 22/11/19
3

Pitão , 8 bytes

@s^RSdSh

Experimente aqui.

-1 graças a Steven H ..

Indexado a 0.

Erik, o Outgolfer
fonte
@s^RSdShpara tirar um byte de golfe.
Steven H.
2

05AB1E , 9 bytes

ƒNDLm`}I@

Experimente online!

Explicação

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)

Solução alternativa em uma lista em vez de um loop

ÝεDLm}˜sè
Emigna
fonte
1

Perl 6 , 29 bytes

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

Teste-o

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
fonte
1

JavaScript , 30 bytes

-1 byte graças a Nahuel Fouilleul

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

Experimente online!

FlipTack
fonte
-1 byte invertendo o testef=(x,n=1)=>x>n?f(x-n,n+1):n**x
Nahuel Fouilleul
@NahuelFouilleul é claro, obrigado!
FlipTack
0

APL + WIN, 23 bytes

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

Explicação:

[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
fonte
Em que dialeto da APL isso funciona?
Erik the Outgolfer
Está escrito em APL + WIN. Vou deixar isso claro em todas as respostas futuras
Graham
Eu tirei da sua resposta para substituir a minha ↑,/. Eu não sabia dessa função. Graças
H.PWiz
@EriktheOutgolfer Acho que isso funcionará em qualquer APL moderno.
Adám 19/11/19
0

Perl 5, 30 + 1 (-p) bytes

$_-=$.++until$.>$_;$_=$.**++$_

experimente online

Nahuel Fouilleul
fonte
0

Clojure 51 bytes

Indexado a 0, por exemplo, 9retornos de entrada 256.0.

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

C 76, 62 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);}

Baseei-o neste código

Experimente em ideone

PrincePolka
fonte
0

Pyt , 39 37 bytes

Indexado 1

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

Explicação:

Resumidamente, calcula cada linha. Se o número solicitado estiver nessa linha, retorne-o; caso contrário, vá para a próxima linha.

mudkip201
fonte