轨道
/
Rust
Rust
/
练习
/
RNA 转录
RNA 转录

RNA 转录

中等

简介

你在一家生物工程公司工作,公司专门从事治疗方案的研发。

你的团队刚刚接到一个新项目:为一种罕见的癌症开发靶向疗法。

Note

这件事非常复杂,但基本思路是:有时人体会产生过多的某种蛋白质。 这会引发各种各样的混乱。

但如果你能制造出一种非常特定的分子(称为 micro-RNA),它就能阻止这种蛋白质的产生。

这种技术叫做 RNA 干扰。

说明

你的任务是确定给定 DNA 序列的 RNA 互补链。

DNA 链和 RNA 链都是由核苷酸组成的序列。

DNA 中的四种核苷酸是腺嘌呤(A)、胞嘧啶(C)、鸟嘌呤(G)和胸腺嘧啶(T)。

RNA 中的四种核苷酸是腺嘌呤(A)、胞嘧啶(C)、鸟嘌呤(G)和尿嘧啶(U)。

给定一条 DNA 链,把每个核苷酸替换成与它互补的核苷酸,就得到转录出的 RNA 链:

  • G -> C
  • C -> G
  • T -> A
  • A -> U
Note

如果你想了解输入和输出的结构,可以看看测试套件中的示例。

关于 Rust 实现的说明

在结构体中使用私有字段,同时让公开的new函数返回 Option 或 Result(这里就是 DNA::new 和 RNA::new),我们就可以保证DNA的内部表示是正确的。因为每个合法的 DNA 字符串都对应一个合法的 RNA 字符串,所以我们不需要让into_rna返回 Result/Option。

这也解释了你在测试中会看到的类型签名。

DNA::new()和RNA::new()的返回类型都是Result<Self, usize>,其中错误类型usize表示第一个非法字符的下标(是字符下标,不是 utf8 下标)。


来源

Hyperphysics链接会在新窗口或新标签页中打开
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
Rust Exercism

准备好开始 RNA 转录 了吗?

注册 Exercism,借助 99 个练习 和真人导师指导,学习并掌握 Rust,全部免费。