Add 'Bitboard::has_more_than_one'
This commit is contained in:
parent
cb3b1ee745
commit
f13d44b8e3
|
@ -68,6 +68,13 @@ impl Bitboard {
|
||||||
self == Self::EMPTY
|
self == Self::EMPTY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Return true if there are more than piece in the [Bitboard]. This is faster than testing
|
||||||
|
/// `board.count() > 1`.
|
||||||
|
#[inline(always)]
|
||||||
|
pub fn has_more_than_one(self) -> bool {
|
||||||
|
(self.0 & (self.0.wrapping_sub(1))) != 0
|
||||||
|
}
|
||||||
|
|
||||||
/// Iterate over the power-set of a given [Bitboard], yielding each possible sub-set of
|
/// Iterate over the power-set of a given [Bitboard], yielding each possible sub-set of
|
||||||
/// [Square] that belong to the [Bitboard]. In other words, generate all set of [Square] that
|
/// [Square] that belong to the [Bitboard]. In other words, generate all set of [Square] that
|
||||||
/// contain all, some, or none of the [Square] that are in the given [Bitboard].
|
/// contain all, some, or none of the [Square] that are in the given [Bitboard].
|
||||||
|
@ -388,6 +395,16 @@ mod test {
|
||||||
assert_eq!(Bitboard::FILES[0] - Square::A1, Bitboard(0xff - 1));
|
assert_eq!(Bitboard::FILES[0] - Square::A1, Bitboard(0xff - 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn more_than_one() {
|
||||||
|
assert!(!Bitboard::EMPTY.has_more_than_one());
|
||||||
|
for square in Square::iter() {
|
||||||
|
assert!(!square.into_bitboard().has_more_than_one())
|
||||||
|
}
|
||||||
|
assert!((Square::A1 | Square::H8).has_more_than_one());
|
||||||
|
assert!(Bitboard::ALL.has_more_than_one());
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn iter_power_set_empty() {
|
fn iter_power_set_empty() {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
|
|
Loading…
Reference in a new issue