diff options
author | Dennis Kobert <dennis@kobert.dev> | 2020-01-12 03:47:14 +0100 |
---|---|---|
committer | Dennis Kobert <dennis@kobert.dev> | 2020-01-12 03:47:14 +0100 |
commit | 1650906f010574e8810c8b0b98334e22fac5894d (patch) | |
tree | fe27a9d727e143353c1fcf0286890d549c443303 /src/solvers/mod.rs | |
parent | 6b6f830f8e6d4c0b0d1328b7b22f810ad039d038 (diff) |
Restructuring
Diffstat (limited to 'src/solvers/mod.rs')
-rw-r--r--[-rwxr-xr-x] | src/solvers/mod.rs | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/solvers/mod.rs b/src/solvers/mod.rs index 1bdc228..189deca 100755..100644 --- a/src/solvers/mod.rs +++ b/src/solvers/mod.rs @@ -1,5 +1,29 @@ //pub mod incremental_block; -pub mod intuitive; -//#[cfg(feature = "gpu")] +pub mod gpu; pub mod gpusolver; -pub mod opencl; +pub mod single; + +use crate::structs::StoneWall; +pub use gpu::*; + +/// calculate h and w +pub fn wall_stats(n: u32) -> (u32, u32) { + let h = (n >> 1) + 1; + (h, (n - 1) * h) +} + +pub trait Solver { + fn new(n: u32) -> Self; + fn n(&self) -> u32; + fn h(&self) -> u32; + fn w(&self) -> u32; +} + +pub trait FirstSolver { + fn solve(self) -> StoneWall; +} + +pub trait IteratorSolver: Solver { + type IntoIter: Iterator<Item = StoneWall>; + fn solve(self) -> Self::IntoIter; +} |