Шестой день программы "#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"]].
Комментариев нет:
Отправить комментарий