This commit is contained in:
Simon Gardling 2025-02-10 16:38:17 -05:00
parent fdd0f68237
commit 2825186fbb
Signed by: titaniumtown
GPG Key ID: 9AB28AC10ECE533D
2 changed files with 12 additions and 4 deletions

View File

@ -146,8 +146,16 @@ impl Board {
let mut chains: Vec<Vec<(usize, usize)>> = Vec::with_capacity(8);
chains.extend(i_chain.map(|range| range.map(|i| (i, j)).collect()));
chains.extend(j_chain.map(|range| range.map(|j| (i, j)).collect()));
chains.extend(
i_chain
.map(|range| range.map(move |i| (i, j)))
.map(Iterator::collect),
);
chains.extend(
j_chain
.map(|range| range.map(move |j| (i, j)))
.map(Iterator::collect),
);
// handle diagonals
chains.extend(diag(i, j, 0, 0, BOARD_SIZE - 1, BOARD_SIZE - 1).map(Iterator::collect));

View File

@ -32,7 +32,7 @@ pub fn diag<T>(
min_j: T,
max_i: T,
max_j: T,
) -> [impl Iterator<Item = (T, T)>; 4]
) -> [impl Iterator<Item = (T, T)> + Clone; 4]
where
T: num::Integer + Copy,
RangeInclusive<T>: Iterator<Item = T> + DoubleEndedIterator,
@ -41,7 +41,7 @@ where
let i_chains = split_from(min_i, max_i, i);
let j_chains = split_from(min_j, max_j, j);
[(0, 0), (1, 1), (1, 0), (0, 1)].map(|(a, b)| i_chains[a].clone().zip(j_chains[b].clone()))
[(0, 0), (1, 1), (1, 0), (0, 1)].map(move |(a, b)| i_chains[a].clone().zip(j_chains[b].clone()))
}
#[cfg(test)]