Skip to content

Commit f85316c

Browse files
committed
just pushing local changes so can work on elsewhere
1 parent 7b3663a commit f85316c

File tree

3 files changed

+80
-7
lines changed

3 files changed

+80
-7
lines changed

puzzle-input/20.txt

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
%pj -> sh
2+
%mn -> jp
3+
&hf -> rg, vl, tq, qq, mv, zz
4+
%xl -> hf
5+
%sv -> mn, dl
6+
%kk -> lh
7+
&sj -> kz
8+
%jj -> lq, kk
9+
%mr -> bm, hb
10+
%sx -> lq, fn
11+
%fn -> zr, lq
12+
%pf -> dl, gv
13+
%lr -> jj, lq
14+
%jp -> dl, pj
15+
&hb -> sj, mr, rz, qg, pr
16+
%vg -> zz, hf
17+
%pr -> zq
18+
%hn -> pf
19+
%jg -> tj
20+
%qg -> vk
21+
%dv -> xl, hf
22+
&qq -> kz
23+
%fm -> lr
24+
&ls -> kz
25+
%pd -> hb, xg
26+
%rj -> hb
27+
%fb -> hf, tq
28+
%zz -> np
29+
%bm -> pd, hb
30+
%xn -> lq, fm
31+
%gv -> jg, dl
32+
%dz -> sx
33+
%zs -> dl, nh
34+
%tj -> zs, dl
35+
%mv -> vl
36+
&kz -> rx
37+
%np -> cl, hf
38+
&bg -> kz
39+
%vl -> vg
40+
%xg -> rz, hb
41+
%rz -> pr
42+
%zq -> hb, qg
43+
%lh -> rd
44+
%zr -> lq
45+
%fl -> hb, rj
46+
%xr -> xn, lq
47+
%rd -> dz, lq
48+
%cl -> hf, gj
49+
%nh -> dl
50+
%sh -> hn, dl
51+
%vk -> fx, hb
52+
%gj -> hf, dv
53+
%tq -> mv
54+
&dl -> hn, pj, ls, mn, jg, sv
55+
%fx -> fl, hb
56+
&lq -> bg, kk, dz, xr, lh, fm
57+
%rg -> hf, fb
58+
broadcaster -> xr, mr, rg, sv

src/solutions/day19.rs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,15 @@ pub fn puzzle_1(input: &str) -> Result<u32, PuzzleErr> {
259259
Ok(organize_parts(&parts, &workflows_map))
260260
}
261261

262+
pub fn puzzle_2(input: &str) -> Result<u32, PuzzleErr> {
263+
let (workflows, parts) = parse_input(input)?;
264+
let workflows_map = workflows
265+
.iter()
266+
.map(|w| (w.name.as_str(), w.clone()))
267+
.collect::<HashMap<&str, Workflow>>();
268+
Ok(organize_parts(&parts, &workflows_map))
269+
}
270+
262271
pub fn main(data_dir: &str) {
263272
println!("Day 19: Aplenty");
264273
let data = load(data_dir, 19, None);
@@ -269,13 +278,13 @@ pub fn main(data_dir: &str) {
269278
Ok(x) => println!(" Puzzle 1: {}", x),
270279
Err(e) => panic!("No solution to puzzle 1: {}.", e),
271280
}
272-
// assert_eq!(answer_1, Ok(37113));
281+
assert_eq!(answer_1, Ok(509597));
273282

274283
// Puzzle 2.
275-
// let answer_2 = puzzle_2(&data);
276-
// match answer_2 {
277-
// Ok(x) => println!(" Puzzle 2: {}", x),
278-
// Err(e) => panic!("No solution to puzzle 2: {}", e),
279-
// }
284+
let answer_2 = puzzle_2(&data);
285+
match answer_2 {
286+
Ok(x) => println!(" Puzzle 2: {}", x),
287+
Err(e) => panic!("No solution to puzzle 2: {}", e),
288+
}
280289
// assert_eq!(answer_2, Ok(30449))
281290
}

tests/test_day19.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use aoc_2023::solutions::day19::puzzle_1;
1+
use aoc_2023::solutions::day19::{puzzle_1, puzzle_2};
22

33
const EXAMPLE_INPUT_1: &str = "
44
px{a<2006:qkq,m>2090:A,rfg}
@@ -25,3 +25,9 @@ fn puzzle_1_example_1() {
2525
let _ = env_logger::try_init();
2626
assert_eq!(puzzle_1(self::EXAMPLE_INPUT_1), Ok(19114));
2727
}
28+
29+
#[test]
30+
fn puzzle_2_example_1() {
31+
let _ = env_logger::try_init();
32+
assert_eq!(puzzle_1(self::EXAMPLE_INPUT_1), Ok(167409079868000));
33+
}

0 commit comments

Comments
 (0)