Su tarea en este desafío es analizar una determinada "Ecuación de Matchstick" como esta ...

... y para averiguar si se puede convertir en una ecuación válida reorganizando las coincidencias. Si es así, debe generar el menor número de movimientos para hacerlo y la ecuación resultante.
Entrada
La entrada es una cadena que puede leerse desde STDIN, tomarse como un argumento de función o incluso almacenarse en un archivo. Es una ecuación que representa una disposición de fósforo y se puede describir usando el siguiente EBNF:
input = term, "=", term ;
term = number | (term, ("+" | "-"), term) ;
number = "0" | (numeralExceptZero , {numeral}) ;
numeralExceptZero = "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
numeral = "0" | numeralExceptZero ;
Un ejemplo para una entrada válida sería 3+6-201=0+0+8.
Tarea
Considere la siguiente ilustración donde cada cerilla tiene un número asignado:

Ahora asignamos cada símbolo de entrada a las posiciones de los fósforos correspondientes de la siguiente manera:
0 ↦ 1,2,3,4,5,6
1 ↦ 4,5
2 ↦ 2,3,5,6,8
3 ↦ 3,4,5,6,8
4 ↦ 1,4,5,8
5 ↦ 1,3,4,6,8
6 ↦ 1,2,3,4,6,8
7 ↦ 4,5,6
8 ↦ 1,2,3,4,5,6,8
9 ↦ 1,3,4,5,6,8
- ↦ 8
+ ↦ 8,10
= ↦ 7,9
Cada fórmula de entrada se puede convertir en una disposición de fósforo. Por ejemplo, la ecuación "45 + 6 = 92" se convierte en

donde los fósforos no utilizados están en gris. Su tarea es encontrar el menor número de fósforos que deben reorganizarse para que la ecuación sea válida.
Salida
Distinguimos entre tres posibles casos:
- Si la entrada no es válida (es decir, no satisface el EBNF anterior), envíe lo que desee.
- De lo contrario, si hay formas de convertir la ecuación en una válida reorganizando las coincidencias, debe generar tanto el número mínimo de reordenamientos como la ecuación correspondiente. Al igual que la entrada, la ecuación de salida también debe satisfacer el EBNF dado. En el ejemplo anterior, la salida correcta sería
1y46+6=52. Si existen múltiples posibilidades para la ecuación resultante, envíe cualquiera de ellas. - De lo contrario (si la entrada es válida pero no hay forma de hacer que la ecuación sea verdadera), tiene que dar salida
-1.
Detalles
- No está permitido eliminar ni agregar coincidencias. Eso significa que, si la entrada está construida con
nfósforos, la salida también debe consistir exactamente ennfósforos. - Los bloques de fósforos "vacíos" solo se permiten al final y al comienzo de una ecuación, no en el medio. Así, por ejemplo, convirtiendo
7-1=6en7 =6-1por la simple eliminación-1no está permitido desde el lado izquierdo y añadiéndolo en el lado derecho con sólo 3 reordenamientos cerillas. Como realmente no veo el mapeo de números a posiciones de palillos como una parte interesante de este desafío, por un plus de 20 bytes , puede
- acceder a un archivo en el que la asignación
(number/operation ↦ matchstick positions)se almacena de manera razonable, o - si su lenguaje de programación admite un
Maptipo de datos, suponga que tiene acceso a un mapa preinicializado con el mapa(number/operation ↦ matchstick positions). Este mapa puede, por ejemplo, verse así:{(0,{1,2,3,4,5,6}),(1,{4,5}),(2,{2,3,5,6,8}),(3,{3,4,5,6,8}), ..., (-,{8}),(+,{8,10}),(=,{7,9})}
- acceder a un archivo en el que la asignación
Ejemplos
Entrada: 1+1=3 ↦ Salida: 1 y1+1=2
Entrada: 15+6=21 ↦ Salida: 0 y15+6=21
Entrada: 1=7 ↦ Salida: -1
Entrada: 950-250=750 ↦ Salida: 2 y990-240=750
Entrada: 1-2=9 ↦ Salida: 1 y1+2=3
Entrada: 20 + 3=04 ↦ Salida: cualquier cosa
Ganador
Este es el código de golf , por lo que gana la respuesta correcta más corta (en bytes). El ganador será elegido una semana después de que se publique la primera respuesta correcta.
=(2 fósforos) y -(1 fósforo) y dejar todos los números donde están. Sin embargo, si el 2 tuviera que moverse hacia la izquierda, también tendría que contar los movimientos requeridos.
1+1+2=3-6+10? Y la misma pregunta sobre la salida.
0: 1, 2, 3, 4, 5, 6por coherencia