Tâche - Le titre résume assez bien: augmenter un entier x pour alimenter x , où 0<x
.
Restrictions:
- L' utilisation de exponentiation,
exp()
,ln()
et tout autre comme langue connexes-pouvoirs Encastrements,pow()
,x^x
,x**x
est interdite. - Vous pouvez supposer que l'entier donné correspond aux limites du langage de programmation de votre choix.
Cas de test:
Input | Output
---------------
2 | 4
3 | 27
5 | 3125
6 | 46656
10 | 10000000000
Il s'agit de code-golf , donc le programme le plus court en octets l'emporte.
code-golf
math
arithmetic
Hirsute
la source
la source
0
et que la sortie attendue soit spécifiée (0
ou1
ou soit). Enfin, avoir à gérer des nombres entiers négatifs serait un bon ajout au défi.1
pour0^0
. Cependant,Foundation
+ Swift renvoie 00
et au lieu de cela spécifié0<x
dans l' entrée . J'ai également supprimé la restriction selon laquelle le code ne devrait pas générer d'erreur. Cela devrait être évident. N'hésitez pas à revenir en arrière si nécessaire.Réponses:
APL (Dyalog) , 4 octets
Pour x x , prend x comme argument gauche et x comme argument droit.
Essayez tous les cas en ligne!
×/
produit de⍴⍨
arg copies argEt en voici un qui gère également les entiers négatifs:
Essayez tous les cas!
×/
le produit de|
valeur absolue⍴
r épétitions de|
la valeur absolue*
au pouvoir de×
le signumLa primitive Power intégrée est:
la source
Python , 25 octets
Essayez-le en ligne!
la source
Mathematica, 16 octets
J'ai deux solutions à ce nombre d'octets:
Ici,
#~Table~#
crée une liste den
copies den
. Ensuite, laList
tête est remplacée par1##&
ce qui multiplie tous ses arguments ensemble.Cela stocke simplement l'entrée
n
puis multiplie1
parn
,n
fois.la source
#~Product~{#}&
JavaScript (ES6),
33282524 octetsEssayez-le
Histoire
25 octets
28 octets
33 octets
la source
Pure bash, 43
Essayez-le en ligne .
Je ne sais pas si cela déforme trop les règles - je n'utilise aucun des modules internes interdits répertoriés, mais j'utilise la conversion de base.
printf 1%0$1d
sorties a1
suivi de n0
s$[b#a]
est une expansion arithmétique à traitera
comme unb
nombre de base , qui donne le résultat requis. Malheureusement, la base <2 ne fonctionne pas, donc les?:
bits supplémentaires gèrent l'entrée n = 1.L'entrée maximale est de 15, car bash utilise des entiers signés 64 bits (jusqu'à 2 31 -1).
la source
Alice , 13 octets
Essayez-le en ligne!
Explication
Il s'agit d'un cadre pour les programmes qui lisent et écrivent des entiers décimaux et fonctionnent entièrement en mode Cardinal (donc les programmes pour la plupart des problèmes arithmétiques).
la source
ML standard , 42 octets
Essayez-le en ligne!
Explication:
la source
Gelée , 3 octets
Essayez-le en ligne!
Comment?
la source
F7 88 50
fonctionne comme prévu.Cubix , 19 octets
Essayez-le en ligne!
Pas à pas
S'étend sur un cube de longueur latérale 2
I:1
Prend l'entrée, la duplique et appuie sur 1. Ceci configure la pile avec un compteur, un multiplicateur et un résultat.*s;
Multiplie le TOS, échange le résultat avec le précédent et supprime le précédent.pu
Apportez le contre-objet au TOS. Demi-tour. Il s'agissait d'un changement de voie, mais il fallait raser un octet.|($
Cela a été fait pour enregistrer un octet. Lorsqu'il est touché, il saute le décrément. réfléchit, décrémente le compteur et ignore le pas d'opération qui entoure le cube.!vqW
Testez le compteur. Si vous ignorez la redirection, mettez le compteur sur BOS, changez de voie sur le multiplicateur. Sinon, redirigez.|sO@
il s'agit de la séquence de fin redirigée vers le contre-test. Dépasse le reflet horizontal, échange le TOS apportant le résultat au TOS, sortie et arrêt.la source
R, 22 octets
lit
x
de stdin.génère une liste de
x
copies dex
, puis calcule le produit des éléments de cette liste. Quandx=0
, lerep
retournumeric(0)
, qui est un vecteur numérique de longueur0
, maisprod
qui est 1, donc0^0=1
par cette méthode, qui est cohérente avec l'exponentiation intégrée de R, donc c'est plutôt bien.Essayez-le en ligne!
la source
Langage machine x86_64 pour Linux,
14 1110 octetsPour l' essayer en ligne! , compilez et exécutez le programme C suivant.
la source
Rubis,
2018 octets-2 octets car la spécification a changé et je n'ai plus besoin d'un argument exposant.
Essayez-le en ligne!
la source
Empilé , 10 octets
Essayez-le en ligne!
Exponentiation à deux arguments pour la même taille:
Les deux sont des fonctions. Répète une fonction qui se multiplie
1
par len
n
temps.la source
Scala ,
3226 octetsEssayez-le en ligne! (Ajout de la conversion en long dans le TIO afin qu'il ne déborde pas sur n = 10.)
la source
05AB1E , 3 octets
Essayez-le en ligne! ou Essayez tous les exemples
la source
.D
. La première fois que je l'ai vu utilisé.Haskell ,
242321 octetsEssayez-le en ligne!
la source
f y=foldr1(*)$y<$[1..y]
est un octet plus court.product$y<$[1..y]
Japt , 4 octets
Essayez-le en ligne!
Explication
la source
x86 machine code (Linux), 18 bytes
It expects a C declaration as follows
extern int XpowX(int)
.Disassembled
la source
Brachylog, 6 bytes
Try it online!
Explanation
la source
CJam, 7 bytes
Try it online!
Explanation
la source
Perl 6, 13 bytes
$_ xx $_
evaluates to a list of$_
copies of$_
($_
being the argument to the anonymous function), and then[*]
reduces that list with multiplication.la source
CJam, 6 bytes
Try it online!
la source
Clojure, 22
:)
la source
Röda, 17 bytes
Try it online!
It's an anonymous function that takes it's input from the stream.
Explanation:
la source
dc,
24232622 bytesThis is my first attempt writing a recursive macro in dc. I am sure it is a sub-optimal solution which can be improved a lot.
Try it online!
Edit: Thanks eush77! -4 bytes.
la source
x=1
.lr
sequences at the end with twod
s at the beginning.x
copies ofx
on the stack (and1
of course), andx
multiplications thereafter. So the ending can just be plaindsFxp
.lr
wouldn't work here. It's my first time golfing in a stack-based language, so it feels very unusual. Thanks for your help!Batch, 58 bytes
Only works for single-digit inputs due to 32-bit arithmetic.
la source
brainf*ck, 148 bytes
Try it online!
No built-ins ;)
How it works
In a nutshell, this works by multiplying
x
(the input) by itselfx
times. (a.k.a. iterating iterated addition). The net result is x^x.I/O
The program takes a single ASCII input, and processes it as it's ASCII index minus 48. The minus 48 is to normalize inputs of actual numbers (
4
becomes52
->52-48
->4
). To input a number higher than 9, use the next corrosponging ASCII character (:
->58-48
->10
). The program ouputs in a similar fashion.Test I/O
Since there are no printable ASCII characters after an input of 3, it can only print numbers in theory. Though, you can check all inputs do in fact work on visualizers such as this.
la source
MATLAB/Octave, 23 bytes
la source
Python, 32 bytes
Try it online!
la source
f=
part, so you can shorten your submission to 30 bytes.f=
part does need to be counted, because it's recursive, so it relies upon the function being namedf
in order to work properlyCommon Lisp,
59 4240 bytesTry it online!
la source