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!


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



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


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

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

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.


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


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è

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






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

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

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


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.