Attention ! Depuis la dernière mise à jour de Numworks concernant la gestion des couleurs sous forme uniquement de tuples (par exemple (0,0,0) pour le noir et non plus un nombre), plusieurs programmes ne fonctionnent plus. Le programme ci-dessous fonctionnera sur votre calculatrice mais semble planter en ligne.
Recherche d’une séquence d’ADN en utilisant l’algorithme naïf (case après case)
Le motif du haut de taille 5 est trouvé sur le brin d’ADN à la 1511e case :
La séquence de taille 7 est absente du brin:
La séquence de taille 7 est présente à la 1870e place :
Algorithmes plus sophistiqués :
from kandinsky import * from random import * ACTG = [(0,0,0),(0,252,0),(240,88,96),(248,180,48)] # L'ADN est fait de 4 composants (ACTG) donc 4 couleurs T=5 # taille de la sequence cherchee def rect(x,y,l,h,c): for i in range(l*h): set_pixel(x+i%l,y+i//l,c) def brin(): for i in range(80*50): fill_rect(4*(i%80),20+4*(i//80),4,4,choice(ACTG)) def aff(m): draw_string(str(m),0,0) fill_rect(4*(m%80),16+4*(m//80),4*T,4,(255,255,255)) fill_rect(4*(m%80),24+4*(m//80),4*T,4,(255,255,255)) def pixel(i): return get_pixel(4*(i%80),20+4*(i//80)) def naif(seq): m=0 while m<=80*50-T: if all(pixel(m+j)==seq[j] for j in range(T)): aff(m) return True else: m+=1 draw_string("ABS",0,0) return False def go(): seq=[choice(ACTG) for i in range(T)] for i,c in enumerate(seq): fill_rect(160+8*i,5,8,8,c) brin() naif(seq)