#!/usr/bin/env python def read_input(filename): with open(filename) as f: for line in f: line = line.strip() yield line.split(" ") def is_safe(levels): tmp = [ (int(levels[i-1]) - int(levels[i])) for i in range(1,len(levels))] tmp2 = [ abs(x) for x in tmp] if (abs(sum(tmp)) != sum(tmp2)): return False tmp3 = [x for x in tmp2 if x in [1,2,3]] if len(tmp3) != len(tmp2): return False return True def main(args): safe_count = 0 for levels in read_input(args.file): if (is_safe(levels)): safe_count += 1 continue for i in range(len(levels)): tmp2 = levels[:i] + levels[i+1 :] if is_safe(tmp2): safe_count += 1 break print(safe_count) if __name__ == "__main__": import argparse parser = argparse.ArgumentParser( prog='AdventOfCode 2024, Day 02, part 2', ) parser.add_argument('-f', '--file', required=True) args = parser.parse_args() main(args)