نسخ RNA

نسخ RNA

متوسط

مقدمة

أنت تعمل في شركة هندسة حيوية متخصصة في تطوير حلول علاجية.

تلقّى فريقك للتو مشروعًا جديدًا لتطوير علاج موجّه لنوع نادر من السرطان.

Note

الأمر معقّد للغاية، لكن الفكرة الأساسية هي أن أجسام الناس تنتج أحيانًا كميات مفرطة من بروتين معيّن، وقد يتسبب ذلك في فوضى من كل نوع.

لكن إذا استطعت إنشاء جزيء دقيق للغاية (يُسمى الرنا الميكروي)، فيمكنه منع إنتاج هذا البروتين.

تُسمى هذه التقنية تداخل الرنا.

التعليمات

مهمتك هي تحديد المكمّل من 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، فلا حاجة إلى إرجاع Result/Option من into_rna.

وهذا يفسّر توقيعات الأنواع التي ستراها في الاختبارات.

نوع الإرجاع في كل من DNA::new() وRNA::new() هو Result<Self, usize>، حيث يمثّل نوع الخطأ usize فهرس أول محرف غير صالح (فهرس المحرف، وليس utf8).


المصدر

Hyperphysicsيفتح الرابط في نافذة أو علامة تبويب جديدة
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Rust Exercism

مستعد لبدء نسخ RNA؟

سجّل في Exercism لتتعلّم وتتقن Rust عبر 99 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.