#!/usr/bin/env python # coding: utf-8 # In[1]: import aocd data = aocd.get_data(year=2017, day=1) inputvalue = data.strip() # In[2]: def captcha_next(inputvalue): same_as_next = ( digit for digit, next in zip(inputvalue, inputvalue[1:] + inputvalue[0]) if digit == next ) return sum(map(int, same_as_next)) tests = { "1122": 3, "1111": 4, "1234": 0, "91212129": 9, } for in_, out in tests.items(): assert captcha_next(in_) == out print("Part 1:", captcha_next(inputvalue)) # In[3]: def captcha_halfway(inputvalue): halfway = len(inputvalue) // 2 same_as_halfway = ( digit for digit, other in zip(inputvalue, inputvalue[halfway:] + inputvalue[:halfway]) if digit == other ) return sum(map(int, same_as_halfway)) tests = { "1212": 6, "1221": 0, "123425": 4, "123123": 12, "12131415": 4, } for in_, out in tests.items(): assert captcha_halfway(in_) == out print("Part 2:", captcha_halfway(inputvalue))