playToWin = (boards, draws, bingo = false) => {
let winning = ({board: null, row: null});
draws.forEach(
draw => {
if (bingo) return;
boards.forEach(
(board, b) => {
if (bingo) return;
["rows", "columns"].forEach(
(direction) => board[direction].forEach(
(strip, s) => {
if (bingo) return;
strip.delete(draw);
if (bingo = (strip.size === 0)) {
const remaining = sum(boards[b]);
winning = ({
boards,
board: boards[b],
boardNumber: b,
direction,
strip: s,
draw,
remaining,
score: draw * remaining
});
return;
}
}
)
)
}
)
}
)
return winning;
}