From de258f8a2da4f241949d9c6ed844edd3c4858276 Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Mon, 19 Apr 2021 17:56:04 -0400 Subject: Only use cells for moveColumn So long as the move queuer doesn't use empty tableau stacks correctly, it shouldn't use them at all. This way it's easier to do the correct moves manually. --- bin/freecell.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/bin/freecell.c b/bin/freecell.c index 762b5552..6fce1db7 100644 --- a/bin/freecell.c +++ b/bin/freecell.c @@ -173,10 +173,9 @@ static void moveSingle(uint dst, uint src) { enq(dst, src); } -static uint freeCells(uint cells[static Stacks], uint dst) { +static uint freeCells(uint cells[static 4]) { uint len = 0; - for (uint i = Cell; i < Stacks; ++i) { - if (i == dst) continue; + for (uint i = Cell; i < Tableau; ++i) { if (!stacks[i].len) cells[len++] = i; } return len; @@ -195,8 +194,8 @@ static uint moveDepth(uint src) { static void moveColumn(uint dst, uint src) { uint depth; - uint cells[Stacks]; - uint free = freeCells(cells, dst); + uint cells[4]; + uint free = freeCells(cells); for (depth = moveDepth(src); depth; --depth) { if (free < depth-1) continue; if (valid(dst, stacks[src].cards[stacks[src].len-depth])) break; -- cgit 1.4.1