From 419d3d7dccddf615f92f32333b669278ee971b75 Mon Sep 17 00:00:00 2001 From: shimun Date: Sat, 16 Nov 2019 18:18:19 +0100 Subject: [PATCH] pick whoever makes the first move at random --- src/main.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index 16258c7..a35fbe5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,6 +5,7 @@ use std::io::Write; use std::iter; use std::ops::{Index, IndexMut}; use std::str::FromStr; +use std::time::SystemTime; #[derive(Copy, Clone, Debug, PartialEq)] enum State { @@ -169,6 +170,17 @@ fn main() { let dim = board.dimension(); (board, criteria.unwrap_or(dim)) }; + let players_rev = State::players().iter().rev().cloned().collect::>(); + + let players: &[State] = if SystemTime::now() + .duration_since(SystemTime::UNIX_EPOCH) + .map(|d| d.as_millis() % 2 == 0) + .unwrap_or(false) + { + State::players() + } else { + &players_rev[..] + }; let stdin = std::io::stdin(); println!("{}", &board); let winner = loop { @@ -176,7 +188,7 @@ fn main() { break winner; } let mut input = String::new(); - for s in State::players() { + for s in players { loop { let (x, y) = loop { print!("{}, your move: (x y) ", s);