CODE CHALLENGE: Solve the Clump Finding Problem (restated below). You will need to make sure that your algorithm is efficient enough to handle a large dataset.
Clump Finding Problem: Find patterns forming clumps in a string.
Input: A string Genome, and integers k, L, and t.
Output: All distinct k-mers forming (L, t)-clumps in Genome.
Input: A string Genome, and integers k, L, and t.
Output: All distinct k-mers forming (L, t)-clumps in Genome.
Sample Input:
CGGACTCGACAGATGTGAAGAACGACAATGTGAAGACTCGACACGACAGAGTGAAGAGAAGAGGAAACATTGTAA
5 50 4
CGGACTCGACAGATGTGAAGAACGACAATGTGAAGACTCGACACGACAGAGTGAAGAGAAGAGGAAACATTGTAA
5 50 4
Sample Output:
CGACA GAAGA
CGACA GAAGA
## данный челенж никак нельзя расчитать в онлайне.. ибо Timeout
для вижуал студии код на примере срабатывает
def remove_duplicates(values):
output = []
seen = set()
for value in values:
if value not in seen:
output.append(value)
seen.add(value)
return output
def Clump(Genome, k, L, t):
res_gen = []
for i in range(len(Genome) - L):
#print (str(i) + " Lmer")
L_mer = Genome[i:i+L]
for n in range(L-k):
count_t = 0
k_mer = Genome[n:n+k]
#print str(n) + "kmer"
for j in range(0, L-k):
#print str(j) + " step"
if k_mer == L_mer[j:j+k]:
count_t +=1
#print ("t= " + str(count_t))
if count_t >= t:
res_gen.append(k_mer)
res_gen = remove_duplicates(res_gen)
return " ".join(res_gen)
print (Clump("CGGACTCGACAGATGTGAAGAACGACAATGTGAAGACTCGACACGACAGAGTGAAGAGAAGAGGAAACATTGTAA", 5, 50, 4))
НО! по квизу задание с данными в 9тыс нуклеотидов и последовательностями в 590 штук у меня уже считает добрых 15 минут.. это никак не укладывается в таймлимит по заданию - 5 мин.
Немає коментарів:
Дописати коментар