RNA是DNA不太出名的表亲。其主要目的是通过一种叫做翻译的过程来控制细胞中蛋白质的产生。在这个挑战中,你的任务是实现这个过程的一部分,RNA被分裂成密码子。
这一挑战在主题上是相关的,但是集中于翻译过程的另一部分。
我们会认为RNA是碱基对( AUCG )字母表上的一个长串。在翻译中,RNA被分成三个碱基对的不重叠块,称为密码子.该过程从密码子( AUG )开始,以停止密码子( UAA、UAG或UGA之一)结束。每个密码子(除了终止密码子)对应于一个氨基酸,由此产生的一系列氨基酸构成了蛋白质。
你的输入是一串非空的RNA。
您的输出是以任何合理的格式拆分RNA的密码子列表。在这个简化的模型中,流程从最左边的启动密码子AUG开始,该密码子包含在输出中。当遇到一个停止密码子时,或者当我们的RNA耗尽时,它就结束了。如果输入不包含起始密码子,则输出应为空列表。
考虑输入序列
ACAUGGAUGGACUGUAACCCCAUGC解析从AUG最左边的出现处开始,在索引2处。
AC AUG GAU GGA CUG UAA CCCCAUGC
* ^ ^ ^ +标记为*的密码子是起始密码子,使用^标记的密码子也是输出的一部分。停止密码子被标记为+。正确的输出是
AUG,GAU,GGA,CUG用于较短的输入
ACAUGGAUGGACUGU这个过程开始了
AC AUG GAU GGA CUG U
* ^ ^ ^这一次,没有遇到一个停止密码子,所以当我们耗尽碱基对时,进程就停止了。输出与上面相同。
评分
您可以编写一个函数的完整程序。最低字节数获胜,标准漏洞被禁止。
GGUACGGAUU ->
GGCGAAAUCGAUGCC -> AUG
ACAUGGAUGGACUGU -> AUG,GAU,GGA,CUG
AUGACGUGAUGCUUGA -> AUG,ACG
UGGUUAGAAUAAUGAGCUAG -> AUG,AGC
ACAUGGAUGGACUGUAACCCCAUGC -> AUG,GAU,GGA,CUG
CUAAGAUGGCAUGAGUAAUGAAUGGAG -> AUG,GCA
AAUGGUUUAAUAAAUGUGAUAUGAUGAUA -> AUG,GUU
UGUCACCAUGUAAGGCAUGCCCAAAAUCAG -> AUG
UAUAGAUGGUGAUGAUGCCAUGAGAUGCAUGUUAAU -> AUG,GUG,AUG,AUG,CCA
AUGCUUAUGAAUGGCAUGUACUAAUAGACUCACUUAAGCGGUGAUGAA -> AUG,CUU,AUG,AAU,GGC,AUG,UAC
UGAUAGAUGUAUGGAUGGGAUGCUCAUAGCUAUAAAUGUUAAAGUUAGUCUAAUGAUGAGUAGCCGAUGGCCUAUGAUGCUGAC -> AUG,UAU,GGA,UGG,GAU,GCU,CAU,AGC,UAU,AAA,UGU发布于 2016-01-16 03:17:41
i=input()
o=[]
if i.find('AUG')>=0:i=map(''.join,zip(*[iter(i[i.find('AUG'):])]*3))
else:print "";exit()
for j in i:
if j not in['UGA','UAA','UAG']:o+=[j]
else:break
print ','.join(o)说明将i设置为输入。把它从“八月”分割到最后。分成三串。检查是否停止密码子,并切断。
在这里试试
https://codegolf.stackexchange.com/questions/69513
复制相似问题