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!

M. Xcoder
la source
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
H.PWiz
la source
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

Uriel
la source
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

Gelée , 7 octets

*R$€Ẏ⁸ị

Essayez-le en ligne!

-1 merci à M. Xcoder .

1 indexé.

Erik le Outgolfer
la source
Code génial ici.
Jonathan Allan
Se débarrasser de la syntaxe sophistiquée avec ", ma propre solution est de 7 octets:*R$€F⁸ị
M. Xcoder
@ Mr.Xcoder Merci, même si j'avais déjà supprimé le ", mais quand même. Voilà ce que vous obtenez pour avoir à étudier l'histoire: /
Erik the Outgolfer
3

Haskell , 30 28 octets

Enregistré 2 octets grâce à xnor.

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

Essayez-le en ligne!

0 indexé

H.PWiz
la source
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
Luis Mendo
la source
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.

H.PWiz
la source
Utilisation très intelligente de avec .
Adám
@ Adám Merci :-)
H.PWiz
{⍵⌷∊*∘⍳⍨¨⍳⍵}⊢⌷∘∊((*∘⍳)⍨¨⍳)⊢⌷∘∊(⍳(*∘⍳)¨⍳)⊢⌷∘∊⍳*∘⍳¨⍳
Adám
Je
posterais
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
3

Pyth , 8 octets

@s^RSdSh

Essayez-le ici.

-1 merci à Steven H ..

0 indexé.

Erik le Outgolfer
la source
@s^RSdShjouer au golf un octet.
Steven
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è
Emigna
la source
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)
}
Brad Gilbert b2gills
la source
1

JavaScript , 30 octets

-1 octet grâce à Nahuel Fouilleul

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

Essayez-le en ligne!

FlipTack
la source
-1 octet inversant le testf=(x,n=1)=>x>n?f(x-n,n+1):n**x
Nahuel Fouilleul
@NahuelFouilleul bien sûr, merci!
FlipTack
0

Gelée ,  15  12 octets

Probablement pas optimal.

-3 grâce au golf d' Erik l'Outgolfer .

=RṁR€T€µT*FḢ

Essayez-le en ligne!

Jonathan Allan
la source
Wow, tu dois être vraiment fatigué aujourd'hui.
Erik the Outgolfer
Je suis vraiment vraiment malade!
Jonathan Allan
10
Pardon! J'espère que ça ira mieux bientôt!
Erik the Outgolfer
En outre, voici environ 3 octets de moins que j'ai réussi à retirer de cela trivialement.
Erik the Outgolfer
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
Graham
la source
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

Perl 5, 30 + 1 (-p) octets

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

essayez-le en ligne

Nahuel Fouilleul
la source
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)))%)
NikoNyrh
la source
0

C 76, 62 octets

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

Je l'ai basé sur ce code

Essayez-le sur ideone

PrincePolka
la source
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.

mudkip201
la source