From 6316c6b06eb742e64c1473ecb4a2bff8f9cd6481 Mon Sep 17 00:00:00 2001 From: nils <48135649+Nilstrieb@users.noreply.github.com> Date: Mon, 21 Nov 2022 09:30:28 +0100 Subject: [PATCH] perf --- perf.data | Bin 61104 -> 0 bytes perf.data.old | Bin 62736 -> 0 bytes src/connect4/board.rs | 39 +++++++++++++++++++++++++++++++++++++++ src/connect4/mod.rs | 1 + src/lib.rs | 3 +++ src/main.rs | 8 ++++---- 6 files changed, 47 insertions(+), 4 deletions(-) delete mode 100644 perf.data delete mode 100644 perf.data.old create mode 100644 src/connect4/board.rs create mode 100644 src/connect4/mod.rs diff --git a/perf.data b/perf.data deleted file mode 100644 index 16b20602a2d90fbb6d50bbb80052ef2fd77d2888..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61104 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 e&BD-Q$>6-jXDeruyI;gOA!F0fVRv4 diff --git a/src/connect4/board.rs b/src/connect4/board.rs new file mode 100644 index 0000000..d44c396 --- /dev/null +++ b/src/connect4/board.rs @@ -0,0 +1,39 @@ +use std::ops::ControlFlow; + +use crate::Player; + +type Position = Option; + +const BOARD_WIDTH: usize = 7; +const BOARD_HEIGHT: usize = 4; +const BOARD_POSITIONS: usize = BOARD_WIDTH * BOARD_HEIGHT; + +struct Winner(Option); + +impl std::ops::Try for Winner { + // Always None + type Output = Winner; + + type Residual = Winner; + + fn from_output(_: Self::Output) -> Self { + Self(None) + } + + fn branch(self) -> ControlFlow { + match self { + Self(Some(_)) => ControlFlow::Break(self), + Self(None) => ControlFlow::Continue(self), + } + } +} + +struct Board { + positions: [Position; BOARD_POSITIONS], +} + +impl Board { + fn winner() -> Winner { + todo!() + } +} diff --git a/src/connect4/mod.rs b/src/connect4/mod.rs new file mode 100644 index 0000000..1a9bdc2 --- /dev/null +++ b/src/connect4/mod.rs @@ -0,0 +1 @@ +mod board; \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index ec310c7..8555553 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,7 @@ +#![feature(never_type, try_trait_v2)] + mod board; +mod connect4; mod game; mod perfect; diff --git a/src/main.rs b/src/main.rs index 142795b..a04ff3c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,7 +9,7 @@ fn main() { let start = SystemTime::now(); - for _ in 0..1000 { + for _ in 0..1 { let result = play_round::(false); let idx = Player::as_u8(result); results[idx as usize] += 1; @@ -29,17 +29,17 @@ fn play_round(print: bool) -> Option { let mut board = Board::empty(); let result = board.play(&mut X::default(), &mut O::default()); if print { - //println!("{board}"); + println!("{board}"); } match result { Some(winner) => { if print { - //println!("player {winner} won!"); + println!("player {winner} won!"); } } None => { if print { - //println!("a draw...") + println!("a draw...") } } }