Egy biomérnöki cégnél dolgozol, amely terápiás megoldások fejlesztésére szakosodott.
A csapatod most kapott egy új projektet: célzott terápiát kell kifejlesztenetek egy ritka ráktípus ellen.
Az egész nagyon bonyolult, de az alapötlet az, hogy az emberi szervezet néha túl sokat termel egy adott fehérjéből. Ez pedig sok bajt okozhat.
Ha viszont sikerül létrehoznod egy nagyon speciális molekulát (ezt nevezik mikro-RNS-nek), az megakadályozhatja, hogy a fehérje termelődjön.
Ezt a technikát RNS-interferenciának hívják.
A feladatod, hogy meghatározd egy adott DNS-szekvencia RNS-komplementerét.
A DNS- és az RNS-szálak is nukleotidok sorozatából állnak.
A DNS-ben négy nukleotid található: adenin (A), citozin (C), guanin (G) és timin (T).
Az RNS-ben négy nukleotid található: adenin (A), citozin (C), guanin (G) és uracil (U).
Egy DNS-szálról átírt RNS-szál úgy jön létre, hogy minden nukleotidot kicserélünk a komplementerére:
G -> C
C -> G
T -> A
A -> U
Ha szeretnéd megnézni, hogyan épülnek fel a bemenetek és a kimenetek, vess egy pillantást a tesztcsomag példáira.
Ha a struktúrákban privát mezőket használunk, a nyilvános new függvények pedig Option vagy Result értéket adnak vissza (ahogy itt a DNA::new és a RNA::new esetében), garantálhatjuk, hogy a DNA belső reprezentációja helyes. Mivel minden érvényes DNA stringhez tartozik egy érvényes RNA string, az into_rna függvényből nem kell Result/Option értéket visszaadnunk.
Ez magyarázza a tesztekben látható típusszignatúrákat.
A DNA::new() és a RNA::new() visszatérési típusa egyaránt Result<Self, usize>, ahol a usize hibatípus az első érvénytelen karakter indexét jelöli (karakterindex, nem utf8).
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Rust nyelvet 99 feladat segítségével, valódi emberi mentorálással, mindez ingyen.