Added first two days for 2024
This commit is contained in:
parent
438edfdb90
commit
2bbe5fbac8
4 changed files with 2072 additions and 0 deletions
31
2024/day01.py
Normal file
31
2024/day01.py
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
lines = []
|
||||||
|
with open("./inputs/day01.txt") as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
|
||||||
|
left_column = []
|
||||||
|
right_column = []
|
||||||
|
for line in lines:
|
||||||
|
l, r = line.strip().split(" ")
|
||||||
|
left_column.append(int(l))
|
||||||
|
right_column.append(int(r))
|
||||||
|
|
||||||
|
left_column = sorted(left_column)
|
||||||
|
right_column = sorted(right_column)
|
||||||
|
diffs = [abs(left_column[x] - right_column[x]) for x in range(0, len(left_column))]
|
||||||
|
print(sum(diffs))
|
||||||
|
|
||||||
|
unique_nums = {}
|
||||||
|
for num in right_column:
|
||||||
|
if num in unique_nums.keys():
|
||||||
|
unique_nums[num] += 1
|
||||||
|
else:
|
||||||
|
unique_nums[num] = 1
|
||||||
|
|
||||||
|
sim_score = 0
|
||||||
|
for num in left_column:
|
||||||
|
if num in unique_nums.keys():
|
||||||
|
sim_score += num * unique_nums[num]
|
||||||
|
|
||||||
|
print(sim_score)
|
41
2024/day02.py
Normal file
41
2024/day02.py
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
def validate_report(levels):
|
||||||
|
inc = True
|
||||||
|
dec = True
|
||||||
|
for i in range(0, len(levels) - 1):
|
||||||
|
curr = levels[i]
|
||||||
|
nxt = levels[i + 1]
|
||||||
|
if inc and (curr == nxt or curr < nxt or curr > nxt + 3):
|
||||||
|
inc = False
|
||||||
|
if dec and (curr == nxt or curr > nxt or curr < nxt - 3):
|
||||||
|
dec = False
|
||||||
|
|
||||||
|
if inc or dec:
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
|
def dampened_reports(levels):
|
||||||
|
if validate_report(levels):
|
||||||
|
return True
|
||||||
|
|
||||||
|
valid_if_dampened = False
|
||||||
|
for i in range(0, len(levels)):
|
||||||
|
if validate_report(levels[:i] + levels[i + 1:]):
|
||||||
|
valid_if_dampened = True
|
||||||
|
break
|
||||||
|
|
||||||
|
return valid_if_dampened
|
||||||
|
|
||||||
|
|
||||||
|
reports = []
|
||||||
|
with open("./2024/inputs/day02.txt") as f:
|
||||||
|
reports = f.readlines()
|
||||||
|
|
||||||
|
levels = [[int(n) for n in x.strip().split(" ")] for x in reports]
|
||||||
|
safe_reports = [x for x in levels if validate_report(x)]
|
||||||
|
print(len(safe_reports))
|
||||||
|
|
||||||
|
dampened_reports = [x for x in levels if dampened_reports(x)]
|
||||||
|
print(len(dampened_reports))
|
1000
2024/inputs/day01.txt
Normal file
1000
2024/inputs/day01.txt
Normal file
File diff suppressed because it is too large
Load diff
1000
2024/inputs/day02.txt
Normal file
1000
2024/inputs/day02.txt
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue