Le défi
Assez simple, étant donné une entrée x
, calculez sa tour de puissance infinie!
x^x^x^x^x^x...
Pour vous, amateurs de mathématiques, c'est x
la tétration infinie .
Gardez à l'esprit les points suivants:
x^x^x^x^x^x... = x^(x^(x^(x^(x...)))) != (((((x)^x)^x)^x)^x...)
Surpris, nous n'avons pas eu de défi mathématique «simple» impliquant cela! *
Hypothèses
x
sera toujours converger.- Les nombres négatifs et complexes devraient pouvoir être traités
- Il s'agit de code-golf , donc les octets les plus bas gagnent!
- Vos réponses doivent être correctes à au moins 5 décimales
Exemples
Input >> Output
1.4 >> 1.8866633062463325
1.414 >> 1.9980364085457847
[Square root of 2] >> 2
-1 >> -1
i >> 0.4382829367270323 + 0.3605924718713857i
1 >> 1
0.5 >> 0.641185744504986
0.333... >> 0.5478086216540975
1 + i >> 0.6410264788204891 + 0.5236284612571633i
-i >> 0.4382829367270323 -0.3605924718713857i
[4th root of 2] >> 1.239627729522762
* (Autre qu'un défi plus compliqué ici )
Réponses:
APL (Dyalog) , 4 octets
Essayez-le en ligne!
*
Puissance⍣
jusqu'à ce que≡
stable⍨
selfiela source
Pyth,
43 octetsbarré 4 est toujours régulier 4; (
Essayez-le en ligne
Comment ça marche
la source
G
, il sera automatiquement rempli.Haskell ,
10063 octetsPour les entrées qui ne convergent pas (par exemple
-2
), cela ne se terminera pas:Merci beaucoup @ ØrjanJohansen de m'avoir appris
until
et de m'avoir sauvé des37
octets!Essayez-le en ligne!
la source
until
fonction. Essayez-le en ligne!until
, merci beaucoup.Python 3 ,
40 3935 octetsd>99
au lieu ded==99
: 1 itération supplémentaire pour un nombre d'octets moindrex**True
évalue à x inx**(d>99or g(x,d+1))
. L'expression du terme est évaluée à True pour une profondeur supérieure à 99 et renvoie donc la valeur transmise.Lambda récursif avec une profondeur maximale de 100, c'est-à-dire pour une profondeur de 100, renvoie la même valeur. En fait, il est indépendant de la convergence, attendez-vous donc à l'inattendu pour les nombres avec des valeurs non convergentes pour la fonction.
Essayez-le en ligne!
la source
complex('j')
par1j
d>99
fait une autre itération et est plus courte.g=lambda x,d=0:x**(d>99or g(x,d+1))
,x**True
évalue àx
Python 3,
373027 octets-7 octets de @FelipeNardiBatista.
-3 octets de @xnor
Je ne me souviens plus beaucoup de Python, mais j'ai réussi à porter ma réponse Ruby et à battre l'autre réponse Python 3: D
Essayez-le en ligne!
la source
x
,eval('x**'*99+'1')
worksMathematica, 12 octets
Prend un nombre à virgule flottante comme entrée.
la source
J , 5 octets
Essayez-le en ligne!
Explication
Tout d'abord, je montrerai quelle commande est exécutée après avoir analysé le
~
à la fin, et la procédure sera pour le nouveau verbe.la source
(^^:_)
crée un nouveau verbe dyadique via le pouvoir conj, puis auto-adverbe~
rend ce verbe monadique, de sorte que lorsqu'il est donné un argument,x
il est étendu àx (^^:_) x
. la gauchex
"colle" ensuite, donnant((x&^)^:_) x
selon votre note, et seul le bon argument change pendant l'itération?x u^:n y
l'argument de gauche est lié à la dyade pour former une monade qui est imbriquée plusieursn
foisy
.x u^:n y -> (x&u)^:n y -> (x&u) ... n times ... (x&u) y
C # (.NET Core) ,
7978 octetsEssayez-le en ligne!
J'ai choisi d'itérer jusqu'à
i
= 999 car si je répétais jusqu'à 99, certains exemples n'atteignaient pas la précision requise. Exemple:Comme vous pouvez le voir, après 99 itérations, la partie imaginaire a échoué à la 5ème décimale.
Dans ce cas, après 99 itérations, nous obtenons la précision attendue. En fait, je pouvais
i
répéter jusqu'à = 1e9 avec le même nombre d'octets, mais cela rendrait le code considérablement plus lentla source
Gelée , 5 octets
Essayez-le en ligne!
la source
Rubis,
2120 octetsAvertissement : Il semble que Ruby renvoie des valeurs étranges lors de l'augmentation d'un nombre complexe à une puissance. Je suppose qu'il est hors de portée de ce défi de corriger l'intégralité du module mathématique de Ruby, mais sinon les résultats de cette fonction devraient être corrects.Edit : appliqué les dernières modifications de ma réponse Python 3 et soudain, il donne en quelque sorte les mêmes résultats attendus :)Essayez-le en ligne!
la source
eval
."0+1i**0+1i**0+1i**..."
, qui est analysée de manière incorrecte car**
a une priorité plus élevée que+
.#inspect
et#to_s
renvoyer des valeurs différentes. Avant de soumettre la réponse initiale, j'ai fait quelques tests dans irb et j'ai vu que, par exemple, entrerComplex(1,2)
dans le REPL donnerait(1+2i)
, y compris les parenthèses. Lors de la chaîne de la valeur, les parenthèses ne sont pas incluses, donc la priorité, comme vous le faites remarquer, l'a gâché.eval
utilisation était interdite.TI-BASIC, 16 octets
L'entrée et la sortie sont stockées dans
Ans
.la source
R ,
3633 octets- 3 octets grâce à Jarko Dubbeldam
Lit à partir de stdin.
Reduce
s de droite pour obtenir les exposants appliqués dans le bon ordre.Essayez-le (fonction)
Essayez-le (stdin)
la source
scan(,1i)
travaux. Similaire auscan(,'')
fonctionnement.Javascript, 33 octets
la source
MATL ,
2010 octetsréduit de moitié grâce à @LuisMendo
Essayez-le en ligne!
C'est mon premier code-golf et ma première utilisation de MATL, donc je suis sûr qu'il pourrait être facilement dépassé.
la source
XII
équivaut àt
. Vous pouvez également vous débarrasserXH
etH
utiliser le presseM
- papiers automatique , c'est-à-direttt^`yw^t5M-]bb-x
. Et dans la dernière partie, au lieu de supprimer les valeurs indésirables que vous pouvez utiliser&
, qui indique à la fonction d'affichage implicite d'afficher uniquement le haut. Vous pouvez donc utiliserttt^`yw^t5M-]&
et enregistrer quelques octets.t
n'est pas nécessaire, et d' utiliser à laG
place d'un autre ,t
vous pouvez éviter&
et laisser ainsi]
implicitement:t^`Gw^t5M-
. Hé, nous avons réduit le nombre d'octets de moitié!Perl 6 , 17 octets
Essayez-le en ligne!
R**
est l'opérateur d'exponentiation inverse;x R** y
est égal ày ** x
.[R**]
réduit une liste de 999 copies de l'argument d'entrée avec exponentiation inverse.la source