História de fundo
Você acorda tonto em um laboratório de química e percebe que foi sequestrado por um velho químico louco. Como ele não pode ver muito bem por causa de sua idade, ele quer que você trabalhe para ele e só então, você pode escapar do laboratório.
Tarefa
É sua tarefa retornar as fórmulas estruturais das moléculas cuja fórmula química será fornecida como entrada. Observe que apenas os átomos de carbono ( C
), oxigênio ( O
) e hidrogênio ( H
) serão usados como entrada. Diferentemente das fórmulas químicas, a 0
é um quantificador válido e a 1
não pode ser omitido (por exemplo, C1H4O0
é entrada válida, mas CH4
não é).
Para evitar ambiguidade, assumimos que ligações duplas e triplas não aparecem nas moléculas. Todos os átomos de carbono precisam de 4 ligações simples, todos os átomos de oxigênio precisam de 2 e os átomos de hidrogênio precisam de uma. Também assumimos que os O-O
títulos também não existem. A molécula não precisa existir nem ser estável.
A entrada nunca conterá mais do que 3
átomos de carbono para garantir leveza no visor da saída.
Você só deve exibir as moléculas cujos átomos de carbono estão dispostos em uma linha reta sem interrupção. Portanto, sem C-O-C
vínculos.
Você deve retornar todas as moléculas possíveis não excluídas pelas regras anteriores. Você não precisa lidar com entradas inválidas.
O exemplo a seguir exibe todas as soluções que você precisa manipular para essa molécula.
Uma rotação de 180 graus no plano da página de uma das fórmulas da molécula é considerada redundância e não precisa ser exibida.
No exemplo abaixo, mostrarei todas as fórmulas possíveis para uma molécula e aponto as que não precisam ser exibidas.
Exemplo
Entrada: C2H6O2
Primeiro, aqui estão todas as fórmulas possíveis para essa entrada (obrigado 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
E aqui estão as fórmulas que devem estar na saída se fizermos as rotações de 180 ° no plano da 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
Você não precisa imprimir os rótulos das fórmulas e pode produzir uma das rotações quando existirem duas. Por exemplo, você pode gerar 02 ou 35.
Aqui estão algumas entradas válidas para testar seu código:
C3H8O2 C1H4O0 C2H6O2 C1H4O1 C2H6O2
O PC que o químico lhe forneceu para concluir sua tarefa é bastante antigo, portanto você não tem muita memória para salvar seu código, portanto esse é o código-golfe e a menor quantidade de bytes ganhos!