propegate_from_dry chains improvements

This commit is contained in:
Simon Gardling 2025-02-10 16:00:03 -05:00
parent 13f5b29dac
commit fdd0f68237
Signed by: titaniumtown
GPG Key ID: 9AB28AC10ECE533D

View File

@ -146,14 +146,14 @@ impl Board {
let mut chains: Vec<Vec<(usize, usize)>> = Vec::with_capacity(8);
chains.extend(i_chain.map(|range| range.into_iter().map(|i| (i, j)).collect()));
chains.extend(j_chain.map(|range| range.into_iter().map(|j| (i, j)).collect()));
chains.extend(i_chain.map(|range| range.map(|i| (i, j)).collect()));
chains.extend(j_chain.map(|range| range.map(|j| (i, j)).collect()));
// handle diagonals
chains.extend(diag(i, j, 0, 0, BOARD_SIZE - 1, BOARD_SIZE - 1).map(Iterator::collect));
let mut fill: Vec<(usize, usize)> = Vec::with_capacity(chains.iter().map(Vec::len).sum());
// Longest chain is (BOARD_SIZE - 2) as there needs to be the two pieces containing it
let mut fill: Vec<(usize, usize)> = Vec::with_capacity((BOARD_SIZE - 2) * chains.len());
for chain in chains {
for (chain_length, &(new_i, new_j)) in chain.iter().enumerate() {