From a6edde91393055ee80b401b6f7fc90016c8dfa10 Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Wed, 11 Dec 2024 18:26:44 +0100 Subject: [PATCH] added visualization for day 11 puzzle 1 --- src/day11/puzzle1.typ | 26 +++++++++++++++++++++++++- src/main.pdf | Bin 168110 -> 169713 bytes 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/day11/puzzle1.typ b/src/day11/puzzle1.typ index 24a9ba2..4b53caf 100644 --- a/src/day11/puzzle1.typ +++ b/src/day11/puzzle1.typ @@ -1,4 +1,6 @@ #import "/src/utils.typ": * +#import "@preview/cetz:0.3.1": canvas +#import "@preview/cetz-plot:0.1.0": plot #let process(rock) = { if rock == 0 { @@ -33,8 +35,30 @@ return rocks.len() } +#let visualize(input) = { + let rocks = input.split(" ").map(int) + let values = (rocks.len(),) + for _ in range(25) { + rocks = blink(rocks) + values.push(rocks.len()) + } + canvas({ + plot.plot( + { + plot.add(range(26).zip(values)) + }, + size: (6,6), + x-tick-step: 5, + y-tick-step: 10000, + x-label: "Blinks", + y-label: "Rocks" + ) + }) +} + #show-puzzle( 11, 1, solve, - example: 55312 + example: 55312, + visualize: visualize ) \ No newline at end of file diff --git a/src/main.pdf b/src/main.pdf index 4430ffd180ec9f6ed8d14e5bcafaff4669bbc0b4..dad93e25944f9a920c468dfeec1a4cea54cef757 100644 GIT binary patch delta 15828 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 i;ePoHB#|kG(CYvBd0Api4B=TyC@|}%v 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