freeCodeCamp/guide/arabic/certifications/javascript-algorithms-and-d.../intermediate-algorithm-scri.../dna-pairing/index.md

8.4 KiB

title localeTitle
Dna Pairing دنا الاقتران

الحمض النووي

:triangular_flag_on_post: تذكر استخدام Read-Search-Ask إذا واجهتك مشكلة. حاول إقران البرنامج :busts_in_silhouette: واكتب الكود الخاص بك :pencil:

:checkered_flag: شرح المشكلة:

  • ستحصل على تسلسل حبلا الدنا وتحتاج إلى الحصول على الزوج وإعادتها كمجموعة ثنائية الأبعاد من أزواج القاعدة. ضع في اعتبارك أن السلاسل المتوفرة يجب أن تكون أولاً دائمًا.

  • طريقة أخرى لتفسير المشكلة: هناك أربعة أحرف محتملة موجودة في DNA: "A" و "T" و "G" و "C". يتم الجمع بين "A" و "T" معًا ، ويتم دائمًا إقران "G" و "C" معًا.
    تقدم لك هذه المشكلة إدخالاً ، على سبيل المثال "ATCGA". كل من هذه الشخصيات الخمسة يفتقدون أزواجهم.
    على سبيل المثال ، يجب أن يتم إقران الحرف الأول "A" مع "T" لإعطاء عنصر الصفيف ["A"، "T"].
    يجب إقران الحرف الثاني "T" مع "A" لإعطاء عنصر الصفيف ["T" ، "A"].
    عدد العناصر في الإخراج النهائي يساوي عدد الأحرف في الإدخال.

لا تتضمن هذه المشكلة إعادة ترتيب الإدخال في تركيبات أو تباينات مختلفة.

روابط ذات صلة

:speech_balloon: تلميح: 1

  • هناك نوعان من حالة القاعدة ، AT و CG ، هذه تذهب في الاتجاهين. يمكنك استخدام التعبير العادي ، إذا كانت بيانات أي شيء يمكن أن تفكر به.

حاول أن تحل المشكلة الآن

:speech_balloon: تلميح: 2

  • أود أن أوصي باستخدام التبديل ، لأنه يجعل الأمور أكثر سلاسة.

حاول أن تحل المشكلة الآن

:speech_balloon: تلميح: 3

  • يجب أن تكون النتيجة صفيفًا من المصفوفات ، لذا ضع ذلك في الاعتبار عند دفع الأشياء.

حاول أن تحل المشكلة الآن

تنبيه المفسد!

علامة تحذير

الحل في المستقبل!

:beginner: الحل الأساسي للكود:

` function pairElement(str) { // Return each strand as an array of two elements, the original and the pair. var paired = [];

  // Function to check with strand to pair. 
  var search = function(char) { 
    switch (char) { 
      case 'A': 
        paired.push(['A', 'T']); 
        break; 
      case 'T': 
        paired.push(['T', 'A']); 
        break; 
      case 'C': 
        paired.push(['C', 'G']); 
        break; 
      case 'G': 
        paired.push(['G', 'C']); 
        break; 
    } 
  }; 

  // Loops through the input and pair. 
  for (var i = 0; i < str.length; i++) { 
    search(str[i]); 
  } 

  return paired; 
} 

// test here 
pairElement("GCG"); 

`

:rocket: تشغيل الكود

شرح الشفرة:

  • البرنامج بسيط للغاية ، أفضل حل قد توصلت إليه هو استخدام مفتاح لالتقاط جميع العناصر الأربعة الممكنة. استخدام إذا كانت العبارات تأخذ الكثير من التعليمات البرمجية. يمكنك أيضًا استخدام التعبيرات العادية.
  • نظرًا لأننا مضطرون إلى الأصل والزوج ، قررت اتخاذ جميع الحالات الأربع بدلاً من القاعدة الثانية.
  • قم بإنشاء مصفوفة فارغة واستخدم وظيفة search لدفع القيم الصحيحة إلى المصفوفة وإعادتها.

روابط ذات صلة

:sunflower: حل الشفرة المتوسطة:

` function pairElement(str) { //create object for pair lookup var pairs = { "A": "T", "T": "A", "C": "G", "G": "C" } //split string into array of characters var arr = str.split(""); //map character to array of character and matching pair return arr.map(x => [x,pairs[x]]); }

//test here pairElement("GCG"); `

:rocket: تشغيل الكود

شرح الشفرة:

  • قم أولاً بتعريف كائن بكل الاحتمالات الزوجية ، وهذا يتيح لنا العثور بسهولة على المفتاح أو القيمة.
  • تقسيم str في صفيف أحرف حتى نتمكن من استخدام كل حرف للعثور على زوجها.
  • استخدم وظيفة الخريطة لتعيين كل حرف في الصفيف إلى مصفوفة ذات الحرف والزوج المطابق ، مما يؤدي إلى إنشاء مصفوفة ثنائية الأبعاد.

روابط ذات صلة

:clipboard: ملاحظات للمساهمات:

  • :warning: لا تقم بإضافة حلول مشابهة لأي حلول موجودة. إذا كنت تعتقد أنها مشابهة ولكن أفضل ، فحاول دمج (أو استبدال) الحل المشابه الموجود.
  • أضف شرحًا لحلك.
  • تصنيف الحل في واحدة من الفئات التالية - الأساسي والمتوسط والمتقدم . :traffic_light:
  • الرجاء إضافة اسم المستخدم الخاص بك فقط إذا قمت بإضافة أي محتويات رئيسية ذات صلة . ( :warning: لا تزيل أي أسماء مستخدمين حالية )

نرى :point_right: Wiki Challenge Solution Template كمرجع.