Враховуючи послідовність підстав аденину, цитозину, гуаніна та тиміну (кодується як ACGT
), ви повинні створити художнє зображення ASCII відповідної подвійної ланцюга ДНК.
Пасмо буде простягатися вертикально. Ліва нитка - це та, яку ви вводите як введення. Права пасмо буде її доповненням. Для тих , хто не знайомий з ДНК, A
в парі з T
і C
працює в парі з G
. Крім того, є кістяна структура по обидва боки подвійної нитки, однакова для всіх підстав. Тож якби вам дали вхід, TAGCAT
широкомасштабна структура мистецтва ASCII була б:
BTAB
BATB
BGCB
BCGB
BATB
BTAB
де B
являє собою хребет. Тепер кожна з цих літер означає цілу молекулу, і ви повинні відтворити фактичну молекулярну структуру .
Основи
Використовуйте наступні шаблони 1 для кожної бази (кожна відображається разом із її комплементарною базою та двома молекулами основи):
1 Подяки Пітеру Тейлору за допомогу в розкладі ASCII.
Аденін
O O
\\ /
P
/ \
--O O
/ |
< N NH2 ..... O * |
\ // \ / \\ / |
+--O // ---- ---- |
| \ | // \\ / \\ |
| >--N--< N ...... HN > ---+
| / \ / \ / / |
+--- N=== ---N--< |
| // \ |
| O O--+
| \
| >
| /
O O--
\ /
P
/ \\
O O
Цитозин
O O
\\ /
P
/ \
--O O NH2 ..... O N
/ / \\ / \\ |
< ---- ---- \\ ---+
\ // \\ / \\ | / |
+--O < N ...... HN >--N--< |
| \ \ / \ / \ |
| >--N--- ===N O--+
| / \\ / \
+--- O ..... H2N >
| /
O O--
\ /
P
/ \\
O O
Гуанін
O O
\\ /
P
/ \
--O O
/ |
< N O ..... H2N |
\ // \ // \ |
+--O // ---- ---- |
| \ | // \ // \\ |
| >--N--< NH ...... N > ---+
| / \ / \ / / |
+--- N=== ---N--< |
| \ // \ |
| NH2 ..... O O--+
| \
| >
| /
O O--
\ /
P
/ \\
O O
Тимін
O O
\\ /
P
/ \
--O O * O ..... H2N N
/ \ // \ / \\ |
< ---- ---- \\ ---+
\ // \ // \\ | / |
+--O < NH ...... N >--N--< |
| \ \ / \ / \ |
| >--N--- ===N O--+
| / \\ \
+--- O >
| /
O O--
\ /
P
/ \\
O O
Побудова подвійного пасма
Вони повторюються вертикально, так що в структурі хребта немає прогалин. Це означає, що рамки цих чотирьох шаблонів будуть перекриватися.
Нижній кінець лівого і верхній кінець правої хребта з'єднаються O
з лінією OH
.
Вільний O
у верхньому кінці лівого та нижнього кінця правої магістралі матиме вільну зв'язок, що йде всередину, позначену символом --
.
Приклад ATG
O O--
\\ /
P
/ \
--O O OH
/ |
< N NH2 ..... O * |
\ // \ / \\ / |
+--O // ---- ---- |
| \ | // \\ / \\ |
| >--N--< N ...... HN > ---+
| / \ / \ / / |
+--- N=== ---N--< |
| // \ |
| O O--+
| \
| >
| /
O O O O--
\\ / \ /
P P
/ \ / \\
--O O * O ..... H2N N O O
/ \ // \ / \\ |
< ---- ---- \\ ---+
\ // \ // \\ | / |
+--O < NH ...... N >--N--< |
| \ \ / \ / \ |
| >--N--- ===N O--+
| / \\ \
+--- O >
| /
O O O O--
\\ / \ /
P P
/ \ / \\
--O O O O
/ |
< N O ..... H2N |
\ // \ // \ |
+--O // ---- ---- |
| \ | // \ // \\ |
| >--N--< NH ...... N > ---+
| / \ / \ / / |
+--- N=== ---N--< |
| \ // \ |
| NH2 ..... O O--+
| \
| >
| /
OH O O--
\ /
P
/ \\
--O O
Більше прикладів:
Ось хеши MD5 ще кількох прикладів (без сторонніх провідних чи задніх пробілів):
ATG 2e4a906c44a96fe84134bf4346adf11c (this is the above example)
C e3648b8960967463784818c3eee57246
TTT 6028a90b05775905ef1a00e7a45463c5
TAGCAT 3b834d2b7b9adc4113ffabd52d354c41
GATTACA a19463f965c641d071e07da59d64a418
Повідомте мене, якщо ви вважаєте, що щось із цього не є.
Якщо ви не знаєте, як надійно перевірити хеши ваших результатів, спробуйте цей онлайн-генератор MD5 . Переконайтесь у відсутності переривання кінцевої лінії.
Подальші примітки
Ви можете використовувати провідні чи кінцеві пробіли, як вважаєте за потрібне. Звичайно, якщо ви використовуєте провідні пробіли, вона повинна бути однаковою кількістю у кожному рядку.
Якщо я допустив помилки при копіюванні хімічної структури, вищезазначені шаблони все ще є нормативними для цілей цього виклику.
Ви можете написати функцію або програму, яка приймає рядок введення як параметр, аргумент командного рядка через STDIN або очікує, що вона буде збережена у змінній. Запишіть отримане зображення ASCII в STDOUT.
Це кодовий гольф, тому найкоротша відповідь (у байтах) виграє.
TTT
тому що рядок містив останній новий рядок.
ATG
вихід і отримав різні контрольні суми. І різні ОС отримають різні контрольні суми. Ви можете спробувати їх unix2dos, unix2mac...
.
Digest::MD5.hexdigest()
із закінченнями лінійки у стилі Unix. Крім того, жоден з них не має нової лінії. Вставте його сюди - цей онлайн-генератор MD5 погоджується з моїми хешами.