diff options
| author | Simon Tatham <anakin@pobox.com> | 2009-03-02 23:32:43 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2009-03-02 23:32:43 +0000 |
| commit | 66efa90048752afec0de6861ed9b31aef3027efd (patch) | |
| tree | 2811a5c39d7c54741da0d38596c49496401eb01e | |
| parent | 706e27de8d8bd097ac2212578a597b02c9a1b43f (diff) | |
| download | puzzles-66efa90048752afec0de6861ed9b31aef3027efd.zip puzzles-66efa90048752afec0de6861ed9b31aef3027efd.tar.gz puzzles-66efa90048752afec0de6861ed9b31aef3027efd.tar.bz2 puzzles-66efa90048752afec0de6861ed9b31aef3027efd.tar.xz | |
Patch from James H to provide 16-bit-int cleanliness in Killer Solo.
[originally from svn r8489]
| -rw-r--r-- | solo.c | 22 |
1 files changed, 11 insertions, 11 deletions
@@ -146,19 +146,19 @@ enum { #define MAX_2SUMS 5 #define MAX_3SUMS 8 #define MAX_4SUMS 12 -unsigned int sum_bits2[18][MAX_2SUMS]; -unsigned int sum_bits3[25][MAX_3SUMS]; -unsigned int sum_bits4[31][MAX_4SUMS]; +unsigned long sum_bits2[18][MAX_2SUMS]; +unsigned long sum_bits3[25][MAX_3SUMS]; +unsigned long sum_bits4[31][MAX_4SUMS]; -static int find_sum_bits(unsigned int *array, int idx, int value_left, +static int find_sum_bits(unsigned long *array, int idx, int value_left, int addends_left, int min_addend, - unsigned int bitmask_so_far) + unsigned long bitmask_so_far) { int i; assert(addends_left >= 2); for (i = min_addend; i < value_left; i++) { - unsigned int new_bitmask = bitmask_so_far | (1 << i); + unsigned long new_bitmask = bitmask_so_far | (1L << i); assert(bitmask_so_far != new_bitmask); if (addends_left == 2) { @@ -167,7 +167,7 @@ static int find_sum_bits(unsigned int *array, int idx, int value_left, break; if (j > 9) continue; - array[idx++] = new_bitmask | (1 << j); + array[idx++] = new_bitmask | (1L << j); } else idx = find_sum_bits(array, idx, value_left - i, addends_left - 1, i + 1, @@ -1448,7 +1448,7 @@ static int solver_killer_sums(struct solver_usage *usage, int b, int cr = usage->cr; int i, ret, max_sums; int nsquares = cages->nr_squares[b]; - unsigned int *sumbits, possible_addends; + unsigned long *sumbits, possible_addends; if (clue == 0) { assert(nsquares == 0); @@ -1514,18 +1514,18 @@ static int solver_killer_sums(struct solver_usage *usage, int b, possible_addends = 0; for (i = 0; i < max_sums; i++) { int j; - unsigned int bits = sumbits[i]; + unsigned long bits = sumbits[i]; if (bits == 0) break; for (j = 0; j < nsquares; j++) { int n; - unsigned int square_bits = bits; + unsigned long square_bits = bits; int x = cages->blocks[b][j]; for (n = 1; n <= cr; n++) if (!cube2(x, n)) - square_bits &= ~(1 << n); + square_bits &= ~(1L << n); if (square_bits == 0) { break; } |