(Я не хімік! Я можу помилятися в деяких речах, пишу те, що навчився в середній школі)
Атоми вуглецю мають особливий атрибут: вони можуть зв’язуватися з 4 іншими атомами (що не так вже й особливо) і вони залишаються стабільними навіть у довгих ланцюгах, що дуже унікально. Оскільки їх можна зв'язати ланцюгами та об'єднати різними способами, нам потрібна якась конвенція про іменування, щоб їх назвати.
Це найменша молекула, яку ми можемо зробити:
CH4
Це називається метан. Він складається лише з одного атома вуглецю та 4 водню. Наступний:
CH3 - CH3
Це називається етаном. Він складається з 2 вуглецевих та 6 атомів водню.
Наступні 2:
CH3 - CH2 - CH3
CH3 - CH2 - CH2 - CH3
Вони є пропаном і бутаном. Проблеми починаються з ланцюгів з 4 атомами вуглецю, оскільки його можна побудувати двома різними способами. Одне показано вище, а інше:
CH3 - CH - CH3
|
CH3
Це, очевидно, не те саме, що інші. Кількість атомів та зв’язок різні. Звичайно, просто складання зв'язок і обертання молекули не зроблять її іншою! Отже це:
CH3 - CH2 - CH2 - CH3
І це:
CH3 - CH2
|
CH3 - CH2
Один і той же (Якщо ви займаєтеся теорією графів, ви можете сказати, що якщо між двома молекулами існує ізоморфізм; вони однакові). Відтепер я не випишу атоми водню, оскільки вони не є важливими для цього завдання.
Оскільки ви ненавидите органічну хімію і у вас є багато різних атомів вуглецю, ви вирішили написати програму, яка робить це за вас. У вас не так багато місця на жорсткому диску, тому програма повинна бути якомога меншою.
Змагання
Напишіть програму, яка містить багаторядковий текст як вхідний (вуглецевий ланцюг) і виводить назву вуглецевого ланцюга. Вхід буде містити лише пробіли, великі символи 'c' та '|' і '-', що являє собою зв'язування. Ланцюжок вводу ніколи не буде містити циклів! Приклад:
Вхід:
C-C-C-C-C-C
| |
C C-C
Вихід:
4-етил-2-метилгексан
Будь-який вихід прийнятний до тих пір, поки він читається людиною і по суті є однаковим (тому ви можете використовувати різні роздільники, наприклад, якщо хочете).
Конвенція про іменування:
(Див. Правила IUPAC )
Визначте найдовший ланцюг вуглецю. Цей ланцюг називається батьківським ланцюгом.
Визначте всі заступники (групи, що надходять із батьківського ланцюга).
Пронумеруйте вуглецю материнського ланцюга від кінця, що дає заступникам найменші числа. Порівнюючи ряд чисел, "найнижчий" ряд - це той, який містить найменше число на момент першої різниці. Якщо дві або більше бічних ланцюгів знаходяться в рівноцінних положеннях, призначте найменше число тому, яке буде першим у назві.
Якщо один і той же заступник зустрічається більше одного разу, вказується місце розташування кожної точки, в якій відбувається заступник. Крім того, кількість разів, коли виникає група заступника, позначається префіксом (di, tri, tetra тощо).
Якщо є два або більше різних заступників, вони перераховуються в алфавітному порядку, використовуючи базову назву (ігноруйте префікси). Єдиний префікс, який використовується при введенні заступників в алфавітному порядку - iso, як у ізопропілу або ізобутилі. Префікси sec- і tert- не використовуються при визначенні алфавітного порядку, за винятком випадків, коли порівнюються один з одним.
Якщо ланцюги однакової довжини конкурують за вибір в якості батьківського ланцюга, то вибір послідовно виконується на:
- ланцюг, який має найбільшу кількість бічних ланцюгів.
- ланцюг, заступники якого мають найменші числа.
- ланцюг, що має найбільшу кількість атомів вуглецю в найменшому бічному ланцюзі.
- ланцюг, що має найменш розгалужені бічні ланцюги (графік, що має найменшу кількість листків).
Для батьківського ланцюга найменування:
Number of carbons Name
1 methane
2 ethane
3 propane
4 butane
5 pentane
6 hexane
7 heptane
8 octane
9 nonane
10 decane
11 undecane
12 dodecane
Жоден ланцюжок не буде довше 12, тому цього буде достатньо. Для під-ланцюгів це те саме, але замість 'ane' в кінці ми маємо 'il'.
Можна припустити, що C
s знаходяться в непарних стовпцях, а посилання ( |
і -
символи) на 1 довгу між атомами вуглецю.
Тестові приклади:
Вхід:
C-C-C-C
Вихід:
бутан
Вхід:
C-C-C
|
C
Вихід:
2-метилпропан
Вхід:
C-C-C-C
|
C
|
C-C
Вихід:
3-метилгексан
Вхід:
C-C-C-C-C
|
C
|
C
Вихід:
3-метилгексан
Вхід:
C
|
C
|
C-C-C-C
|
C-C-C
|
C-C
Вихід:
3,4-диметил-5-етилгептан
Редагувати: Вибачте за неправильні приклади. Я не був хорошим учнем :(. Їх слід виправити зараз.
If the same substituent occurs more than once, the location of each point on which the substituent occurs is given. In addition, the number of times the substituent group occurs is indicated by a prefix (di, tri, tetra, etc.).
чи не слід називати останній приклад 3,4- ді метил-5-етилгептаном? (ми тільки починаємо органічну хімію, я можу помилятися: P)