From f77a97fd80266ac8b0b2b3d0699bcaa1e2848813 Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Sun, 1 Dec 2024 13:13:42 +0100 Subject: [PATCH] day 1 puzzle 2 --- progress.png | Bin 87272 -> 88197 bytes progress.yaml | 2 +- src/day1/puzzle2.typ | 36 ++++++++++++++++++++++++++++++++++++ src/main.pdf | Bin 24391 -> 24448 bytes src/utils.typ | 23 +++++++++++++++++------ 5 files changed, 54 insertions(+), 7 deletions(-) diff --git a/progress.png b/progress.png index 218ee039d2698a157b16aa73f13cab1ff14db8da..77276cf12ea8da4dd71f9ca45f2395ebafa29454 100644 GIT binary patch literal 88197 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 literal 87272 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 I?D@q101mtdp#T5? diff --git a/progress.yaml b/progress.yaml index bbf170a..0f03e03 100644 --- a/progress.yaml +++ b/progress.yaml @@ -1,2 +1,2 @@ 1: - stars: 1 \ No newline at end of file + stars: 2 \ No newline at end of file diff --git a/src/day1/puzzle2.typ b/src/day1/puzzle2.typ index e69de29..fcde641 100644 --- a/src/day1/puzzle2.typ +++ b/src/day1/puzzle2.typ @@ -0,0 +1,36 @@ +#import "/src/utils.typ": * + +#let solve(input) = { + let lines = input.split("\n") + let (l1, l2) = ((), ()) + let reg = regex("^(\d+)\s+(\d+)$") + for line in lines { + let digits = line.match(reg) + l1.push(digits.captures.first()) + l2.push(digits.captures.last()) + } + + let nums = (:) + + for n in l1 { + if n not in nums.keys() { + nums.insert(n, (0, 0)) + } + nums.at(n).first() += 1 + } + + for n in l2 { + if n in nums.keys() { + nums.at(n).last() += 1 + } + } + + let total = nums.pairs().map(((num, (a, b))) => int(num) * a * b).sum() + return total +} + +#show-puzzle( + 1, + solve, + example: 31 +) \ No newline at end of file diff --git a/src/main.pdf b/src/main.pdf index 3c3915da8ea6770c601d394c96c1086557685c53..2f9ca5146613ec8f1eaf872c82c8914e487ab027 100644 GIT binary patch delta 6744 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 delta 6678 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 diff --git a/src/utils.typ b/src/utils.typ index 91fc9fb..86d36dd 100644 --- a/src/utils.typ +++ b/src/utils.typ @@ -15,25 +15,36 @@ #let check-example(day, func, target-result, suffix: none) = { let result = (func)(read(get-example-path(day, suffix: suffix))) - /*assert( - result == target-result, - message: "Expected '" + repr(target-result) + "' got '" + repr(result) + "'" - )*/ let passes = (result == target-result) let name = if suffix == none [Example] else [Example '#suffix'] - box( + let badge = box( inset: (x: 1.2em, y: 0.6em), radius: 1.2em, + baseline: 35%, fill: if passes {green.lighten(20%)} else {red.lighten(20%)}, if passes [#name passes] else [#name fails] ) - h(0.6em) + if not passes { + badge = box( + baseline: 35%, + grid( + columns: 2, + align: horizon, + )[ + #badge + Expected '#repr(target-result)' got '#repr(result)' + ] + ) + } + + [#badge #h(0.6em)] } #let show-result(result) = { box( inset: (x: 1.2em, y: 0.6em), radius: 1.2em, + baseline: 35%, fill: blue.lighten(20%), text(fill: white)[Result: #result] )