你的任务是把 RNA 序列翻译成蛋白质。
RNA 链由三个核苷酸组成的序列构成,这些序列称为密码子。每个密码子翻译成一种氨基酸。这些氨基酸连接起来,就形成了蛋白质。
在现实世界中,共有 64 个密码子,它们又对应 20 种氨基酸。不过,本练习只用到这 64 个密码子中的少数几个。它们列在下面:
| Codon | Amino Acid |
|---|---|
| AUG | Methionine |
| UUU, UUC | Phenylalanine |
| UUA, UUG | Leucine |
| UCU, UCC, UCA, UCG | Serine |
| UAU, UAC | Tyrosine |
| UGU, UGC | Cysteine |
| UGG | Tryptophan |
| UAA, UAG, UGA | STOP |
例如,RNA 字符串“AUGUUUUCU”有三个密码子:“AUG”、“UUU”和“UCU”。它们分别对应 Methionine、Phenylalanine 和 Serine。
你会从上面的表格中注意到,有三个**“STOP”密码子**。如果你遇到其中任何一个密码子,就忽略序列的其余部分,因为蛋白质已经完整了。
例如,“AUGUUUUCUUAAAUG”包含一个 STOP 密码子(“UAA”)。一旦到达这个位置,我们就停止处理。因此,我们只考虑它之前的部分(即“AUGUUUUCU”),而不考虑它之后的任何密码子(即“AUG”)。
想了解更多,请看维基百科上的蛋白质翻译。
将蛋白质序列输出为以 null 结尾的字符串,每个蛋白质后面都跟一个换行符。
一个示例输出是 "Methionine\nPhenylalanine\nSerine\n"
如果输入无效,输出一个空字符串。
| 寄存器 | 用途 | 类型 | 描述 |
|---|---|---|---|
$a0 |
输入 | 地址 | 以 null 结尾的输入字符串 |
$a1 |
输入/输出 | 地址 | 以 null 结尾的输出字符串 |
$t0-9 |
临时 | 任意 | 用于临时存储 |
探索 11 种不同的解法,包括命令式方法,模式匹配、递归和高阶函数等函数式思路,以及用 C++ 和汇编编写的一些底层代码。