Introducción:
Inspirado por una discusión que ya lleva muchos años con respecto a la expresión .
Con la expresión , los matemáticos verán rápidamente que la respuesta correcta es , mientras que las personas con antecedentes matemáticos simples de la escuela verán rápidamente que la respuesta correcta es . Entonces, ¿de dónde viene esta controversia y, por lo tanto, diferentes respuestas? Hay dos reglas en conflicto en cómo se escribe . Uno debido a la parte y otro debido al símbolo de división .
2(
÷
Aunque tanto los matemáticos como las 'personas comunes' usarán PEMDAS (Paréntesis - Exponentes - División / Multiplicación - Suma / Resta), para los matemáticos la expresión se evalúa así a continuación, porque es como, por ejemplo, un monomio también conocido como " un solo término debido a la multiplicación implícita por yuxtaposición " (y, por lo tanto, parte de in ), que se evaluará de manera diferente a (un binomio, también conocido como dos términos): 2 × ( 3 )
P
PEMDAS
Mientras que para la gente común '', y será el mismo (y por lo tanto parte de la en ), por lo que vamos a usar esto en su lugar:
MD
PEMDAS
Sin embargo, incluso si hubiéramos escrito la expresión original como , todavía puede haber cierta controversia debido al uso del símbolo de división . En las matemáticas modernas, los símbolos y tienen exactamente el mismo significado: dividir. Algunas reglas anteriores a 1918 † con respecto al símbolo de división †† establecen que tenía un significado diferente que el símbolo de división . Esto se debe a que solía significar " dividir el número / expresión a la izquierda con el número / expresión a la derecha " ††† . Entonces entonces, sería o ahora. En cuyo casoa ÷ b ( a ) / ( b ) a÷
/
÷
÷
/
÷
sería evaluado así por personas anteriores a 1918:
†: Aunque he encontrado múltiples fuentes que explican cómo ÷
se usó en el pasado (ver ††† más abajo), no he podido encontrar una prueba definitiva de que esto cambió en algún lugar alrededor de 1918. Pero por el bien de este desafío, asumimos que 1918 fue el punto de inflexión donde ÷
y
/
comenzando a significar lo mismo, donde diferían en el pasado.
††: Otros símbolos también se han utilizado en el pasado para la división, como
:
en 1633 (o ahora todavía en los Países Bajos y otros países europeos que no hablan inglés, ya que esto es lo que aprendí personalmente en la escuela primaria xD) o)
en La década de 1540. Pero para este desafío solo nos enfocamos en el significado anterior al 1918 del símbolo obelus÷
.
†††: Fuentes: este artículo en general . Y las reglas anteriores a 1918 con respecto a÷
se mencionan en: este artículo de The American Mathematical Monthly de febrero de 1917 ; este libro alemán de álgebra teutsche de 1659, página 9 y página 76 ; este primer libro en álgebrade 1895 página 46 [48/189] .Ligeramente fuera de tema: con respecto a la discusión real sobre esta expresión: ¡Nunca debería escribirse así en primer lugar! La respuesta correcta es irrelevante, si la pregunta no está clara. * Hace clic en el botón "cerrar porque no está claro lo que está preguntando" * .
Y para el registro, incluso las diferentes versiones de las calculadoras Casio no saben cómo manejar adecuadamente esta expresión:
Reto:
Te dan dos entradas:
- Una expresión matemática (válida) que consta solo de los símbolos
0123456789+-×/÷()
- Un año
Y genera el resultado de la expresión matemática, basada en el año (donde ÷
se usa de manera diferente cuando , pero se usa exactamente igual que cuando ).y e a r ≥ 1918/
Reglas de desafío:
- Puede suponer que la expresión matemática es válida y solo usa los símbolos
0123456789+-×/÷()
. Esto también significa que no tendrá que lidiar con la exponenciación. (También se le permite usar símbolos diferentes para×
o÷
(es decir,*
o%
), si esto ayuda al golf o si su idioma solo es compatible con ASCII). - Se le permite agregar delimitadores de espacio a la expresión de entrada si esto ayuda a la evaluación (quizás manual) de la expresión.
- I / O es flexible. La entrada puede ser como una cadena, una matriz de caracteres, etc. El año puede ser como un entero, un objeto de fecha, una cadena, etc. La salida será un número decimal.
- Puede suponer que no habrá división por 0 casos de prueba.
- Puede suponer que los números en la expresión de entrada no serán negativos (por lo que no tendrá que tratar de diferenciar el
-
símbolo como negativo frente-
al símbolo de resta). ¡Sin embargo, la salida aún puede ser negativa! - Puede suponer
N(
que siempre se escribirá como en suN×(
lugar. Sólo nos centraremos en la segunda controversia de los símbolos de división/
frente a÷
este reto. - Los valores de salida decimales deben tener una precisión de al menos tres dígitos decimales.
- Si la expresión de entrada contiene múltiples
÷
(es decir, ) con el , se evalúan así: . (O en palabras: el número se divide por la expresión , donde la expresión a su vez significa que el número se divide por el número ).42÷22÷222 - Tenga en cuenta que la forma en que
÷
funciona implícitamente significa que tiene prioridad sobre el operador×
y/
(ver caso de prueba ). - Puede suponer que el año de entrada está dentro del rango .
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolf. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Las reglas estándar se aplican a su respuesta con las reglas de E / S predeterminadas , por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código (es decir, TIO ).
- Además, se recomienda agregar una explicación para su respuesta.
Casos de prueba:
Input-expression: Input-year: Output: Expression interpretation with parenthesis:
6÷2×(1+2) 2018 9 (6/2)×(1+2)
6÷2×(1+2) 1917 1 6/(2×(1+2))
9+6÷3-3+15/3 2000 13 ((9+(6/3))-3)+(15/3)
9+6÷3-3+15/3 1800 3 (9+6)/((3-3)+(15/3))
4÷2÷2 1918 1 (4/2)/2
4÷2÷2 1900 4 4/(2/2)
(1÷6-3)×5÷2/2 2400 -3.541... ((((1/6)-3)×5)/2)/2
(1÷6-3)×5÷2/2 1400 1.666... ((1/(6-3))×5)/(2/2)
1×2÷5×5-15 2015 -13 (((1×2)/5)×5)-15
1×2÷5×5-15 1719 0.2 (1×2)/((5×5)-15)
10/2+3×7 1991 26 (10/2)+(3×7)
10/2+3×7 1911 26 (10/2)+(3×7)
10÷2+3×7 1991 26 (10/2)+(3×7)
10÷2+3×7 1911 0.434... 10/(2+(3×7))
4÷2+2÷2 2000 3 (4/2)+(2/2)
4÷2+2÷2 1900 2 4/((2+2)/2)
4÷2×2÷3 9999 1.333... ((4/2)×2)/3
4÷2×2÷3 0000 3 4/((2×2)/3)
((10÷2)÷2)+3÷7 2000 2.928... ((10/2)/2)+(3/7)
((10÷2)÷2)+3÷7 1900 0.785... (((10/2)/2)+3)/7
(10÷(2÷2))+3×7+(10÷(2÷2))+3×7
1920 62 (10/(2/2))+(3×7)+(10/(2/2))+(3×7)
(10÷(2÷2))+3×7+(10÷(2÷2))+3×7
1750 62 (10/(2/2))+(3×7)+(10/(2/2))+(3×7)
10÷2/2+4 2000 6.5 ((10/2)/2)+4
10÷2/2+4 0100 2 10/((2/2)+4)
9+6÷3-3+15/3 9630 13 9+(6/3)-3+(15/3)
9+6÷3-3+15/3 0369 3 (9+6)/(3-3+(15/3))
`=`=`/`
es diabólico! ¡Gran solución!