From ee248b10fa06e358d5880e122610934e15ce9395 Mon Sep 17 00:00:00 2001 From: AKP Date: Tue, 3 Dec 2024 09:59:16 +0000 Subject: [PATCH] 2024.03 --- challenges/2024/03-mullItOver/README.md | 1 + challenges/2024/03-mullItOver/main.py | 61 +++++++++++++++++++++++ challenges/2024/03-mullItOver/tests.json | 14 ++++++ challenges/2024/benchmark-graph.png | Bin 26874 -> 27963 bytes challenges/2024/benchmarks.jsonl | 2 + 5 files changed, 78 insertions(+) create mode 100644 challenges/2024/03-mullItOver/README.md create mode 100644 challenges/2024/03-mullItOver/main.py create mode 100644 challenges/2024/03-mullItOver/tests.json diff --git a/challenges/2024/03-mullItOver/README.md b/challenges/2024/03-mullItOver/README.md new file mode 100644 index 0000000..95586d4 --- /dev/null +++ b/challenges/2024/03-mullItOver/README.md @@ -0,0 +1 @@ +# [Day 3: Mull It Over](https://adventofcode.com/2024/day/3) diff --git a/challenges/2024/03-mullItOver/main.py b/challenges/2024/03-mullItOver/main.py new file mode 100644 index 0000000..2406f44 --- /dev/null +++ b/challenges/2024/03-mullItOver/main.py @@ -0,0 +1,61 @@ +import sys +import re + + +Instruction = tuple[str, int, int] + + +def parse(instr: str) -> list[Instruction]: + r = re.compile(r"(mul)\((\d{1,3}),(\d{1,3})\)|(do)\(\)|(don't)\(\)") + res = [] + for m in r.findall(instr): + if m[0]: + res.append(("mul", int(m[1]), int(m[2]))) + elif m[3]: + res.append(("do", 0, 0)) + elif m[4]: + res.append(("don't", 0, 0)) + return res + + +def one(instr: str): + instructions = parse(instr) + + acc = 0 + for (op, a, b) in instructions: + if op == "mul": + acc += a * b + + return acc + + +def two(instr: str): + instructions = parse(instr) + + acc = 0 + on = True + for (op, a, b) in instructions: + if op == "mul" and on: + acc += a * b + elif op == "do": + on = True + elif op == "don't": + on = False + + 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/03-mullItOver/tests.json b/challenges/2024/03-mullItOver/tests.json new file mode 100644 index 0000000..582693e --- /dev/null +++ b/challenges/2024/03-mullItOver/tests.json @@ -0,0 +1,14 @@ +{ + "1": [ + { + "is": "161", + "input": "xmul(2,4)%&mul[3,7]!@^do_not_mul(5,5)+mul(32,64]then(mul(11,8)mul(8,5))\n" + } + ], + "2": [ + { + "is": "48", + "input": "xmul(2,4)&mul[3,7]rundon't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))\n" + } + ] +} \ No newline at end of file diff --git a/challenges/2024/benchmark-graph.png b/challenges/2024/benchmark-graph.png index b7d39c4eb691692157a25be8e4adc52c79b73b03..9b0aa1472e7b306f736d782bbb75f953a24cc5a8 100644 GIT binary patch literal 27963 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%0Dc@u<-d% zu!IQF9dh?T+k;Q@;e+agHH$!LL<%FaE0DV!aE@DxiH(mPX7ujphk+#9OySNN3HTN4 z9I^H_kMfOy0pPLl2dW7C)4yHE4h~u`Z0bb!C;?pI5BBfH;lz39xf+%JFcBz;AxLpu yNKJaO0fSFHV*DDL=l@Htz_6uH@9*Z3XlG^tpVPb4eDPiS;#wYmO^tVG#=ii2b$!_Y literal 26874 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 JUcGEv?sxT8+He2> diff --git a/challenges/2024/benchmarks.jsonl b/challenges/2024/benchmarks.jsonl index 9a3f7af..66053fb 100644 --- a/challenges/2024/benchmarks.jsonl +++ b/challenges/2024/benchmarks.jsonl @@ -2,3 +2,5 @@ {"day": 1, "part": 2, "runner": "py", "min": 0.0161440372467041, "max": 0.019031047821044922, "avg": 0.016828114986419677, "n": 100} {"day": 2, "part": 1, "runner": "py", "min": 0.021907567977905273, "max": 0.02720332145690918, "avg": 0.023289167881011964, "n": 100} {"day": 2, "part": 2, "runner": "py", "min": 0.02489948272705078, "max": 0.0319674015045166, "avg": 0.026371052265167238, "n": 100} +{"day": 3, "part": 1, "runner": "py", "min": 0.02116227149963379, "max": 0.03153491020202637, "avg": 0.022634525299072266, "n": 100} +{"day": 3, "part": 2, "runner": "py", "min": 0.02115607261657715, "max": 0.03121805191040039, "avg": 0.022722084522247315, "n": 100}