Debe obtener una cadena de ecuaciones químicas (sin espacios, solo letras (mayúsculas y minúsculas), números, corchetes y signos matemáticos) del usuario e imprimir la respuesta si la ecuación está equilibrada o no (cualquier par de respuestas positivas / negativas : Sí / No, verdadero / falso, 1/0). Para acortar el código, puede suponer que las cadenas de entrada pueden contener solo estos elementos: Al, Ar, B, Be, C, Cl, Cr, Cu, Fe, H, He, K, N, O, S. Y una cosa más : podría haber -
signos. Se trata de matemáticas: +
significa suma, -
significa resta.
Ejemplos:
Entrada:
C6H5COOH-O2=7CO2+3H2O
Salida:
No
Entrada:
2Fe(CN)6+2SO2+202=Fe2(SO4)2+6C2N2
Salida:
Yes
Entrada:
2SO2=2SO4-2O2
Salida:
Yes
El código más corto gana.
2O2
lugar de202
(doscientos dos).Respuestas:
Mathematica 152
Resultado:
Trato la fórmula química como un polinomio, p. Ej.
Entonces solo cuento los coeficientes.
fuente
Tr@CoefficientRules
y luego los multiplico por coeficientes conTimes@@@
. ParaO
:,2*2+2*2=4*2
paraC
:,2*6 = 6*2
etc.Python 2.7,
316276 caracteresHace una gran cantidad de reescritura de expresiones regulares para convertir la ecuación de entrada en algo
eval
capaz. Luego verifica la ecuación para cada elemento individualmente.Por ejemplo, las ecuaciones de ejemplo se reescriben en (la
t
variable):Estoy seguro de que hay más golf en la parte de expresiones regulares.
fuente
Haskell,
400351308 caracteresEsto podría tener todo el golf exprimido. ¡No sé si hay otros
100518 caracteres para guardar!Aquí está la versión sin golf, en caso de que alguien quiera seguirla. Es un
Parsec
analizador de base simple :fuente