day19: rayon - ez mode parallelization, speed * 6
Some checks failed
test / AoC 2024 (push) Has been cancelled

This commit is contained in:
Keenan Tims 2024-12-18 23:07:13 -08:00
parent 6b6dededc2
commit 2f5ed559df
Signed by: ktims
GPG Key ID: 11230674D69038D4

View File

@ -1,5 +1,6 @@
use aoc_runner_derive::aoc;
use itertools::Itertools;
use rayon::iter::{IntoParallelIterator, ParallelIterator};
use rustc_hash::FxHashMap;
use std::fmt::{Display, Write};
@ -39,7 +40,7 @@ impl Display for Stripe {
}
}
#[derive(Debug)]
#[derive(Debug, Clone)]
struct Design {
stripes: Vec<Stripe>,
}
@ -118,14 +119,15 @@ impl Onsen {
}
fn count_possible(&self) -> i64 {
self.designs
.iter()
.clone()
.into_par_iter()
.map(|d| self.possible(&d.stripes))
.filter(|p| *p)
.count() as i64
}
fn count_ways(&self) -> i64 {
self.designs
.iter()
self.designs.clone()
.into_par_iter()
.map(|d| self.ways(&d.stripes, FxHashMap::default()).1)
.sum::<i64>()
}