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.
sumber
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 denganunix2dos, 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.Jawaban:
Perl 5 (510)
Perl baik-baik saja dengan byte nol, jadi silakan gunakan hexdump yang disediakan untuk menjalankan ini.
Ini bekerja dengan mencetak bagian-bagian berbeda dari untai DNA, dengan bagian-bagian menjadi satu atau lebih garis. O atau H ditambahkan ke baris atas setiap komponen untuk memastikan output yang valid.
Asumsikan input dalam variabel
$_
.Versi golf:
Versi tidak disatukan:
(-65+ord$&)%15
dengan mudah menghasilkanA=>0, C=>2, T=>4, G=>6
, yang sempurna karena program membutuhkan dua elemen dalam array untuk setiap huruf.Bagian tengah, bagian atas, dan bagian bawah disimpan dalam indeks
8-10
dalam urutan itu.Daftar Bagian (menggunakan @ bukannya \ untuk menghindari satu ton melarikan diri):
Hexdump:
sumber
s/@/\\/g
melakukan hal itu, sebelum dicetak. Daftar bagian hanya hadir untuk menunjukkan apa data yang dikompresi.Python 3, 1008
Dekomposit ke blok yang lebih kecil dan kemudian kompres menggunakan zlib python dan mengkodekan data biner dengan pengkodean asii85. Sebelum mengompresi, ukurannya adalah 629 dan setelah kompresi dan pengodean, ukurannya adalah 260.
Blok kecil:
Program membaca dari STDIN. Ini mungkin memiliki spasi di akhir setiap baris dan mungkin memiliki garis kosong di akhir.
Checksum cocok dengan menggunakan skrip ini
Dan inilah versi yang tidak diserang:
sumber