adventofcode-2024/02/solve_part2.py

40 lines
1.0 KiB
Python
Raw Normal View History

2024-12-03 06:43:43 +01:00
#!/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)