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.