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