Files
2018-10-16 21:32:40 +05:30

9.7 KiB
Raw Blame History

title, localeTitle
title localeTitle
Dna Pairing Dna Pairing

ДНК

:triangular_flag_on_post: Не забудьте использовать Read-Search-Ask если вы застряли. Попробуйте подключить программу :busts_in_silhouette: и напишите свой собственный код :pencil:

:checkered_flag: Проблема Объяснение:

  • Вы получите последовательность цепочек ДНК, и вам нужно получить пару и вернуть ее в виде 2D-массива базовых пар. Имейте в виду, что предоставленная прядь должна быть всегда первой.

  • Другой способ интерпретировать проблему: в ДНК существуют четыре потенциальных характера: «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: Код запуска

Код Объяснение:

  • Программа очень проста, лучшим решением, которое я придумал, является использование переключателя для захвата всех возможных четырех элементов. Использование операторов if потребует слишком много кода. Вы также можете использовать регулярные выражения.
  • Поскольку у нас есть оригинал и пара, я решил взять все четыре случая вместо двух базовых.
  • Создайте пустой массив и используйте функцию 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 на массив символов, чтобы мы могли использовать каждую букву, чтобы найти ее пару.
  • Используйте функцию карты для сопоставления каждого символа в массиве с массивом с символом и совпадающей парой, создавая 2D-массив.

Связанные ссылки

:clipboard: ПРИМЕЧАНИЯ ДЛЯ ВЗНОСОВ:

  • :warning: НЕ добавляйте решения, похожие на любые существующие решения. Если вы считаете, что это похоже, но лучше , попробуйте объединить (или заменить) существующее подобное решение.
  • Добавьте объяснение своего решения.
  • Классифицируйте решение в одной из следующих категорий - Basic , Intermediate и Advanced . :traffic_light:
  • Пожалуйста, добавьте свое имя пользователя, только если вы добавили соответствующее основное содержимое . ( :warning: НЕ удаляйте существующие имена пользователей )

Видеть :point_right: Wiki Challenge Solution Template для Wiki Challenge Solution Template для справки.