first commit

This commit is contained in:
Peter Hudec
2024-12-03 06:43:43 +01:00
commit 1816f5cca9
15 changed files with 2233 additions and 0 deletions

1000
02/input.txt Normal file

File diff suppressed because it is too large Load Diff

6
02/input_sample.txt Normal file
View File

@ -0,0 +1,6 @@
7 6 4 2 1
1 2 7 8 9
9 7 6 2 1
1 3 2 4 5
8 6 4 4 1
1 3 6 7 9

30
02/solve_part1.py Executable file
View File

@ -0,0 +1,30 @@
#!/usr/bin/env python
def read_input(filename):
with open(filename) as f:
for line in f:
line = line.strip()
yield line.split(" ")
def main(args):
safe_count = 0
for levels in read_input("input.txt"):
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)):
continue
tmp3 = [x for x in tmp2 if x in [1,2,3]]
if len(tmp3) != len(tmp2):
continue
safe_count += 1
print(safe_count)
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(
prog='AdventOfCode 2024, Day 02, part 1',
)
parser.add_argument('-f', '--file', required=True)
args = parser.parse_args()
main(args)

40
02/solve_part2.py Executable file
View File

@ -0,0 +1,40 @@
#!/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)