Trasfondo
Te despiertas mareado en un laboratorio de química y te das cuenta de que te ha secuestrado un viejo químico loco. Como no puede ver muy bien debido a su edad, quiere que trabajes para él y solo así podrás escapar del laboratorio.
Tarea
Es su tarea devolver las fórmulas estructurales de las moléculas cuya fórmula química se dará como entrada. Tenga en cuenta que solo los átomos de carbono ( C
), oxígeno ( O
) e hidrógeno ( H
) se utilizarán como entrada. A diferencia de las fórmulas químicas, a 0
es un cuantificador válido y a 1
no se puede omitir (por ejemplo, C1H4O0
es una entrada válida, pero CH4
no lo es).
Para evitar la ambigüedad, suponemos que los enlaces dobles y triples no aparecen en las moléculas. Todos los átomos de carbono necesitan 4 enlaces simples, todos los átomos de oxígeno necesitan 2 y los átomos de hidrógeno necesitan uno. También asumimos que los O-O
bonos no existen también. La molécula no tiene que existir ni ser estable.
La entrada nunca contendrá más que 3
átomos de carbono para garantizar la ligereza en la pantalla de salida.
Solo debe mostrar las moléculas cuyos átomos de carbono están dispuestos en línea recta sin interrupción. Ergo, sin C-O-C
ataduras.
Debe devolver todas las moléculas posibles no excluidas por las reglas anteriores. No necesita manejar entradas inválidas.
El siguiente ejemplo muestra todas las soluciones que debe manejar para esa molécula.
Una rotación de 180 grados en el plano de la página de una de las fórmulas de la molécula se considera redundante y no es necesario mostrarla.
En el siguiente ejemplo, mostraré todas las fórmulas posibles para una molécula, luego señalaré las que no es necesario mostrar.
Ejemplo
Entrada: C2H6O2
Primero, aquí están todas las fórmulas posibles para esta entrada (Gracias a @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
Y aquí están las fórmulas que deberían estar en la salida si sacamos las rotaciones de 180 ° en el plano de la página:
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
No necesita generar las etiquetas de las fórmulas y puede generar cualquiera de las rotaciones cuando existen dos. Por ejemplo, puede generar 02 o 35.
Aquí hay algunas entradas válidas para probar su código:
C3H8O2 C1H4O0 C2H6O2 C1H4O1 C2H6O2
La PC que el químico le dio para completar su tarea es bastante antigua, por lo que no tiene mucha memoria para guardar su código, por lo tanto, este es el código de golf y gana la menor cantidad de bytes.