def get_result(fname, window): lines = helper.read_lines_as_ints(fname) for i in range(window, len(lines)): curr = lines[i] prev_window = lines[(i-window):i] # print(curr, prev_window) if not check(curr, prev_window): return curr
def main() -> None: # card_public_key, door_public_key = helper.read_lines_as_ints("example.txt") card_public_key, door_public_key = helper.read_lines_as_ints("input.txt") # print(card_public_key) # print(door_public_key) crypto = Crypto(card_public_key, door_public_key) crypto.start() print() print("encryption key:", crypto.encryption_key)
def main(): # fname = "example.txt" fname = "input.txt" numbers = helper.read_lines_as_ints(fname) for a, b, c in combinations(numbers, 3): if a + b + c == GOAL: print(f"# {a}, {b}, {c}") print() result = a * b * c print(result) break
def main(): # settings = 'example' settings = 'input' fname = config[settings]['fname'] window = config[settings]['WINDOW'] lines = helper.read_lines_as_ints(fname) invalid_number = part1.get_result(fname, window) print("invalid_number:", invalid_number) data = find_sum(invalid_number, lines) print("contiguous sum makers:", data) result = min(data) + max(data) print() print(f"result: {result}")
def main(): # lines = helper.read_lines_as_ints("example1.txt") # lines = helper.read_lines_as_ints("example2.txt") lines = helper.read_lines_as_ints("input.txt") numbers = sorted(lines) numbers = [0] + numbers + [numbers[-1] + 3] clusters = [] print(numbers) print("length:", len(numbers)) print() for i in range(0, len(numbers)-2): left_elem = numbers[i] cl = [] j = i + 2 while True: right_elem = numbers[j] if right_elem - left_elem > 3: break # else middle_elem = numbers[j - 1] # just to the left of the j^th element cl.append(middle_elem) j += 1 # if len(cl) > 0: clusters.append(cl) # print("clusters: ", clusters) clusters = join_clusters(clusters) print("joined clusters: ", clusters) d = { 3: 7, 2: 4, 1: 2 } multipliers = [d[len(cl)] for cl in clusters] print("numbers to multiply:", multipliers) result = math.prod(multipliers) print() print("result:", result)
def main(): # lines = helper.read_lines_as_ints("example1.txt") # 7 (1 jolt) * 5 (3 jolts) = 35 # lines = helper.read_lines_as_ints("example2.txt") # 22 (1 jolt) * 10 (3 jolts) = 220 lines = helper.read_lines_as_ints("input.txt") numbers = sorted(lines) numbers = [0] + numbers + [numbers[-1] + 3] one = 0 three = 0 for a, b in zip(numbers, numbers[1:]): diff = b - a if diff == 1: one += 1 elif diff == 3: three += 1 # print(numbers) print("length:", len(numbers)) print(one) print(three) print() print("result:", one * three)