RNA和DNA一样,是在细胞中编码遗传信息的分子。它由核苷酸组成,由碱基腺嘌呤(A),胞嘧啶(C),鸟嘌呤(G)和尿嘧啶(U)表示。* 密码子是三个核苷酸的序列。
蛋白质是具有多种功能的大分子,例如在头发和指甲中发现的角蛋白和在血细胞中携带氧气的血红蛋白。它们由氨基酸组成,氨基酸在RNA分子中被编码为密码子。有时,不同的密码子可能编码相同的氨基酸。每个氨基酸通常由单个字母表示,例如H代表组氨酸。
给定一个序列ACGU
,可以将其翻译成相应的蛋白质字符串吗?
* DNA由ACGT组成,其中T为胸腺嘧啶。在DNA到RNA转录过程中,胸腺嘧啶被尿嘧啶替代。
输入值
输入将是仅包含ACGU
大写字符的单个字符串。您可以为此挑战编写函数或完整程序。
输出量
您可以选择通过打印或返回字符串来输出(后一种选择仅在函数的情况下可用)。
翻译应该开始以起始密码子(AUG
表示为M
)并且结束于终止密码子(之一UAA
,UAG
或UGA
表示为*
)。在四种情况下,输入可能无效:
- 输入不以起始密码子开头
- 输入不以终止密码结尾
- 输入的长度不是3的倍数
- 输入的结尾处包含终止密码子
在所有这些情况下,Error
都应输出。请注意,与终止密码子不同,起始密码子可能会在字符串开头之后出现。
否则,您应该通过以下RNA密码表将每个密码转换为各自的氨基酸:
* 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
...并输出翻译后的字符串。
例子
无效的情况:
<empty string> -> Error
AUG -> Error
UAA -> Error
AUGCUAG -> Error
AAAAAAA -> Error
GGGCACUAG -> Error
AUGAACGGA -> Error
AUGUAGUGA -> Error
AUGUUUGUUCCGUCGAAAUACCUAUGAACACGCUAA -> Error
有效案例:
AUGUGA -> M*
AUGAGGUGUAGCUGA -> MRCS*
AUGGGUGAGAAUGAAACGAUUUGCAGUUAA -> MGENETICS*
AUGCCAGUCGCACGAUUAGUUCACACGCUCUUGUAA -> MPVARLVHTLL*
AUGCUGCGGUCCUCGCAUCUAGCGUUGUGGUUAGGGUGUGUAACUUCGAGAACAGUGAGUCCCGUACCAGGUAGCAUAAUGCGAGCAAUGUCGUACGAUUCAUAG -> MLRSSHLALWLGCVTSRTVSPVPGSIMRAMSYDS*
AUGAAAAACAAGAAUACAACCACGACUAGAAGCAGGAGUAUAAUCAUGAUUCAACACCAGCAUCCACCCCCGCCUCGACGCCGGCGUCUACUCCUGCUUGAAGACGAGGAUGCAGCCGCGGCUGGAGGCGGGGGUGUAGUCGUGGUUUACUAUUCAUCCUCGUCUUGCUGGUGUUUAUUCUUGUUUUAA -> MKNKNTTTTRSRSIIMIQHQHPPPPRRRRLLLLEDEDAAAAGGGGVVVVYYSSSSCWCLFLF*
编辑:添加了更多的测试用例
计分
这是代码高尔夫,所以最少字节的代码将获胜。
注意:我不是分子生物学专家,所以如果我遗漏了任何内容,请随时纠正我:)
M
和开头*
。