Utilisation d’une fonction de hachage simple : somme des couleurs
from kandinsky import * from random import * ACTG = [0,(33,253,1),(246,90,100),(254,180,50)] # 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): rect(4*(i%80),20+4*(i//80),4,4,choice(ACTG)) def aff(m): draw_string(str(m),0,0) rect(4*(m%80),16+4*(m//80),4*T,4,(255,255,255)) 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 hachage(seq): m=0 empreinte = sum(seq) actuel = sum([pixel(j) for j in range(T)]) while m<=80*50-T: if actuel == empreinte: if all(pixel(m+j)==seq[j] for j in range(T)): aff(m) return True actuel = actuel - pixel(m) + pixel(m+T) 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): rect(160+8*i,5,8,8,c) brin() hachage(seq)