diff options
Diffstat (limited to 'CLI/rust/src/game_of_life/simulation/universe.rs')
| -rw-r--r-- | CLI/rust/src/game_of_life/simulation/universe.rs | 60 |
1 files changed, 30 insertions, 30 deletions
diff --git a/CLI/rust/src/game_of_life/simulation/universe.rs b/CLI/rust/src/game_of_life/simulation/universe.rs index 8c1965d..e91e1bd 100644 --- a/CLI/rust/src/game_of_life/simulation/universe.rs +++ b/CLI/rust/src/game_of_life/simulation/universe.rs @@ -7,15 +7,15 @@ use std::ops::Index; #[derive(Debug, Clone, PartialEq)] pub(crate) struct Universe { pub opts: Opts, - pub current: Vec<Plane>, - pub future: Vec<Plane>, + pub current: Plane<Plane<bool>>, + pub future: Plane<Plane<bool>>, } impl Index<isize> for Universe { - type Output = Plane; - fn index(&self, idx: isize) -> &Plane { - let len = self.current.len() as isize; - &self.current[circular_index(idx, len)] + type Output = Plane<bool>; + fn index(&self, idx: isize) -> &Plane<bool> { + let len = self.current.0.len() as isize; + &self.current[circular_index(idx, len) as isize] } } @@ -36,12 +36,12 @@ mod index { }; let u = Universe { opts, - current: vec![ + current: Plane(vec![ Plane(vec![false; 5]), Plane(vec![false, false, true, false, false]), Plane(vec![false; 5]), - ], - future: vec![Plane(vec![])], + ]), + future: Plane(vec![Plane(vec![])]), }; assert_eq!(u[-3][0], false); @@ -140,14 +140,14 @@ mod neighbors { fn center() { let u = Universe { opts: opts(), - future: vec![Plane(vec![])], - current: vec![ + future: Plane(vec![Plane(vec![])]), + current: Plane(vec![ Plane(vec![false, false, false, false, false]), Plane(vec![false, true, true, true, false]), Plane(vec![false, true, true, true, false]), Plane(vec![false, true, true, true, false]), Plane(vec![false, false, false, false, false]), - ], + ]), }; assert_eq!(u.neighbors(2, 2), vec![true; 8]); } @@ -156,14 +156,14 @@ mod neighbors { fn top_edge() { let u = Universe { opts: opts(), - future: vec![Plane(vec![])], - current: vec![ + future: Plane(vec![Plane(vec![])]), + current: Plane(vec![ Plane(vec![false, true, true, true, false]), Plane(vec![false, true, true, true, false]), Plane(vec![false, false, false, false, false]), Plane(vec![false, false, false, false, false]), Plane(vec![false, true, true, true, false]), - ], + ]), }; assert_eq!(u.neighbors(0, 2), vec![true; 8]); } @@ -172,14 +172,14 @@ mod neighbors { fn bottom_edge() { let u = Universe { opts: opts(), - future: vec![Plane(vec![])], - current: vec![ + future: Plane(vec![Plane(vec![])]), + current: Plane(vec![ Plane(vec![false, true, true, true, false]), Plane(vec![false, false, false, false, false]), Plane(vec![false, false, false, false, false]), Plane(vec![false, true, true, true, false]), Plane(vec![false, true, true, true, false]), - ], + ]), }; assert_eq!(u.neighbors(4, 2), vec![true; 8]); } @@ -188,14 +188,14 @@ mod neighbors { fn left_edge() { let u = Universe { opts: opts(), - future: vec![Plane(vec![])], - current: vec![ + future: Plane(vec![Plane(vec![])]), + current: Plane(vec![ Plane(vec![false, false, false, false, false]), Plane(vec![true, true, false, false, true]), Plane(vec![true, true, false, false, true]), Plane(vec![true, true, false, false, true]), Plane(vec![false, false, false, false, false]), - ], + ]), }; assert_eq!(u.neighbors(2, 0), vec![true; 8]); } @@ -204,14 +204,14 @@ mod neighbors { fn right_edge() { let u = Universe { opts: opts(), - future: vec![Plane(vec![])], - current: vec![ + future: Plane(vec![Plane(vec![])]), + current: Plane(vec![ Plane(vec![false, false, false, false, false]), Plane(vec![true, false, false, true, true]), Plane(vec![true, false, false, true, true]), Plane(vec![true, false, false, true, true]), Plane(vec![false, false, false, false, false]), - ], + ]), }; assert_eq!(u.neighbors(2, 4), vec![true; 8]); } @@ -220,14 +220,14 @@ mod neighbors { fn bottom_corner_edge() { let u = Universe { opts: opts(), - future: vec![Plane(vec![])], - current: vec![ + future: Plane(vec![Plane(vec![])]), + current: Plane(vec![ Plane(vec![true, false, false, true, true]), Plane(vec![false, false, false, false, false]), Plane(vec![false, false, false, false, false]), Plane(vec![true, false, false, true, true]), Plane(vec![true, false, false, true, true]), - ], + ]), }; assert_eq!(u.neighbors(4, 4), vec![true; 8]); } @@ -236,14 +236,14 @@ mod neighbors { fn top_corner_edge() { let u = Universe { opts: opts(), - future: vec![Plane(vec![])], - current: vec![ + future: Plane(vec![Plane(vec![])]), + current: Plane(vec![ Plane(vec![true, true, false, false, true]), Plane(vec![true, true, false, false, true]), Plane(vec![false, false, false, false, false]), Plane(vec![false, false, false, false, false]), Plane(vec![true, true, false, false, true]), - ], + ]), }; assert_eq!(u.neighbors(0, 0), vec![true; 8]); } |
