четвер, 6 листопада 2014 р.

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|).
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")))

РЕШЕНО. Квиз принят как коррект. Формат вывода можно, конечно(желательно), поправить из списка в строку

Немає коментарів:

Дописати коментар