failure part 2, do later

This commit is contained in:
Tyrel Souza 2024-12-03 21:04:02 -05:00
parent acb70df93e
commit 5cd000ff54

View File

@ -10,14 +10,17 @@ def is_decreasing(sequence):
return all(sequence[i] > sequence[i+1] for i in range(len(sequence) - 1)) return all(sequence[i] > sequence[i+1] for i in range(len(sequence) - 1))
def parse_line(row): def parse_line(row):
if not(is_increasing(row) or is_decreasing(row)): diffs = []
return 0
for previous, current in zip(row, row[1:]): for previous, current in zip(row, row[1:]):
diff = abs(current - previous) diff = current - previous
diffs.append(diff)
diff = abs(diff)
if diff >= 1 and diff <= 3: if diff >= 1 and diff <= 3:
continue continue
return 0 return 0, diffs
return 1 if not(is_increasing(row) or is_decreasing(row)):
return 0, diffs
return 1, diffs
# @shared.profile # @shared.profile
@ -25,12 +28,30 @@ def part1(rows):
rows = [list(map(int, row.split())) for row in rows] rows = [list(map(int, row.split())) for row in rows]
safe = 0 safe = 0
for row in rows: for row in rows:
safe += parse_line(row) check, _ = parse_line(row)
safe += check
print(safe) print(safe)
def remove_tolerance(row, diffs):
mdiff = max(map(abs, diffs))
try:
idx = diffs.index(mdiff)
except ValueError:
idx = diffs.index(-1 * mdiff)
row.pop(idx)
return row
# @shared.profile # @shared.profile
def part2(rows): def part2(rows):
pass rows = [list(map(int, row.split())) for row in rows]
safe = 0
for row in rows:
check, diffs = parse_line(row)
if check == 0:
row = remove_tolerance(row, diffs)
check, _ = parse_line(row)
safe += check
print(safe)
def main(): def main():
@ -42,6 +63,7 @@ def main():
rows = [row for row in shared.load_rows(2, True)] rows = [row for row in shared.load_rows(2, True)]
with shared.elapsed_timer() as elapsed: with shared.elapsed_timer() as elapsed:
part2(rows) part2(rows)
print(706, 754)
print("🕒", elapsed()) print("🕒", elapsed())