Baz adeniine, Sitosine, Guanine ve Thymine (bir kodlanmış ACGT
) ait bir dizi göz önüne alındığında, karşılık gelen bir DNA iplikçikinin bir ASCII sanat temsilini üreteceksin.
Tel dikey olarak uzanacaktır. Sol taraftaki tel, girdi olarak verilmiş olandır. Sağ tel, tamamlayıcısı olacaktır. DNA ile aşina olmayanlar için A
, eşleştirilir T
ve C
eşleştirilir G
. Ayrıca, çift sarmalın her iki yanında, tüm bazlar için aynı olan omurga yapısı vardır. Bu yüzden, eğer girdi size verilirse TAGCAT
, ASCII sanatının büyük ölçekli yapısı şöyle olacaktır:
BTAB
BATB
BGCB
BCGB
BATB
BTAB
burada B
omurgasını temsil eder. Şimdi bu harflerin her biri bir molekülün tamamına dayanıyor ve siz asıl moleküler yapıyı yeniden üretiyorsunuz .
Bazlar
Bazların her biri için aşağıdaki şablonları 1 kullanın (her biri tamamlayıcı tabanı ve iki omurga molekülü ile birlikte görüntülenir):
1 ASCII düzenine yardımcı olmak için Peter Taylor'a teşekkür ederiz.
Adenin
O O
\\ /
P
/ \
--O O
/ |
< N NH2 ..... O * |
\ // \ / \\ / |
+--O // ---- ---- |
| \ | // \\ / \\ |
| >--N--< N ...... HN > ---+
| / \ / \ / / |
+--- N=== ---N--< |
| // \ |
| O O--+
| \
| >
| /
O O--
\ /
P
/ \\
O O
sitozin
O O
\\ /
P
/ \
--O O NH2 ..... O N
/ / \\ / \\ |
< ---- ---- \\ ---+
\ // \\ / \\ | / |
+--O < N ...... HN >--N--< |
| \ \ / \ / \ |
| >--N--- ===N O--+
| / \\ / \
+--- O ..... H2N >
| /
O O--
\ /
P
/ \\
O O
guanin
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
Çift Telli İnşaası
Bunlar, omurga yapısında hiç boşluk kalmayacak şekilde dikey olarak tekrarlanır. Bu, bu dört şablonun sınırlayıcı kutularının örtüşeceği anlamına gelir.
Sağ omurga sol ve üst ucundan alt ucu bağlanacak O
bir bir OH
.
Ücretsiz O
sağ omurga sol ve alt ucunda en sonunda bir serbest bağ gidiş içe, belirtilir olacak --
.
Örnek 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
Daha fazla örnek:
İşte birkaç başka örnek için MD5 karmaları (yabancı satır aralığı veya sondaki boşluk olmadan):
ATG 2e4a906c44a96fe84134bf4346adf11c (this is the above example)
C e3648b8960967463784818c3eee57246
TTT 6028a90b05775905ef1a00e7a45463c5
TAGCAT 3b834d2b7b9adc4113ffabd52d354c41
GATTACA a19463f965c641d071e07da59d64a418
Bunlardan herhangi birinin yanlış olduğunu düşünüyorsanız bana bildirin.
Sonuçlarınızın hashlarını nasıl güvenilir bir şekilde kontrol edeceğinizden emin değilseniz, bu çevrimiçi MD5 jeneratörü deneyin . Sondaki satır sonu olmadığından emin olun.
Ek Notlar
Sen olabilir sığdırma gördüğünüz gibi başında veya sonunda boşluk kullanmayın. Tabii ki, öncü boşluklar kullanıyorsanız, her satırda aynı miktarda olması gerekir.
Kimyasal yapıyı kopyalarken herhangi bir hata yaptıysam, yukarıdaki şablonlar bu zorluğun amaçları için hala normaldir.
Giriş dizesini parametre olarak alan, STDIN üzerinden komut satırı argümanı alan veya değişkende saklanmasını bekleyen bir fonksiyon veya program yazabilirsiniz . Elde edilen ASCII sanatını STDOUT'a yaz.
Bu kod golf, yani en kısa cevap (bayt cinsinden) kazanır.
TTT
dizeyi izleyen bir yeni satır içerdiğinden dolayı hash'i düzelttim .
ATG
Çıktınızı kopyaladım ve farklı kontroller aldım. Ve farklı işletim sistemleri farklı sağlama toplamları elde edecek. Bunları deneyebilirsin unix2dos, unix2mac...
.
Digest::MD5.hexdigest()
Unix tarzı satır sonları ile kullanmalarını sağladım . Ayrıca, hiçbirinin takip eden yeni bir çizgisi yok. Buraya yapıştırın - bu çevrimiçi MD5 jeneratörü hash'ımı kabul ediyor.