Niklaus Wirth

Niklaus Wirth

Translate

Цепочка ДНК (DNA)

Шестой день программы "#100 Days Of Code"
Задание - написать функцию, которая будет формировать цепочку ДНК из представленной РНК

Если есть желание вспомнить, что такое ДНК и последовательность нуклеотидов в ней, то можно погуглить, или посмотреть в Википедии.

Главное, что нам предстоит сделать, это задать соответствие представленным нуклеотидам и сформировать из этих пар подмассивы. Затем поместить их в массив и вывести его на экран.

Осталось только вспомнить, что нуклеотиды соответствуют друг другу парами:Аденин - Тимин, Гуанин - Цитозин, и наоборот.

То есть, нам нужно подставить к каждому нуклеотиду из заданной цепочки соответствующий и сформировать из них пары.

Если не понятно задание, то лучше просто посмотреть ответы - что должна вернуть функция, в конце поста.

Начнем с того, что представленная последовательность у нас - строка. Для того, чтобы мы могли обратиться к ней по индексам, или сделать перебор всей строки циклом for нам нужно получить массив.

Для того, чтобы полученные пары нуклеотидов, а в нашем случае пары букв, мы создали пустой массив

Теперь, согласно заданному соответствию, мы пишем цикл switch, который будет подставлять нужное значение в нашу переменную, при каждом проходе цикла.

Запускаем цикл перебора массива for и в действии пишем, что в конец нового массива мы хотим добавить "подмассив" (в [] - скобках) пар значений. Где первое значение - это значение заданного массива (строки str) и соответствующего ему варианта, полученного путем перебора в switch

Остается теперь сделать возврат этого значения нашей функцией.


function pairElement(str) {
  var strArray = str.split("");
  var newArray = [];
  var toLet = function(test){
    switch(test){
      case "A":
        return "T";
      case "T":
        return "A";
      case "G":
        return "C";
      case "C":
        return "G";
      default:
        break;
    }
  };
for(var i = 0; i < strArray.length; i++){
  newArray.push([strArray[i], toLet(strArray[i])]);
}
  
  return newArray;
}


Вариант решения Spicyn Sergey


function pairElement(str) {
var pairs = {'A': 'T', 'T': 'A', 'C': 'G', 'G': 'C'};
return str.split('').map(function(nbase) {
return [nbase, pairs[nbase]];
});
}
pairElement("GCG");

pairElement("ATCGA")
return [["A","T"],["T","A"],["C","G"],["G","C"],["A","T"]].

pairElement("TTGAG")
return [["T","A"],["T","A"],["G","C"],["A","T"],["G","C"]].

pairElement("CTCTA")
return [["C","G"],["T","A"],["C","G"],["T","A"],["A","T"]].


Комментариев нет:

Отправить комментарий