你在一間生技工程公司工作,專門開發治療方案。
你的團隊剛接到一個新專案,要為一種罕見的癌症開發標靶治療。
這整件事非常複雜,但基本概念是,有時人體會產生過多的某種蛋白質。那會造成各種混亂。
但如果你能造出一種非常特定的分子(稱為 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
如果你想看看輸入和輸出的結構,可以參考測試套件中的範例。
只要在結構體裡使用私有欄位,並提供回傳 Option 或 Result 的公開 new 函式(這裡的 DNA::new 和 RNA::new 就是這樣),就能確保 DNA 的內部表示是正確的。因為每個有效的 DNA 字串都有對應的合法 RNA 字串,所以 into_rna 不需要回傳 Result/Option。
這也說明了你在測試中會看到的型別簽章。
DNA::new() 和 RNA::new() 的回傳型別都是 Result<Self, usize>,其中錯誤型別 usize 代表第一個無效字元的索引(字元索引,不是 utf8)。