#!/usr/bin/env python import random import pprint def to_binstr(n,len): bv = [ "1" if n & (1<0: bitofs = tmp[-1] delta[i] = bitofs dd1[sym] = bitofs print "NEEDLE: ", needle needle_syms = [ needle[i*symbol_size:(i+1)*symbol_size] for i in range(0, num_syms)] # Search loop ptr = len(needle) - symbol_size while ptr < len(haystack): print haystack print ruler print "{0}^ (pos={1})".format(spaces(ptr-1), ptr) found = haystack[ptr - symbol_size:ptr] print "{0}{1}".format(spaces(ptr-symbol_size), found) print "{0}{1}".format(spaces(ptr-len(needle)), needle) if found in dd1: print "found {0}, delta=>{1}".format(found, dd1[found]) if dd1[found] == (num_syms-1)*symbol_size: print "MATCHED!" break elif dd1[found]>0: print "shifting" ptr += dd1[found] else: print "WTF?" break else: print "not found, big shift" ptr += len(needle)-symbol_size