El reto
Muy simple, dada una entrada x
, ¡calcule su torre de energía infinita!
x^x^x^x^x^x...
Para ustedes amantes de las matemáticas, esta es x
la tentación infinita .
Tenga en cuenta lo siguiente:
x^x^x^x^x^x... = x^(x^(x^(x^(x...)))) != (((((x)^x)^x)^x)^x...)
¡Sorprendido de que no hayamos tenido un desafío matemático "simple" con esto! *
Supuestos
x
será siempre convergen.- Los números negativos y complejos deben poder manejarse
- Este es el código de golf , por lo que gana los bytes más bajos .
- Sus respuestas deben ser correctas al menos con 5 decimales
Ejemplos
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
* (Aparte de un desafío más complicado aquí )
Respuestas:
APL (Dyalog) , 4 bytes
Pruébalo en línea!
*
poder⍣
hasta≡
estable⍨
selfiefuente
Pyth,
43 bytestachado 4 sigue siendo regular 4; (
Pruébalo en línea
Cómo funciona
fuente
G
, se llenará automáticamente.Haskell ,
10063 bytesPara las entradas que no convergen (por ejemplo
-2
), esto no terminará:¡Muchas gracias @ ØrjanJohansen por enseñarme
until
y guardarme37
bytes!Pruébalo en línea!
fuente
until
función. Pruébalo en línea!until
, muchas gracias.Python 3 ,
40 3935 bytesd>99
lugar ded==99
: 1 iteración más para un recuento de bytes menorx**True
evalúa como x enx**(d>99or g(x,d+1))
. La expresión en el término se evalúa como Verdadero para una profundidad mayor que 99 y, por lo tanto, devuelve el valor pasado.Lambda recursiva con una profundidad máxima de 100, es decir, para una profundidad de 100, devuelve el mismo valor. En realidad, es independiente de la convergencia, por lo que se espera lo inesperado para los números con valores no convergentes para la función.
Pruébalo en línea!
fuente
complex('j')
con1j
d>99
hace una iteración más y es más corta.g=lambda x,d=0:x**(d>99or g(x,d+1))
,x**True
evalúa ax
Python 3,
373027 bytes-7 bytes de @FelipeNardiBatista.
-3 bytes de @xnor
Ya no recuerdo mucho de Python, pero logré portar mi respuesta de Ruby y superé la otra respuesta de Python 3: D
Pruébalo en línea!
fuente
x
,eval('x**'*99+'1')
funcionaMathematica, 12 bytes
Toma un número de punto flotante como entrada.
fuente
J , 5 bytes
Pruébalo en línea!
Explicación
Primero, mostraré qué comando se está ejecutando después de analizar el
~
al final, y el recorrido será para el nuevo verbo.fuente
(^^:_)
crea un nuevo verbo diádico a través de la conjunción de poder, luego el adverbio propio~
hace que el verbo sea monádico, de modo que cuando se le da un argumentox
se expande ax (^^:_) x
. la izquierdax
posteriormente "se pega", dando((x&^)^:_) x
por su nota, y solo el argumento correcto cambia durante la iteración?x u^:n y
el argumento de la izquierda se une a la díada para formar una mónada que se anida variasn
vecesy
.x u^:n y -> (x&u)^:n y -> (x&u) ... n times ... (x&u) y
C # (.NET Core) ,
7978 bytesPruébalo en línea!
Elegí iterar hasta
i
= 999 porque si iteraba hasta 99 algunos ejemplos no alcanzarían la precisión requerida. Ejemplo:Como puede ver, después de 99 iteraciones, la parte imaginaria falló en el quinto decimal.
En este caso después de 99 iteraciones obtenemos la precisión esperada. De hecho, podría iterar hasta
i
= 1e9 con el mismo número de bytes, pero eso haría que el código sea considerablemente más lentofuente
Jalea , 5 bytes
Pruébalo en línea!
fuente
Ruby,
2120 bytesDescargo de responsabilidad : Parece que Ruby devuelve algunos valores extraños al elevar un número complejo a un poder. Supongo que está fuera del alcance de este desafío arreglar todo el módulo matemático de Ruby, pero de lo contrario los resultados de esta función deberían ser correctos.Editar : Aplica los últimos cambios de mi respuesta de Python 3 y de repente de alguna manera da los mismos resultados esperados :)Pruébalo en línea!
fuente
eval
."0+1i**0+1i**0+1i**..."
, que se analiza de manera incorrecta ya que**
tiene mayor prioridad que+
.#inspect
y#to_s
devuelve valores diferentes. Antes de enviar la respuesta inicial, hice algunas pruebas en irb y vi que, por ejemplo, entrarComplex(1,2)
en el REPL daría(1+2i)
, incluidos los paréntesis. Sin embargo, al encadenar el valor los paréntesis no se incluyen, por lo que la precedencia, como usted señala, lo confundió.eval
uso estaba prohibido.TI-BASIC, 16 bytes
La entrada y la salida se almacenan en
Ans
.fuente
R ,
3633 bytes- 3 bytes gracias a Jarko Dubbeldam
Lecturas de stdin.
Reduce
s desde la derecha para aplicar los exponentes en el orden correcto.Pruébalo (función)
Pruébalo (stdin)
fuente
scan(,1i)
trabajos. Similar a cómoscan(,'')
funciona.Javascript, 33 bytes
fuente
MATL ,
2010 bytesreducido a la mitad gracias a @LuisMendo
Pruébalo en línea!
Este es mi primer código de golf y la primera vez que uso MATL, así que estoy seguro de que podría superarlo fácilmente.
fuente
XII
es equivalente at
. También puede deshacerse deXH
yH
el uso del portapapeles automáticaM
, es decir,ttt^`yw^t5M-]bb-x
. Y en la última parte, en lugar de eliminar los valores no deseados que puede usar&
, lo que le dice a la función de visualización implícita que solo muestre la parte superior. Por lo tanto, puede usarttt^`yw^t5M-]&
y guardar algunos bytes.t
no es necesaria, y utilizarG
en lugar de otrot
se puede evitar&
y por lo tanto dejar]
implícita:t^`Gw^t5M-
. ¡Hey, hemos reducido la cantidad de bytes a la mitad!Perl 6 , 17 bytes
Pruébalo en línea!
R**
es el operador de exponenciación inversa;x R** y
es igual ay ** x
.[R**]
reduce una lista de 999 copias del argumento de entrada con exponenciación inversa.fuente