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 1não pode ser omitido (por exemplo, C1H4O0é entrada válida, mas CH4nã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-Otí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-Cví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!