注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Puriney's Notes

Puriney=purine+Y, my Wonderland

 
 
 

日志

 
 

[1Cpp1Day]DNA转录为RNA  

2013-10-08 05:33:42|  分类: QWERT |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
题目:http://rosalind.info/problems/rna/

An RNA string is a string formed from the alphabet containing 'A', 'C', 'G', and 'U'.

Given a DNA string t corresponding to a coding strand, its transcribed RNA string u is formed by replacing all occurrences of 'T' in t with 'U' in u.

Given: A DNA string t having length at most 1000 nt.

Return: The transcribed RNA string of t.

Sample Dataset

GATGGAACTTGACTACGTAAATT

Sample Output

GAUGGAACUUGACUACGUAAAUU


我也开始尝试跟随大师们的步伐,迈向c++的世界。虽然诸如 :

awk '{gsub(/T/,"U");print $0 }' rosalind_rna.txt 

这样完全可以bash一波流完全可以达到目的,但“为了写代码而写代码”,Rosalind不妨是我每日一练cpp的好去处。而且对于实在搞不定的题目我还可以跑去参考Y叔的:http://ygc.name/2013/02/04/transcribing-dna-into-rna/#more-4643

第一,这个题目从代码角度看,关键在于全局替换。把所有的T替代为U。
引申问题:
1. 怎样实现大小写不敏感? 
第二,从生物角度考虑,真正的转录应该是A->U, G->C, C->G, T->A的方式,所以另一个问题:
2. Cpp有无类似Perl这样的 $_ =~ tr/ATGC/UACG/ig 的方法?

#include <iostream>

#include <string>

#include <fstream>

int main(int argc, const char * argv[])

{

    std::string fileName;

    fileName = argv[1];

    std::ifstream infile(fileName);

    std::string line;

    while (!infile.eof()) {

        getline(infile, line);

        std::replace(line.begin(),line.end(),'T','U');

        std::cout << line << std::endl;

    }

    infile.close();

return 0;

}


在决定学习cpp之前,我稍微了解了一下Cpp较之C或者obj C的境遇,褒贬不一。不过没办法,现在实验室以及不少之前关注的程序,但凡是c基调的,都是cpp。我想,在象大牛一样独立自编一种计算机语言之前,我还是老老实实再掌握一门语言吧。有人吐槽cpp是封装,在我朴素认知的世界里,封装的感觉,大概就类似于Perl的subroutine、Python的def亦或是class、R的function吧。不论如何,我都喜欢封装的感觉。有人吐槽cpp矛盾地一边骨子里不相信程序员的可信水平一边却又可以让程序员更多自定义(大意如此),我想,但凡有点轻微强迫症的,都会是可信的吧,至少象Python那样。
  评论这张
 
阅读(391)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017