Diberi urutan basa Adenine, Sitosin, Guanin dan Timin (disandikan sebagai ACGT
), Anda akan menghasilkan representasi seni ASCII dari untai ganda DNA yang sesuai.
Untai akan memanjang secara vertikal. Untai kiri adalah yang Anda berikan sebagai input. Untai kanan akan menjadi pelengkapnya. Bagi mereka yang tidak terbiasa dengan DNA, A
dipasangkan T
dan C
dipasangkan G
. Selain itu, ada struktur tulang punggung di kedua sisi untai ganda yang identik untuk semua pangkalan. Jadi jika Anda diberi input TAGCAT
, struktur skala besar dari seni ASCII adalah:
BTAB
BATB
BGCB
BCGB
BATB
BTAB
di mana B
merupakan tulang punggung. Sekarang masing-masing surat ini mewakili seluruh molekul dan Anda harus mereproduksi struktur molekul yang sebenarnya .
Basis
Gunakan template 1 berikut untuk masing-masing basa (masing-masing ditampilkan bersama dengan basa komplementer dan dua molekul tulang punggung):
1 Kredit untuk Peter Taylor untuk membantu dengan tata letak ASCII.
Adenine
O O
\\ /
P
/ \
--O O
/ |
< N NH2 ..... O * |
\ // \ / \\ / |
+--O // ---- ---- |
| \ | // \\ / \\ |
| >--N--< N ...... HN > ---+
| / \ / \ / / |
+--- N=== ---N--< |
| // \ |
| O O--+
| \
| >
| /
O O--
\ /
P
/ \\
O O
Sitosin
O O
\\ /
P
/ \
--O O NH2 ..... O N
/ / \\ / \\ |
< ---- ---- \\ ---+
\ // \\ / \\ | / |
+--O < N ...... HN >--N--< |
| \ \ / \ / \ |
| >--N--- ===N O--+
| / \\ / \
+--- O ..... H2N >
| /
O O--
\ /
P
/ \\
O O
Guanine
O O
\\ /
P
/ \
--O O
/ |
< N O ..... H2N |
\ // \ // \ |
+--O // ---- ---- |
| \ | // \ // \\ |
| >--N--< NH ...... N > ---+
| / \ / \ / / |
+--- N=== ---N--< |
| \ // \ |
| NH2 ..... O O--+
| \
| >
| /
O O--
\ /
P
/ \\
O O
Timin
O O
\\ /
P
/ \
--O O * O ..... H2N N
/ \ // \ / \\ |
< ---- ---- \\ ---+
\ // \ // \\ | / |
+--O < NH ...... N >--N--< |
| \ \ / \ / \ |
| >--N--- ===N O--+
| / \\ \
+--- O >
| /
O O--
\ /
P
/ \\
O O
Membangun Untai Ganda
Ini berulang secara vertikal, sehingga tidak ada celah dalam struktur tulang punggung. Ini berarti bahwa kotak pembatas dari empat templat ini akan tumpang tindih.
Ujung bawah dari ujung kiri dan ujung atas dari tulang punggung kanan akan terhubung ke O
sebuah OH
.
Bebas O
di ujung atas dari ujung kiri dan bawah dari tulang punggung kanan akan memiliki ikatan bebas masuk ke dalam, ditunjukkan oleh --
.
Contoh 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
Lebih banyak contoh:
Berikut adalah hash MD5 dari beberapa contoh lagi (tanpa spasi awal atau spasi tambahan):
ATG 2e4a906c44a96fe84134bf4346adf11c (this is the above example)
C e3648b8960967463784818c3eee57246
TTT 6028a90b05775905ef1a00e7a45463c5
TAGCAT 3b834d2b7b9adc4113ffabd52d354c41
GATTACA a19463f965c641d071e07da59d64a418
Beritahu saya jika Anda pikir semua ini salah.
Jika Anda tidak yakin cara memeriksa hash hasil Anda dengan andal, coba generator MD5 online ini . Pastikan tidak ada garis putus trailing.
Catatan selanjutnya
Anda dapat menggunakan spasi awal atau akhir sesuai keinginan Anda. Tentu saja, jika Anda menggunakan spasi terkemuka harus jumlah yang sama di setiap baris.
Jika saya telah membuat kesalahan dalam menyalin struktur kimia, template di atas masih normatif untuk keperluan tantangan ini.
Anda dapat menulis fungsi atau program yang menggunakan string input sebagai parameter, argumen baris perintah melalui STDIN atau mengharapkannya disimpan dalam variabel. Tuliskan seni ASCII yang dihasilkan ke STDOUT.
Ini adalah kode golf, jadi jawaban tersingkat (dalam byte) menang.
TTT
karena string berisi baris baru.
ATG
output Anda dan mendapat checksum yang berbeda. Dan OS yang berbeda akan mendapatkan checksum yang berbeda. Anda dapat mencobanya dengan unix2dos, unix2mac...
.
Digest::MD5.hexdigest()
dengan ujung garis bergaya Unix. Juga, tidak ada dari mereka yang memiliki garis baru. Tempel di sini - generator MD5 online ini setuju dengan hash saya.