Wpis z mikrobloga

@trollasek: Po sprawdzeniu odcinka o długości 5, powinieneś zerować counter, bo masz zgodność dla x = 3 dla y od 2 do 4 w a zgodność:
a: 1 1 0 0 1
b: 1 0 0 0 1
i po tym counter == 3

a później dla x = 4:
a: 1 0 0 1 0
b: 1 0 0 0 1
counter == 5 (a nawet 6)
@trollasek:
1. Ten kod będzie koszmarnie wolny dla długich tablic. Juz to co sugerowałem wczesniej z mapowaniem do stringa będzie sensowniejsze
2. Takie błędy łatwo wyłapiesz korzystając z debugera. Właśnie niewyzerowane zmienne (zaufam lukequaint, nie sprawdzałem) idealnie widać - przechodzisz do następnej pozycji w pętli/warunku i widzisz, ze licznik nie patrzy od nowa.
@venomik: sprawa wyglada tak, że a będzie zawierało kilkaset znaków i będzie w jednej funkcji tworzona i zaraz po tym porownywana z tablica b w ktorej bedzie 20 znakow. Po prostu b jest znakiem konca dla tablicy a, o to chodzi i najlepiej jakby to szybko chodzilo i przesadnie nie obciazalo procesora. W takim razie sprobuje Twoje rozwiazanie.
@lukequaint: no tak, wszystko jasne :)
@trollasek: nie wiem, czy rozwiazanie śmieszne, czy to, że link nie działa, bo u mnie nie działa jak teraz sprawdziłem.
a=[1,0,1,1,1,0,0,1,0,1,1,1,0,0,1,0,1,0,1,1,1,1,1,0,0,0,1,0]
b=[1,0,0,0,1]
c = [x for x in range(len(a) - len(b)) if b == a[0+x:len(b)+x]]

c powinno zawierać listę indeksów, przy których sekwencja pasuje.