fast_tak/
reserves.rs

1#[derive(Clone, Copy, Debug, Hash, PartialEq, Eq, PartialOrd, Ord)]
2pub struct Reserves<const N: usize> {
3    pub stones: u8,
4    pub caps: u8,
5}
6
7impl Default for Reserves<3> {
8    fn default() -> Self {
9        Self {
10            stones: 10,
11            caps: 0,
12        }
13    }
14}
15
16impl Default for Reserves<4> {
17    fn default() -> Self {
18        Self {
19            stones: 15,
20            caps: 0,
21        }
22    }
23}
24
25impl Default for Reserves<5> {
26    fn default() -> Self {
27        Self {
28            stones: 21,
29            caps: 1,
30        }
31    }
32}
33
34impl Default for Reserves<6> {
35    fn default() -> Self {
36        Self {
37            stones: 30,
38            caps: 1,
39        }
40    }
41}
42
43impl Default for Reserves<7> {
44    fn default() -> Self {
45        Self {
46            stones: 40,
47            caps: 2,
48        }
49    }
50}
51
52impl Default for Reserves<8> {
53    fn default() -> Self {
54        Self {
55            stones: 50,
56            caps: 2,
57        }
58    }
59}
60
61impl<const N: usize> Reserves<N> {
62    #[must_use]
63    pub const fn depleted(self) -> bool {
64        self.caps == 0 && self.stones == 0
65    }
66}