day19: rayon - ez mode parallelization, speed * 6
Some checks failed
test / AoC 2024 (push) Has been cancelled
Some checks failed
test / AoC 2024 (push) Has been cancelled
This commit is contained in:
parent
6b6dededc2
commit
2f5ed559df
10
src/day19.rs
10
src/day19.rs
@ -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>()
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user