Vi esta reciente pregunta desconcertante:
Agrega paréntesis para hacer esto realidad
Y vi que una respuesta usaba un script de Python para probar todas las posibilidades .
Su desafío es, dada una expresión (como una cadena) y un número entero, es hacer un programa que pueda decir si puede agregar parens para que la expresión sea igual al número entero.
Por ejemplo, si la expresión es 1 + 2 * 3
y el entero es 9
, entonces puede agregar parens como (1 + 2) * 3
, que es igual a 9, por lo que la salida debería ser verdadera. Pero si la expresión es 1 + 2 - 3 * 4 / 5
y el entero es 9999999999999
, no puede agregar ninguna cantidad de parens para que sea igual 9999999999999
, por lo que la salida debería ser falsa.
Tenga en cuenta que la entrada de enteros puede ser positiva o negativa, pero la expresión solo contendrá enteros positivos. De hecho, la expresión siempre coincidirá (\d+ [+*/-] )+ \d
(regex). En otras palabras, no hay parens, no hay exponentes, simplemente +
, -
, *
y /
. Orden estándar del operador ( *
y /
, luego, +
y -
).
Más casos de prueba:
1 + 2 - 3 * 4 / 9 and -1 -> truthy, ((1 + 2) - (3 * 4)) / 9
10 - 9 * 8 - 7 * 6 - 5 * 4 - 3 * 2 - 2 * 1 and 1, falsey, see linked question
10 + 9 - 8 * 7 + 6 - 5 * 4 + 3 - 2 * 1 and 82 -> truthy, (10 + (9 - 8)) * 7 + (6 - 5) * 4 + 3 - 2 * 1
34 + 3 and 15 -> falsey
1 + 2 + 5 + 7 and 36 -> falsey
1 / 10 * 3 + 3 / 10 * 10 and 6 -> truthy, (1/10*3+3/10)*10
¿Alguna pregunta?
Puede generar la expresión entre paréntesis si es posible, por ejemplo, (10 + (9 - 8)) * 7 + (6 - 5) * 4 + 3 - 2 * 1
para el último caso de prueba. Preferiría esto sobre un valor verdadero, pero depende de usted. El uso 2(5)
para la multiplicación no está permitido, solo *
.
fuente
/
es la división de flotación, ¿verdad?3 / 2 - 1 - 1 and 2 -> 3 / (2 - 1) - 1
Respuestas:
Python 2,
286285282 bytesPruébalo en línea
Explicación:
Esta versión imprimirá todas las expresiones de trabajo (con los
Fraction
objetos).Pruébalo en línea
Referencias
Función de partición
Cremallera alterna
Guardado 3 bytes gracias a Felipe Nardi Batista
fuente
/
es división de flotación) y descartar todos losfractions
usos? 2 - ¿Qué pasa con las divisiones por 0?