30 lines
842 B
Python
30 lines
842 B
Python
from aocd.models import Puzzle
|
|
from aocd import submit
|
|
|
|
|
|
def get_marker_pos(signal, N):
|
|
"""
|
|
iterate over input signal and find the first occurence
|
|
where the set from i to i+N equals N. This means there
|
|
are no duplicates within this particular range.
|
|
"""
|
|
for i in range(0, len(signal)):
|
|
if len(set(signal[i : i + N])) == N:
|
|
return i + N
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# get puzzle and parse data
|
|
puzzle = Puzzle(year=2022, day=6)
|
|
signal = puzzle.input_data
|
|
|
|
# part a: find marker with 4 different chars
|
|
answer_a = get_marker_pos(signal, 4)
|
|
print(f"{answer_a}")
|
|
submit(answer_a, part="a", day=6, year=2022)
|
|
|
|
# part b: find marker with 14 different chars
|
|
answer_b = get_marker_pos(signal, 14)
|
|
print(f"{answer_b}")
|
|
submit(answer_b, part="b", day=6, year=2022)
|