Bernd est un lycéen qui a des problèmes de chimie. En classe, il doit concevoir des équations chimiques pour certaines expériences qu'ils font, telles que la combustion de l'heptane:
C 7 H 16 + 11O 2 → 7CO 2 + 8H 2 O
Comme les mathématiques ne sont pas exactement le sujet le plus solide de Bernd, il a souvent du mal à trouver les rapports exacts entre les pro- et les produits de la réaction. Puisque vous êtes le tuteur de Bernd, c'est votre travail de l'aider! Écrivez un programme qui calcule la quantité de chaque substance nécessaire pour obtenir une équation chimique valide.
Contribution
L'entrée est une équation chimique sans quantités. Afin de rendre cela possible en ASCII pur, nous écrivons tous les abonnements sous forme de nombres ordinaires. Les noms d'élément commencent toujours par une majuscule et peuvent être suivis d'une minuscule. Les molécules sont séparées par des +
signes, une flèche de type ASCII ->
est insérée entre les deux côtés de l'équation:
Al+Fe2O4->Fe+Al2O3
L'entrée se termine par une nouvelle ligne et ne contiendra aucun espace. Si l'entrée n'est pas valide, votre programme peut faire ce que vous voulez.
Vous pouvez supposer que l'entrée ne dépasse jamais 1024 caractères. Votre programme peut soit lire l'entrée à partir de l'entrée standard, du premier argument ou d'une manière définie par l'implémentation lors de l'exécution si aucun n'est possible.
Sortie
La sortie de votre programme est l'équation d'entrée augmentée de nombres supplémentaires. Le nombre d'atomes pour chaque élément doit être le même des deux côtés de la flèche. Pour l'exemple ci-dessus, une sortie valide est:
2Al+Fe2O3->2Fe+Al2O3
Si le nombre d'une molécule est 1, laissez-le tomber. Un nombre doit toujours être un entier positif. Votre programme doit produire des nombres tels que leur somme soit minimale. Par exemple, ce qui suit est illégal:
40Al+20Fe2O3->40Fe+20Al2O3
S'il n'y a pas de solution, imprimez
Nope!
au lieu. Un exemple d'entrée qui n'a pas de solution est
Pb->Au
Règles
- C'est du code-golf. Le code le plus court gagne.
- Votre programme doit se terminer dans un délai raisonnable pour toutes les entrées raisonnables.
Cas de test
Chaque scénario de test a deux lignes: une entrée et une sortie correcte.
C7H16+O2->CO2+H2O
C7H16+11O2->7CO2+8H2O
Al+Fe2O3->Fe+Al2O3
2Al+Fe2O3->2Fe+Al2O3
Pb->Au
Nope!
solve(
fonction intégrée et eval(
pour interpréter l'entrée :)