Passé
Vous vous réveillez étourdi dans un laboratoire de chimie et vous vous rendez compte que vous avez été kidnappé par un vieux chimiste fou. Comme il ne voit pas très bien à cause de son âge, il veut que vous travailliez pour lui et alors seulement, vous pourrez vous échapper du laboratoire.
Tâche
Il vous appartient de restituer les formules structurales des molécules dont la formule chimique sera donnée en entrée. Notez que seuls les atomes de carbone ( C
), d'oxygène ( O
) et d'hydrogène ( H
) seront utilisés en entrée. Contrairement aux formules chimiques, a 0
est un quantificateur valide et a 1
ne peut pas être omis (par exemple, C1H4O0
est une entrée valide, mais CH4
ne l'est pas).
Pour éviter toute ambiguïté, nous supposons que les liaisons doubles et triples n'apparaissent pas dans les molécules. Tous les atomes de carbone ont besoin de 4 liaisons simples, tous les atomes d'oxygène en ont besoin de 2 et les atomes d'hydrogène en ont besoin. Nous supposons également que les O-O
obligations n'existent pas également. La molécule n'a pas besoin d'exister ni d'être stable.
L'entrée ne contiendra jamais plus que 3
des atomes de carbone pour assurer la légèreté de l'affichage de la sortie.
Vous ne devez afficher les molécules dont les atomes de carbone sont disposés en ligne droite sans interruption. Ergo, pas de C-O-C
liens.
Vous devez renvoyer toutes les molécules possibles non exclues par les règles précédentes. Vous n'avez pas besoin de gérer des entrées non valides.
L'exemple suivant affiche toutes les solutions que vous devez gérer pour cette molécule.
Une rotation de 180 degrés dans le plan de la page de l'une des formules de la molécule est considérée comme une redondance et n'a pas besoin d'être affichée.
Dans l'exemple ci-dessous, je vais montrer toutes les formules possibles pour une molécule, puis souligner celles qui n'ont pas besoin d'être affichées.
Exemple
Contribution: C2H6O2
Tout d'abord, voici toutes les formules possibles pour cette entrée (Merci à @Jonathan Allan)
01 H
|
O H
| |
H - O - C - C - H
| |
H H
02 H
|
H O
| |
H - O - C - C - H
| |
H H
03 H H
| |
H - O - C - C - O - H
| |
H H
04 H H
| |
H - O - C - C - H
| |
H O
|
H
05 H H
| |
H - O - C - C - H
| |
O H
|
H
12 H H
| |
O O
| |
H - C - C - H
| |
H H
13 H
|
O H
| |
H - C - C - O - H
| |
H H
14 H
|
O H
| |
H - C - C - H
| |
H O
|
H
15 H
|
O H
| |
H - C - C - H
| |
O H
|
H
23 H
|
H O
| |
H - C - C - O - H
| |
H H
24 H
|
H O
| |
H - C - C - H
| |
H O
|
H
25 H
|
H O
| |
H - C - C - H
| |
O H
|
H
34 H H
| |
H - C - C - O - H
| |
H O
|
H
35 H H
| |
H - C - C - O - H
| |
O H
|
H
45 H H
| |
H - C - C - H
| |
O O
| |
H H
Et voici les formules qui devraient être en sortie si l'on supprime les rotations de 180 ° dans le plan de la page:
01 H
|
O H
| |
H - O - C - C - H
| |
H H
03 H H
| |
H - O - C - C - O - H
| |
H H
12 H H
| |
O O
| |
H - C - C - H
| |
H H
13 H
|
O H
| |
H - C - C - O - H
| |
H H
14 H
|
O H
| |
H - C - C - H
| |
H O
|
H
15 H
|
O H
| |
H - C - C - H
| |
O H
|
H
23 H
|
H O
| |
H - C - C - O - H
| |
H H
25 H
|
H O
| |
H - C - C - H
| |
O H
|
H
35 H H
| |
H - C - C - O - H
| |
O H
|
H
Vous n'avez pas besoin de sortir les étiquettes des formules et vous pouvez sortir l'une ou l'autre des rotations lorsque deux existent. Par exemple, vous pouvez sortir 02 ou 35.
Voici quelques entrées valides pour tester votre code:
C3H8O2 C1H4O0 C2H6O2 C1H4O1 C2H6O2
Le PC que le chimiste vous a donné pour terminer votre tâche est assez ancien, vous n'avez donc pas beaucoup de mémoire pour enregistrer votre code, c'est donc le code-golf et le plus court nombre d'octets gagne!