From 2f7daa9cab81bb1626227cf222354e0920cbbfbf Mon Sep 17 00:00:00 2001 From: AKP Date: Thu, 5 Dec 2024 12:07:35 +0000 Subject: [PATCH] 2024.05 --- challenges/2024/05-printQueue/README.md | 1 + challenges/2024/05-printQueue/main.py | 91 +++++++++++++++++++++++ challenges/2024/05-printQueue/tests.json | 14 ++++ challenges/2024/README.md | 3 +- challenges/2024/benchmark-graph.png | Bin 32673 -> 36358 bytes challenges/2024/benchmarks.jsonl | 2 + 6 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 challenges/2024/05-printQueue/README.md create mode 100644 challenges/2024/05-printQueue/main.py create mode 100644 challenges/2024/05-printQueue/tests.json diff --git a/challenges/2024/05-printQueue/README.md b/challenges/2024/05-printQueue/README.md new file mode 100644 index 0000000..e2b215a --- /dev/null +++ b/challenges/2024/05-printQueue/README.md @@ -0,0 +1 @@ +# [Day 5: Print Queue](https://adventofcode.com/2024/day/5) diff --git a/challenges/2024/05-printQueue/main.py b/challenges/2024/05-printQueue/main.py new file mode 100644 index 0000000..dc31774 --- /dev/null +++ b/challenges/2024/05-printQueue/main.py @@ -0,0 +1,91 @@ +import sys +from collections import namedtuple, defaultdict +import math + + +OrderingRule = namedtuple("OrderingRule", ["page", "goes_before"]) + + +def parse(instr: str) -> tuple[list[OrderingRule], list[list[int]]]: + rules, sets = instr.split("\n\n") + + return ( + [OrderingRule(*map(int, line.split("|"))) for line in rules.splitlines()], + [list(map(int, line.split(","))) for line in sets.splitlines()], + ) + + +def generate_rule_map(rules: list[OrderingRule]) -> dict[int, list[int]]: + rule_map = defaultdict(lambda: []) + for rule in rules: + rule_map[rule.page].append(rule.goes_before) + return rule_map + + +def is_pageset_valid(rule_map: dict[int, list[int]], pageset: list[int]) -> bool: + for i, v in enumerate(pageset): + before = pageset[:i] + + for following_number in rule_map[v]: + if following_number in before: + return False + return True + + +def get_middle_number(x: list[int]) -> int: + assert len(x) % 2 == 1, f"{x} has no nice middle point" + return x[int((len(x) - 1) / 2)] + + +def one(instr: str): + rules, pagesets = parse(instr) + rule_map = generate_rule_map(rules) # for each item, these items should be after it + + acc = 0 + for pageset in pagesets: + if is_pageset_valid(rule_map, pageset): + acc += get_middle_number(pageset) + + return acc + + +def two(instr: str): + rules, pagesets = parse(instr) + rule_map = generate_rule_map(rules) + + inverse_rule_map = defaultdict( + lambda: [] + ) # for each item, these items should be before it + for rule in rules: + inverse_rule_map[rule.goes_before].append(rule.page) + + acc = 0 + for pageset in filter(lambda x: not is_pageset_valid(rule_map, x), pagesets): + while not is_pageset_valid(rule_map, pageset): + for i in range(len(pageset)): + for j in range(i + 1, len(pageset)): + iv = pageset[i] + jv = pageset[j] + + if jv in inverse_rule_map[iv] and i < j: + pageset[i], pageset[j] = pageset[j], pageset[i] + + acc += get_middle_number(pageset) + + return acc + + +def _debug(*args, **kwargs): + kwargs["file"] = sys.stderr + print(*args, **kwargs) + + +if __name__ == "__main__": + if len(sys.argv) < 2 or sys.argv[1] not in ["1", "2"]: + print("Missing day argument", file=sys.stderr) + sys.exit(1) + inp = sys.stdin.read().strip() + if sys.argv[1] == "1": + print(one(inp)) + else: + print(two(inp)) diff --git a/challenges/2024/05-printQueue/tests.json b/challenges/2024/05-printQueue/tests.json new file mode 100644 index 0000000..3041331 --- /dev/null +++ b/challenges/2024/05-printQueue/tests.json @@ -0,0 +1,14 @@ +{ + "1": [ + { + "is": "143", + "input": "47|53\n97|13\n97|61\n97|47\n75|29\n61|13\n75|53\n29|13\n97|29\n53|29\n61|53\n97|53\n61|29\n47|13\n75|47\n97|75\n47|61\n75|61\n47|29\n75|13\n53|13\n\n75,47,61,53,29\n97,61,53,29,13\n75,29,13\n75,97,47,61,53\n61,13,29\n97,13,75,29,47\n\n" + } + ], + "2": [ + { + "is": "123", + "input": "47|53\n97|13\n97|61\n97|47\n75|29\n61|13\n75|53\n29|13\n97|29\n53|29\n61|53\n97|53\n61|29\n47|13\n75|47\n97|75\n47|61\n75|61\n47|29\n75|13\n53|13\n\n75,47,61,53,29\n97,61,53,29,13\n75,29,13\n75,97,47,61,53\n61,13,29\n97,13,75,29,47\n\n" + } + ] +} \ No newline at end of file diff --git a/challenges/2024/README.md b/challenges/2024/README.md index d46556b..2e7562c 100644 --- a/challenges/2024/README.md +++ b/challenges/2024/README.md @@ -17,4 +17,5 @@ A day denoted with an asterisk means it has a visualisation. | 01 - Historian Hysteria | ★ ★ | Python | The reading comprehension was the hardest part of this. | | 02 - Red-Nosed Reindeer | ★ ★ | Python || | 03 - Mull It Over | ★ ★ | Python | The first instance of Advent of Parsing this year! | -| 04* - Ceres Search | ★ ★ | Python | When it says a cross, it does not mean a plus. | \ No newline at end of file +| 04* - Ceres Search | ★ ★ | Python | When it says a cross, it does not mean a plus. | +| 05 - Print Queue | ★ ★ | Python | Before you dismiss and idea as being "too simple", make sure you check that it actually wouldn't work! | \ No newline at end of file diff --git a/challenges/2024/benchmark-graph.png b/challenges/2024/benchmark-graph.png index a0f44ed4b8e45377e885f973b61efd55e57f5371..0c95cb0d614e7d81222c3f5519a12fd1c6104c13 100644 GIT binary patch literal 36358 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

Vx3d*e(Y*}oU>AMjWlIz>%_Y}{v?Xqv$L%$}X5 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 UT9x1Vl^o@`!WsEjau+=Q1Aj@fZ2$lO diff --git a/challenges/2024/benchmarks.jsonl b/challenges/2024/benchmarks.jsonl index 4b1a70b..43d0c75 100644 --- a/challenges/2024/benchmarks.jsonl +++ b/challenges/2024/benchmarks.jsonl @@ -6,3 +6,5 @@ {"day": 3, "part": 2, "runner": "py", "min": 0.02115607261657715, "max": 0.03121805191040039, "avg": 0.022722084522247315, "n": 100} {"day": 4, "part": 1, "runner": "py", "min": 0.17342424392700195, "max": 0.3778045177459717, "avg": 0.18848238706588746, "n": 100} {"day": 4, "part": 2, "runner": "py", "min": 0.05280470848083496, "max": 0.06299543380737305, "avg": 0.05627016305923462, "n": 100} +{"day": 5, "part": 1, "runner": "py", "min": 0.02001357078552246, "max": 0.030559301376342773, "avg": 0.02152919292449951, "n": 100} +{"day": 5, "part": 2, "runner": "py", "min": 0.02507805824279785, "max": 0.03197765350341797, "avg": 0.027084295749664308, "n": 100}