Inspirado por esta respuesta (énfasis mío):
Nosotros jugaremos un juego. Supongamos que tienes algún número x . Comienza con x y luego puede sumar, restar, multiplicar o dividir por cualquier número entero, excepto cero. También puedes multiplicar por x . Puedes hacer estas cosas tantas veces como quieras. Si el total se convierte en cero, ganas.
Por ejemplo, supongamos que x es 2/3. Multiplica por 3, luego resta 2. El resultado es cero. ¡Tú ganas!
Supongamos que x es 7 ^ (1/3). Multiplique por x , luego por x nuevamente, luego reste 7. ¡Usted gana!
Supongamos que x es √2 + √3. Aquí no es fácil ver cómo ganar. Pero resulta que si multiplicas por x , restas 10, multiplicas por x dos veces y sumas 1, entonces ganas. (No se supone que esto sea obvio; puedes probarlo con tu calculadora).
Pero si comienzas con x = π, no puedes ganar. No hay forma de pasar de π a 0 si sumas, restas, multiplicas o divides por enteros, o multiplicas por π, sin importar cuántos pasos sigas. (Esto tampoco se supone que sea obvio. ¡Es algo muy complicado!)
Los números como √2 + √3 de los cuales puedes ganar se llaman algebraicos . Los números como π con los que no puedes ganar se llaman trascendentales.
¿Por qué es esto interesante? Cada número algebraico está relacionado aritméticamente con los enteros, y los movimientos ganadores en el juego te muestran cómo. El camino a cero puede ser largo y complicado, pero cada paso es simple y hay un camino. Pero los números trascendentales son fundamentalmente diferentes: no están relacionados aritméticamente con los enteros a través de pasos simples.
Esencialmente, utilizará los pasos utilizados en la pregunta citada anteriormente para "ganar" el juego para la entrada dada.
Dada una constante algebraica real, x
convierta el número a cero utilizando las siguientes operaciones permitidas:
- Sumar o restar un número entero.
- Multiplicar o dividir por un número entero distinto de cero.
- Multiplica por la constante original
x
.
La entrada es una cadena que puede contener enteros, suma, resta, multiplicación, división, exponenciación (su elección de **
o ^
, los exponentes se usan para representar raíces) y paréntesis. Los espacios en la entrada son opcionales, pero no en la salida. Debe generar los pasos necesarios para obtener un resultado de cero, por lo que multiplicar por 7
como un paso se generaría como *7
. Se permite un espacio final y / o nueva línea.
Ejemplos
0 -> +0 (or any other valid, or empty)
5/7 + 42 -> -42 *7 -5 (or shorter: *7 -299)
2^(1/3) -> *x *x -2
5*(3**(1/4)) -> *x *x *x -1875
2^(1/2)+3^(1/2) -> *x -10 *x *x +1
El código más corto gana.
x^4-10*x^2+1
. Ver WolframAlpha
0
deben estar los resultados? Dados los errores de redondeo y la precisión de flotación, pude ver fácilmente situaciones problemáticas ...