Introducción
Mi calculadora se está comportando raro. A veces, cuando escribo un 8
, muestra un 2
. Y a veces cuando escribo en una 6
muestra una +
. ¡Algunos botones están mezclados!
¿Alguien podría ayudarme a determinar cuál?
Reto:
Entrada: Lista de ecuaciones incorrectas , con resultados correctos .
Salida: los dos botones que se intercambian.
Por ejemplo:
una entrada podría ser:
123 = 3
8423 = 252
4+4 = 8
4*7-10 = 417
9/3 = 3
42-9 = -36
Para lo cual los resultados esperados son: 2
y *
.
¿Por qué? Porque TODAS las ecuaciones serían correctas si intercambiamos los 2 y *:
1*3 = 3
84*3 = 252
4+4 = 8
427-10 = 417
9/3 = 3
4*-9 = -36
Reglas de desafío:
- La entrada puede estar en cualquier formato razonable. Puede ser una sola cadena con espacio delimitado; una lista de cadenas o una matriz; una lista con ecuaciones y otra lista con los resultados correctos. Tu llamada. ¡Indique qué formato de entrada ha utilizado!
NOTA: Esto también significa que puede ingresar el caso de prueba-5--15
como-5- -15
o-5 - -15
. Sin embargo, un número resultante--
debe ingresarse sin espacios o con un espacio entre cada dígito. Por lo tanto, el caso de prueba9119
se puede ingresar como9119
o9 1 1 9
(la razón91 19
no está permitida es porque puede guiarse por el espacio para encontrar- -
). Entonces los espacios son (algo) opcionales y permitidos. - El formato de salida puede estar en cualquier formato razonable también. Pueden ser dos personajes; una sola cadena de dos caracteres; una lista de cadenas que contiene los dos caracteres. Tu llamada. Una vez más, indique qué formato de salida ha utilizado.
- Se le permite usar cualquier 14 salidas distintas que se asignen
0123456789+-*/
. Por lo tanto, incluso puede emitir dos enteros distintos si lo desea (nuevamente, especifique la asignación que ha utilizado, si corresponde). - Solo tienes que soportar enteros. Por lo tanto, no habrá casos de prueba como
1/8=0.125
o1/8=0
. - Operandos aritméticos que deberá admitir: suma (
+
); resta (-
); multiplicación (*
o×
o·
); división (/
o÷
). (NOTA: Los caracteres entre paréntesis solo se agregan como aclaración). - Tendrás que soportar números negativos. Este medio
-
puede interpretarse en la ecuación como un operando matemático o un indicador negativo. - Puede suponer que las ecuaciones incorrectas dadas y las supuestas ecuaciones correctas siempre son válidas (por lo que no habrá cosas como
4-/2
o9+-+8
por ejemplo). - Las ecuaciones de entrada incorrectas pueden contener una división por 0, pero las ecuaciones corregidas y esperadas nunca contendrán división por 0.
- Las ecuaciones de entrada incorrectas ya pueden ser correctas incluso si cambia los botones deseados.
- Una ecuación de entrada dada puede ser irrelevante para que los botones se intercambien (como las ecuaciones
4+4=8
y9/3=3
, con los botones intercambiados2
y*
). - Puede suponer que siempre habrá un único intercambio posible que se puede hacer con los casos de prueba dados.
- Ambos botones para intercambiar siempre estarán presentes en al menos una de las ecuaciones incorrectas.
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. - Se aplican reglas estándar para su respuesta, 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.
- Además, agregue una explicación si es necesario.
Casos de prueba:
Input:
123 = 3
8423 = 252
4+4 = 8
4*7-10 = 417
9/3 = 3
42-9 = -36
Output: 2 *
Input:
4/2 = 6
3/0 = 3
0/8+2 = 4
95-5 = 90
4+2 = 2
Output: + /
Input:
7+4 = 11
5-15 = 46
212-23 = -2121
Output: 1 -
Input:
4+8/2-9*1 = -5
99/3-13 = 20
1+2+3+4 = 10
4-3-2-1 = -6
Output: 2 4
Input:
18/18 = 1
98-8 = 90
55*88 = 4840
-5--15 = 10
Ouput: 5 8
Input:
9119 = 18
5-3 = 513
8*-9 = 152
13116/3 = -1
Output: 1 -
--
. Por ejemplo 1991 = 2, -/3 = 3
. (Muchos idiomas confunden esto con el operador de decremento)
91 19
si la solución es 9--9
y no hay espacio 9119
si la solución es 9229
requiere conocimiento sobre la solución al crear los casos de prueba. Si esto se permitiera, simplemente podría agregar un espacio solo antes de los caracteres intercambiados y la solución podría derivarse inmediatamente del caso de prueba.
*
, y /
antes +
y binario -
?