day5 part1:
This commit is contained in:
parent
be3fdad22b
commit
30de9566c5
1367
2024/full/day05.txt
Normal file
1367
2024/full/day05.txt
Normal file
File diff suppressed because it is too large
Load Diff
55
2024/python/day05.py
Normal file
55
2024/python/day05.py
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
import matrix
|
||||||
|
import shared
|
||||||
|
|
||||||
|
def read(rows):
|
||||||
|
second = False
|
||||||
|
rules = []
|
||||||
|
updates = []
|
||||||
|
for row in rows:
|
||||||
|
if second:
|
||||||
|
updates.append(list(map(int, row.split(","))))
|
||||||
|
elif row == "":
|
||||||
|
second = True
|
||||||
|
else:
|
||||||
|
rules.append(list(map(int, row.split("|"))))
|
||||||
|
return rules, updates
|
||||||
|
|
||||||
|
|
||||||
|
# @shared.profile
|
||||||
|
def part1(rows):
|
||||||
|
rules, updates = read(rows)
|
||||||
|
bad = []
|
||||||
|
for idx, update in enumerate(updates):
|
||||||
|
for first, second in rules:
|
||||||
|
if first in update and second in update:
|
||||||
|
first_idx = update.index(first)
|
||||||
|
second_idx = update.index(second)
|
||||||
|
if first_idx > second_idx:
|
||||||
|
bad.append(idx)
|
||||||
|
break
|
||||||
|
total = 0
|
||||||
|
for idx, update in enumerate(updates):
|
||||||
|
if idx in bad:
|
||||||
|
continue
|
||||||
|
total += update[len(update) // 2]
|
||||||
|
print(total)
|
||||||
|
|
||||||
|
|
||||||
|
# @shared.profile
|
||||||
|
def part2(rows):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def main():
|
||||||
|
rows = [row for row in shared.load_rows(5)]
|
||||||
|
with shared.elapsed_timer() as elapsed:
|
||||||
|
part1(rows)
|
||||||
|
print("🕒", elapsed())
|
||||||
|
|
||||||
|
rows = [row for row in shared.load_rows(5, True)]
|
||||||
|
with shared.elapsed_timer() as elapsed:
|
||||||
|
part2(rows)
|
||||||
|
print("🕒", elapsed())
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
28
2024/samples/day05.txt
Normal file
28
2024/samples/day05.txt
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
47|53
|
||||||
|
97|13
|
||||||
|
97|61
|
||||||
|
97|47
|
||||||
|
75|29
|
||||||
|
61|13
|
||||||
|
75|53
|
||||||
|
29|13
|
||||||
|
97|29
|
||||||
|
53|29
|
||||||
|
61|53
|
||||||
|
97|53
|
||||||
|
61|29
|
||||||
|
47|13
|
||||||
|
75|47
|
||||||
|
97|75
|
||||||
|
47|61
|
||||||
|
75|61
|
||||||
|
47|29
|
||||||
|
75|13
|
||||||
|
53|13
|
||||||
|
|
||||||
|
75,47,61,53,29
|
||||||
|
97,61,53,29,13
|
||||||
|
75,29,13
|
||||||
|
75,97,47,61,53
|
||||||
|
61,13,29
|
||||||
|
97,13,75,29,47
|
Loading…
Reference in New Issue
Block a user