23 lines
No EOL
653 B
Python
23 lines
No EOL
653 B
Python
def find_marker(signal:str, marker_length=4) -> int:
|
|
for i in range(marker_length,len(signal)):
|
|
subsignal = signal[i-marker_length:i]
|
|
if len(set(subsignal)) == marker_length:
|
|
return i
|
|
else:
|
|
return -1
|
|
|
|
test = [
|
|
'mjqjpqmgbljsphdztnvjfqwrcgsmlb',
|
|
'bvwbjplbgvbhsrlpgdmjqwftvncz',
|
|
'nppdvjthqldpwncqszvftbrmjlhg',
|
|
'nznrnfrfntjfmvfwmzdfjlvtqnbhcprsg',
|
|
'zcfzfwzzqfrljwzlrfnpqdbhtmscgvjw'
|
|
]
|
|
|
|
for s in test:
|
|
print(find_marker(s), find_marker(s, 14), )
|
|
|
|
print('~'*10)
|
|
with open('2022/6/datastream.txt') as filein:
|
|
signal = filein.read()
|
|
print(find_marker(signal), find_marker(signal, 14)) |