Minimum Skew Problem: Find a position in a genome minimizing the skew.
Input: A DNA string Genome.
Output: All integer(s) i minimizing Skewi (Genome) among all values of i (from 0 to |Genome|).
Input: A DNA string Genome.
Output: All integer(s) i minimizing Skewi (Genome) among all values of i (from 0 to |Genome|).
CODE CHALLENGE: Solve the Minimum Skew Problem.
def skew(Genome):
skew_i = 0
skew_diagram = []
for i in Genome:
if i == "C":
skew_i -=1
skew_diagram.append((skew_i))
elif i == "G":
skew_i +=1
skew_diagram.append((skew_i))
else:
skew_diagram.append((skew_i))
return skew_diagram
#алгоритм поиска индексов минимумов. Гвоздь алгоритма в питоне: если в списке неколько одинаковых элементов на разных позициях, то выводится индекс первого, что нас не утсраивает. Нам нужны разные индексы всех минимумов. По-этому, когда в цикле встречаем минимум - меняем этот элемент с минимума на максимум, чтоб он при поиске минимума больше не искался.
def skew_min(skew_diagram):
minim = min(skew_diagram)
maxim = max(skew_diagram)
res = []
for i in skew_diagram:
if i == minim:
res.append(str(skew_diagram.index(i)+1))
skew_diagram[skew_diagram.index(i)] = maxim
return res
print (skew_min(skew("TAAAGACTGCCGAGAGGCCAACACGAGTGCTAGAACGAGGGGCGTAAACGCGGGTCCGAT")))
РЕШЕНО. Квиз принят как коррект. Формат вывода можно, конечно(желательно), поправить из списка в строку
Немає коментарів:
Дописати коментар