Я щойно провів у школі урок про алкани і подумав, що це, мабуть, стане чудовим завданням для гольфу з кодом! Не хвилюйтесь, це не так складно, як може виглядати!
Швидкий перегвал
(Будь ласка, зауважте: щоб не було цієї інформації, не вся інформація є на 100% точною.)
Алкани - це струни вуглецю та водню. Кожен атом вуглецю має 4 зв’язки, а кожен атом водню - 1 зв’язок. Всі атоми вуглецю алкану утворюють рядок, де кожен атом C пов'язаний з 2 іншими атомами С (ліворуч і праворуч у структурі Льюїса) та 2 -ми атомами Н (вгору і вниз), за винятком кінців рядка , де C-атом з'єднаний лише з 1 іншим С, але 3 Гс. Ось основний приклад пентану (алкан з 5 атомами С і 12 Н-атомами):
H H H H H
| | | | |
H-C-C-C-C-C-H
| | | | |
H H H H H
Алкани також можуть мати гілки. Але не хвилюйтеся, всі алкани в цьому виклику можна виразити лише 1 рівнем розгалуження. Приклад:
H
|
H-C-H
H H H | H
| | | | |
H-C-C-C-C-C-H
| | | | |
H H H H H
Для виконання цього виклику ви також повинні зрозуміти конвенцію про іменування IUPAC для розгалужених алканів. Спочатку є кореневий алкан. У нашому попередньому прикладі це була б частина "CCCCC". Залежно від того, як довгий цей ланцюг, він має іншу назву. 1 C називають метаном, 2 C етаном, 3 C пропаном, потім бутаном, пентаном, гексаном, гептаном, октаном, нонаном і деканом (10 C). Потім для кожної гілки є певний префікс до цього: По-перше, є індекс (зміщення) атома С, до якого додається гілка (рахується зліва). У прикладі це було б 4 (він же 4-й атом С зліва). Потім з'являється дефіс (цей символ: "-"), а після цього ще одна назва, що вказує розмір гілки. Іменування розміру гілки майже таке ж, як іменування розміру кореня, тільки що замість "ане" ви додаєте "іл". З цим буде повна назва прикладу
4-methylpentane
Якщо у вас є кілька гілок, то вони також попередньо відокремлені дефісом. Приклад:
2-butyl-5-methylhexane
Останнє: якщо у вас є кілька гілок одного розміру, вони групуються; їхні зсуви розділені комою і вони мають однакову назву розміру, яка стає попередньою додатковою складовою залежно від того, скільки гілок згруповано: "di" для 2 гілок, "tri" для 3, "tetra" для 4 (ви не потрібно більше для цього виклику). Приклад:
2-ethyl-2,4,6-trimethyldecane
FYI, це може виглядати приблизно так: (Опущені Н-атоми)
|
-C-
| |
-C- -C-
| | | | | | | | | |
-C-C-C-C-C-C-C-C-C-C-
| | | | | | | | | |
-C- -C-
| |
Шаблон номенклатури
Prefixes indicating numbers:
| Num | Prefix |
|------|--------|
| 1 | meth |
| 2 | eth |
| 3 | prop |
| 4 | but |
| 5 | pent |
| 6 | hex |
| 7 | hept |
| 8 | oct |
| 9 | non |
| 10 | dec |
Suffix root: ane
Suffix branch: yl
Prefixes grouping: di, tri, tetra
Правила
Напишіть програму, яка читає таке ім'я IUPAC зі STDIN, аргументи програми або еквівалент і малює її як ASCII-art lewis структура до STDOUT (або еквівалент).
- Для простоти НЕ потрібно малювати Н-атоми (інакше ви зіткнетеся з проблемами проміжків)
- Вам НЕ дозволяється друкувати будь-які порожні горизонтальні лінії, що ведуться або проходять
- Ланцюги, які вам доведеться розбирати, не повинні перевищувати 10, а максимум гілок у "групі" обмежено 4.
- Максимальний "зсув" гілки - 9 (це означає, що вам не потрібно розбирати більше 1 цифри)
- Ваші гілки повинні чергуватись між підняттями вгору та вниз після кожної нової гілки. Якщо цей простір вже зайнятий іншою гілкою з тим же зрушенням, вам доведеться намалювати його з іншого боку кореня. (вгору-> вниз, вниз-> вгору)
- На пошкодженому, неправильно відформатованому або іншому способі, який не можна отримати, ваша програма може вести себе не визначено.
Це код гольфу, найкоротший код у байтах виграє!
Щасливого гольфу! :)
3-3-5-7-methyldodecane
тому, що найдовший безперервний ланцюг вуглецю становить 12 довгих. Крім того, ви сказали, що не вся інформація у питанні була точною, але я думаю, що варто зазначити, що друга молекула - це 2-methylpentane
не 4-methylpentane
тому, що ви починаєте з вуглецю з найближчим розгалуженням.
Your branches have to alternate between going up and down after every new branch.
Ваш приклад порушує це правило 2. Яка максимальна довжина ланцюга, яку ми маємо підтримувати (аналіз префіксів буде частиною виклику.) Ви повинні зв’язати (або бажано скопіювати) список номенклатури.
4-methylpropane
сказати4-methylpentane
?4-<anything>propane
здається малоймовірним, якщо я щось зовсім не зрозумів.