La séquence des nombres entiers exponentiels


16

Considérons un triangle où la N ième ligne (1-indexé) est la matrice des première N puissances entières positives de N . Voici les premières lignes:

N | Triangle

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

Maintenant, si nous concaténons ces pouvoirs en une seule séquence, nous obtenons OEIS A075363 :

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

Étant donné un entier N , votre tâche consiste à renvoyer le N ème terme de cette séquence. Vous pouvez choisir l'indexation 0 ou 1.

Cas de test

1 indexé:

N -> Sortie

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

0 indexé:

N -> Sortie

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

Notez que ces failles sont interdites par défaut. Il s'agit de , donc la soumission valide la plus courte dans chaque langue gagne!


Je pense qu'il y a une erreur dans les cas de test: dans 1 indexé, 10 devrait être 256; en 0 indexé 9 devrait être 256.
Galen Ivanov

Pouvons-nous avoir des espaces de fin?
Stan Strum

@StanStrum Oui.
M. Xcoder

Réponses:



7

Husk , 7 octets

!ṁṠM^ḣN

Essayez-le en ligne!

1 indexé

Explication:

      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 octets

3 octets économisés grâce à @ Adám

⊢⊃∘∊⍳*⍳¨∘⍳

Essayez-le en ligne!

Comment?

⍳¨∘⍳ - créer une plage pour chaque numéro dans la plage d'entrée

⍳* - augmenter chaque nombre dans la plage d'entrée aux puissances correspondantes

- aplatir

⊢⊃ - choisissez le nième élément


L'essayer en ligne le code semble être de 17 octets et il ne semble pas accepter un argument entier scalaire ou produire une sortie entière unique
Graham

1
@Graham Online, le code est assigné à une variable f(c'est donc f←2 octets de plus, qui ne sont pas comptés ici), et il y a un harnais de test qui renvoie les résultats de 1à 10.
Erik the Outgolfer

Vous devez sûrement compter tous les octets, y compris toutes les affectations de ce type et celles requises pour accepter l'entrée conformément à la spécification de question et la sortie conformément à la spécification. Ma réponse APL demande une saisie à l'écran.
Graham

@Graham c'est un dfal APL dyalog. Il ne nécessite aucune affectation à appliquer sur n'importe quelle entrée, la prise TIO est juste pour une vue confortable
Uriel

Sur cette base, puis-je supposer que je peux attribuer n dans mon espace de travail avant d'exécuter APL one liner et ainsi économiser 7 octets, je ne suis pas sûr que nos collègues concurrents l'accepteront.
Graham


3

Haskell , 30 28 octets

Enregistré 2 octets grâce à xnor.

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

Essayez-le en ligne!

0 indexé


1
Il est en fait plus court d'utiliser la liste comp [n^i|n<-[1..],i<-[1..n]].
xnor

Oh, je le comparais à la >>=forme ...
H.PWiz

3

MATL , 9 octets

:t!^RXzG)

L'indexation est basée sur 1. Essayez-le en ligne! Ou vérifiez tous les cas de test .

Explication

Considérez la saisie 5comme exemple.

:     % 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 octets

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

Essayez-le en ligne!

Utilise l'indexation 1

Enregistré 2 octets avec ↑,/ → ∊, tiré de la réponse de Graham

Notez que dans le lien de test, le code nécessite un supplément f←, mais cela n'est pas compté selon nos règles.


Utilisation très intelligente de avec .
Adám

@ Adám Merci :-)
H.PWiz

{⍵⌷∊*∘⍳⍨¨⍳⍵}⊢⌷∘∊((*∘⍳)⍨¨⍳)⊢⌷∘∊(⍳(*∘⍳)¨⍳)⊢⌷∘∊⍳*∘⍳¨⍳
Adám


est à une fonction tacite ce qui est à un dfn. L' entre et est nécessaire car est appelé monadiquement, il indexe donc l'enrôlé . Et nous changeons f⍨⍳en ⍳ f ⍳pour éviter d'appeler f ( *∘⍳¨) monadiquement (chaque fois que et ¨sont adjacents, ils peuvent changer de position).
Adám


2

05AB1E , 9 octets

ƒNDLm`}I@

Essayez-le en ligne!

Explication

1 indexé.

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

Solution alternative sur une liste au lieu d'une boucle

ÝεDLm}˜sè

1

Perl 6 , 29 octets

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

Essaye-le

Étendu:

{  # 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 octets

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

Explication:

[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

Sur quel dialecte APL cela fonctionne-t-il?
Erik the Outgolfer

Il est écrit en APL + WIN. Je le préciserai dans toutes les réponses futures
Graham

J'ai pris votre réponse pour remplacer la mienne ↑,/. Je ne connaissais pas cette fonction. Merci
H.PWiz

@EriktheOutgolfer Je pense que cela fonctionnera sur n'importe quel APL moderne.
Adám



0

Clojure 51 octets

Indexé 0, par exemple, les 9retours d' entrée 256.0.

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


0

Pyt , 39 37 octets

1 indexé

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

Explication:

En bref, il calcule chaque ligne. Si le numéro demandé se trouve dans cette ligne, renvoyez-le; sinon, passez à la ligne suivante.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.