Đưa ra một chuỗi các cơ sở Adenine, Cytosine, Guanine và Thymine (được mã hóa dưới dạng ACGT
), bạn sẽ tạo ra một đại diện nghệ thuật ASCII của một chuỗi DNA tương ứng.
Các sợi sẽ mở rộng theo chiều dọc. Chuỗi bên trái là chuỗi bạn được cung cấp làm đầu vào. Các sợi bên tay phải sẽ là bổ sung của nó. Đối với những người không quen thuộc với DNA, A
được ghép nối T
và C
được ghép nối với G
. Hơn nữa, có cấu trúc xương sống ở hai bên của chuỗi kép giống hệt nhau cho tất cả các cơ sở. Vì vậy, nếu bạn được cung cấp đầu vào TAGCAT
, cấu trúc quy mô lớn của nghệ thuật ASCII sẽ là:
BTAB
BATB
BGCB
BCGB
BATB
BTAB
nơi B
đại diện cho xương sống. Bây giờ mỗi chữ cái này là viết tắt của toàn bộ một phân tử và bạn sẽ tái tạo cấu trúc phân tử thực tế .
Căn cứ
Sử dụng các mẫu 1 sau đây cho mỗi cơ sở (mỗi mẫu được hiển thị cùng với cơ sở bổ sung và hai phân tử xương sống):
1 Tín dụng cho Peter Taylor vì đã giúp đỡ với bố cục ASCII.
Adenine
O O
\\ /
P
/ \
--O O
/ |
< N NH2 ..... O * |
\ // \ / \\ / |
+--O // ---- ---- |
| \ | // \\ / \\ |
| >--N--< N ...... HN > ---+
| / \ / \ / / |
+--- N=== ---N--< |
| // \ |
| O O--+
| \
| >
| /
O O--
\ /
P
/ \\
O O
Cytosin
O O
\\ /
P
/ \
--O O NH2 ..... O N
/ / \\ / \\ |
< ---- ---- \\ ---+
\ // \\ / \\ | / |
+--O < N ...... HN >--N--< |
| \ \ / \ / \ |
| >--N--- ===N O--+
| / \\ / \
+--- O ..... H2N >
| /
O O--
\ /
P
/ \\
O O
Quan
O O
\\ /
P
/ \
--O O
/ |
< N O ..... H2N |
\ // \ // \ |
+--O // ---- ---- |
| \ | // \ // \\ |
| >--N--< NH ...... N > ---+
| / \ / \ / / |
+--- N=== ---N--< |
| \ // \ |
| NH2 ..... O O--+
| \
| >
| /
O O--
\ /
P
/ \\
O O
Tuyến ức
O O
\\ /
P
/ \
--O O * O ..... H2N N
/ \ // \ / \\ |
< ---- ---- \\ ---+
\ // \ // \\ | / |
+--O < NH ...... N >--N--< |
| \ \ / \ / \ |
| >--N--- ===N O--+
| / \\ \
+--- O >
| /
O O--
\ /
P
/ \\
O O
Xây dựng sợi đôi
Chúng lặp lại theo chiều dọc, sao cho không có khoảng trống trong cấu trúc xương sống. Điều này có nghĩa là các hộp giới hạn của bốn mẫu này sẽ chồng lên nhau.
Đầu dưới cùng bên trái và đầu trên của xương sống bên phải sẽ kết nối với đầu O
của một OH
.
Sự tự do O
ở đầu trên cùng của đầu bên trái và dưới cùng của xương sống bên phải sẽ có một trái phiếu tự do đi vào bên trong, được chỉ định bởi --
.
Thí dụ 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
Thêm ví dụ:
Dưới đây là các giá trị băm MD5 của một số ví dụ khác (không có dấu cách hàng đầu hoặc dấu cách bên ngoài):
ATG 2e4a906c44a96fe84134bf4346adf11c (this is the above example)
C e3648b8960967463784818c3eee57246
TTT 6028a90b05775905ef1a00e7a45463c5
TAGCAT 3b834d2b7b9adc4113ffabd52d354c41
GATTACA a19463f965c641d071e07da59d64a418
Hãy cho tôi biết nếu bạn nghĩ bất kỳ điều nào trong số này là sai.
Nếu bạn không chắc chắn cách kiểm tra băm kết quả của mình một cách đáng tin cậy, hãy thử trình tạo MD5 trực tuyến này . Hãy chắc chắn rằng không có dấu ngắt dòng.
Ghi chú thêm
Bạn có thể sử dụng không gian hàng đầu hoặc dấu vết khi bạn thấy phù hợp. Tất nhiên, nếu bạn sử dụng các khoảng trắng hàng đầu thì nó phải có cùng số tiền trong mỗi dòng.
Nếu tôi có bất kỳ sai lầm nào trong việc sao chép cấu trúc hóa học, các mẫu trên vẫn mang tính quy phạm cho mục đích của thử thách này.
Bạn có thể viết một hàm hoặc một chương trình lấy chuỗi đầu vào làm tham số, đối số dòng lệnh thông qua STDIN hoặc hy vọng nó sẽ được lưu trữ trong một biến. Viết nghệ thuật ASCII kết quả vào STDOUT.
Đây là mã golf, vì vậy câu trả lời ngắn nhất (tính bằng byte) sẽ thắng.
TTT
vì chuỗi chứa một dòng mới.
ATG
đầu ra của bạn và có tổng kiểm tra khác nhau. Và hệ điều hành khác nhau sẽ nhận được tổng kiểm khác nhau. Bạn có thể thử những thứ này với unix2dos, unix2mac...
.
Digest::MD5.hexdigest()
với các kết thúc dòng kiểu Unix. Ngoài ra, không ai trong số họ có một dòng mới. Dán nó ở đây - trình tạo MD5 trực tuyến này đồng ý với các giá trị băm của tôi.