# encoding: utf-8 # Given a list of comma-separated pairs of numbers separated by a dash # e.g. 111-999,22-33 # find all the numbers that are some sequence of digits repeated twice import logging logger = logging.Logger(__name__) logger.addHandler(logging.StreamHandler()) logger.setLevel(logging.DEBUG) def main(): with open("day2_input.txt", "r") as f: input_line = f.readline().strip() inranges = [x.strip() for x in input_line.split(",")] num_ranges = len(inranges) tenths = num_ranges//10 logger.debug(f"Received {num_ranges} ranges.") all_invalids = [] for i, r in enumerate(inranges): if tenths and i % tenths == 0: logger.debug(f"Processing range {i}.") x, y = [int(q) for q in r.strip().split("-")] invalids = [] for k in range(x,y+1): s_k = str(k) l = len(s_k) m = l//2 if l % 2 == 0: if s_k[:m] == s_k[m:]: logger.debug(f"Found a double: {k}") invalids.append(k) all_invalids.extend(invalids) logger.info(f"Found {len(all_invalids)} invalid IDs.") logger.info(f"Sum of invalid IDs is {sum(all_invalids)}.") if __name__ == "__main__": main()