مسیرها
/
Rust
Rust
/
تمرین‌ها
/
رونویسی RNA
رونویسی RNA

رونویسی RNA

متوسط

مقدمه

شما برای یک شرکت مهندسی زیستی کار می‌کنید که در توسعه‌ی راه‌حل‌های درمانی تخصص دارد.

تیم شما همین حالا پروژه‌ی جدیدی گرفته است: توسعه‌ی یک درمان هدفمند برای نوع نادری از سرطان.

Note

همه‌چیز خیلی پیچیده است، اما ایده‌ی اصلی این است که گاهی بدن افراد مقدار زیادی از یک پروتئین مشخص تولید می‌کند. این می‌تواند خرابی‌های زیادی به بار آورد.

اما اگر بتوانید یک مولکول بسیار خاص بسازید (به اسم micro-RNA)، می‌تواند جلوی تولید آن پروتئین را بگیرد.

به این تکنیک RNA Interference می‌گویند.

دستورالعمل‌ها

وظیفه‌ی شما این است که مکمل RNA یک توالی DNA داده‌شده را مشخص کنید.

هم رشته‌ی 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 ثبت‌نام کنید تا Rust را همراه با 99 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.