From fdd0f6823795eca91ec06029f576ddf38204f4db Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Mon, 10 Feb 2025 16:00:03 -0500 Subject: [PATCH] propegate_from_dry chains improvements --- src/board.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/board.rs b/src/board.rs index ee96cc4..08eaf0d 100644 --- a/src/board.rs +++ b/src/board.rs @@ -146,14 +146,14 @@ impl Board { let mut chains: Vec> = 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() {