- 21, Oct 2024
- #1
Предыстория
Вы просыпаетесь в химической лаборатории с головокружением и понимаете, что вас похитил старый безумный химик. Поскольку из-за возраста он плохо видит, он хочет, чтобы вы работали на него, и только тогда вы сможете сбежать из лаборатории.
Задача
Ваша задача вернуть структурные формулы молекул, чьи химическая формула будет дано в качестве входных данных. Обратите внимание, что только углерод (
), oxygen (C3H8O2 C1H4O0 C2H6O2 C1H4O1 C2H6O2
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
) и водород ( 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
) atoms will be used as input. Unlike in chemical formulas, a C2H6O2
является действительным квантором и C-O-C
cannot be omitted (e.g. 3
допустимый ввод, но O-O
isn't).
Во избежание неоднозначности будем считать, что в молекулах не возникают двойные и тройные связи. Всем атомам углерода нужны четыре одинарные связи, всем атомам кислорода — две, а атомам водорода — одна. Мы также предполагаем, что CH4
bonds do not exist as well. The molecule does not have to exist nor be stable.
Входные данные никогда не будут содержать более C1H4O0
carbon atoms to ensure lightness in the output's display.
Вам следует отображать только те молекулы, атомы углерода которых расположены в прямую линию без перерыва. Следовательно, нет 1
bonds.
Вы должны вернуться все возможные молекулы, не исключенные предыдущими правилами. Вам не нужно обрабатывать недопустимые входные данные.
В следующем примере показаны все растворы, которые вам нужно обработать для этой молекулы.
Поворот на 180 градусов в плоскости страницы одной из формул молекулы считается избыточностью и не требует отображения.
В примере ниже я покажу все возможные формулы молекулы, а затем укажу те, которые не нужно отображать.
Пример
Вход: 0
Во-первых, вот все возможные формулы для этого ввода (спасибо @Jonathan Allan)
H
А вот формулы, которые должны быть на выходе, если убрать повороты на 180° в плоскости страницы:
O
Вам не нужно выводить метки формул, и вы можете вывести любой из поворотов, если они существуют. Например, вы можете вывести либо 02, либо 35.
Вот несколько допустимых входных данных для проверки вашего кода:
C
Компьютер, который химик дал вам для выполнения вашей задачи, довольно старый, поэтому у вас не так много памяти для сохранения кода, поэтому побеждает наименьшее количество байтов!
#код-гольф #код-гольф #строка #ascii-art #химия