RNA , giống như DNA, là một phân tử được tìm thấy trong các tế bào mã hóa thông tin di truyền. Nó bao gồm các nucleotide , được đại diện bởi các cơ sở adenine (A), cytosine (C), guanine (G) và uracil (U). * Một codon là một chuỗi gồm ba nucleotide.
Protein là các phân tử lớn thực hiện một loạt các chức năng, chẳng hạn như keratin được tìm thấy trong tóc và móng tay và hemoglobin mang oxy trong các tế bào máu. Chúng được tạo thành từ các axit amin , được mã hóa dưới dạng codon trong các phân tử RNA. Đôi khi các codon khác nhau có thể mã hóa cho cùng một axit amin. Mỗi axit amin thường được đại diện bởi một chữ cái, ví dụ H là viết tắt của histidine.
Đưa ra một chuỗi ACGU
, bạn có thể dịch nó thành chuỗi protein tương ứng không?
* DNA bao gồm ACGT, trong đó T là thymine. Trong quá trình phiên mã DNA thành RNA, thymine được thay thế bằng uracil.
Đầu vào
Đầu vào sẽ là một chuỗi duy nhất chỉ bao gồm các ký tự ACGU
in hoa. Bạn có thể viết một chức năng hoặc một chương trình đầy đủ cho thử thách này.
Đầu ra
Bạn có thể chọn xuất qua in hoặc trả về một chuỗi (lựa chọn sau chỉ khả dụng trong trường hợp hàm).
Dịch nên bắt đầu tại một codon bắt đầu ( AUG
, được biểu thị dưới dạng M
) và kết thúc tại một codon dừng (một trong UAA
, UAG
hoặc UGA
, được biểu thị là *
). Có bốn trường hợp đầu vào có thể không hợp lệ:
- Đầu vào không bắt đầu bằng một codon bắt đầu
- Đầu vào không kết thúc với một codon dừng
- Độ dài của đầu vào không phải là bội số của 3
- Đầu vào chứa một codon dừng ở một nơi khác ngoài cuối
Trong tất cả các trường hợp này, Error
nên được xuất ra. Lưu ý rằng, không giống như các codon dừng, các codon bắt đầu có thể xuất hiện sau khi bắt đầu chuỗi.
Mặt khác, bạn nên chuyển đổi từng codon thành axit amin tương ứng thông qua bảng codon RNA sau :
* UAA UAG UGA
A GCU GCC GCA GCG
C UGU UGC
D GAU GAC
E GAA GAG
F UUU UUC
G GGU GGC GGA GGG
H CAU CAC
I AUU AUC AUA
K AAA AAG
L UUA UUG CUU CUC CUA CUG
M AUG
N AAU AAC
P CCU CCC CCA CCG
Q CAA CAG
R CGU CGC CGA CGG AGA AGG
S UCU UCC UCA UCG AGU AGC
T ACU ACC ACA ACG
V GUU GUC GUA GUG
W UGG
Y UAU UAC
... và xuất chuỗi dịch.
Ví dụ
Các trường hợp không hợp lệ:
<empty string> -> Error
AUG -> Error
UAA -> Error
AUGCUAG -> Error
AAAAAAA -> Error
GGGCACUAG -> Error
AUGAACGGA -> Error
AUGUAGUGA -> Error
AUGUUUGUUCCGUCGAAAUACCUAUGAACACGCUAA -> Error
Các trường hợp hợp lệ:
AUGUGA -> M*
AUGAGGUGUAGCUGA -> MRCS*
AUGGGUGAGAAUGAAACGAUUUGCAGUUAA -> MGENETICS*
AUGCCAGUCGCACGAUUAGUUCACACGCUCUUGUAA -> MPVARLVHTLL*
AUGCUGCGGUCCUCGCAUCUAGCGUUGUGGUUAGGGUGUGUAACUUCGAGAACAGUGAGUCCCGUACCAGGUAGCAUAAUGCGAGCAAUGUCGUACGAUUCAUAG -> MLRSSHLALWLGCVTSRTVSPVPGSIMRAMSYDS*
AUGAAAAACAAGAAUACAACCACGACUAGAAGCAGGAGUAUAAUCAUGAUUCAACACCAGCAUCCACCCCCGCCUCGACGCCGGCGUCUACUCCUGCUUGAAGACGAGGAUGCAGCCGCGGCUGGAGGCGGGGGUGUAGUCGUGGUUUACUAUUCAUCCUCGUCUUGCUGGUGUUUAUUCUUGUUUUAA -> MKNKNTTTTRSRSIIMIQHQHPPPPRRRRLLLLEDEDAAAAGGGGVVVVYYSSSSCWCLFLF*
Chỉnh sửa: Đã thêm nhiều trường hợp kiểm tra
Chấm điểm
Đây là mã golf, vì vậy mã trong ít byte nhất sẽ thắng.
Lưu ý: Tôi không phải là chuyên gia về sinh học phân tử, vì vậy hãy sửa tôi nếu tôi nói sai bất cứ điều gì :)
M
và kết thúc bằng *
.