将 RNA 序列翻译成蛋白质。
RNA 可以拆分成由三个核苷酸构成的序列,称为密码子,然后翻译成蛋白质,如下所示:
RNA:"AUGUUUUCU" => 翻译为
密码子:"AUG", "UUU", "UCU"
=> 从而得到具有以下序列的蛋白质 =>
蛋白质:"Methionine", "Phenylalanine", "Serine"
共有 64 个密码子,它们又分别对应 20 种氨基酸;不过,在这个练习中,并非所有的密码子序列和对应的氨基酸都很重要。 只要程序能处理一个密码子,就应该能处理所有密码子。 不过,你可以随意扩展测试套件中的列表,把它们全部包含进去。
此外还有三个终止密码子(也称“STOP”密码子);一旦(核糖体)遇到其中任何一个密码子,翻译就会结束,蛋白质也随之终止。
之后的所有密码子都会被忽略,就像这样:
RNA:"AUGUUUUCUUAAAUG" =>
密码子:"AUG", "UUU", "UCU", "UAA", "AUG" =>
蛋白质:"Methionine", "Phenylalanine", "Serine"
注意,终止密码子"UAA"会终止翻译,最后的甲硫氨酸不会被翻译进蛋白质序列中。
下面列出了本练习需要用到的密码子及其对应的氨基酸。
| 密码子 | 氨基酸 |
|---|---|
| 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 |
想进一步了解,请参阅维基百科上的蛋白质翻译。
探索 11 种不同的解法,包括命令式方法,模式匹配、递归和高阶函数等函数式思路,以及用 C++ 和汇编编写的一些底层代码。