diff options
Diffstat (limited to 'src/alg.c')
| -rw-r--r-- | src/alg.c | 37 |
1 files changed, 13 insertions, 24 deletions
| @@ -110,36 +110,25 @@ allowed_next_HTM(Move l2, Move l1, Move m) | |||
| 110 | static int | 110 | static int |
| 111 | axis(Move m) | 111 | axis(Move m) |
| 112 | { | 112 | { |
| 113 | Move i; | 113 | if (m == NULLMOVE) |
| 114 | 114 | return 0; | |
| 115 | static bool initialized = false; | ||
| 116 | static int aux[NMOVES]; | ||
| 117 | |||
| 118 | if (!initialized) { | ||
| 119 | for (i = 0; i < NMOVES; i++) { | ||
| 120 | if (i == NULLMOVE) | ||
| 121 | aux[i] = 0; | ||
| 122 | 115 | ||
| 123 | if (i >= U && i <= B3) | 116 | if (m >= U && m <= B3) |
| 124 | aux[i] = (i-1)/6 + 1; | 117 | return (m-1)/6 + 1; |
| 125 | 118 | ||
| 126 | if (i >= Uw && i <= Bw3) | 119 | if (m >= Uw && m <= Bw3) |
| 127 | aux[i] = (i-1)/6 - 2; | 120 | return (m-1)/6 - 2; |
| 128 | 121 | ||
| 129 | if (base_move(i) == E || base_move(i) == y) | 122 | if (base_move(m) == E || base_move(m) == y) |
| 130 | aux[i] = 1; | 123 | return 1; |
| 131 | 124 | ||
| 132 | if (base_move(i) == M || base_move(i) == x) | 125 | if (base_move(m) == M || base_move(m) == x) |
| 133 | aux[i] = 2; | 126 | return 2; |
| 134 | 127 | ||
| 135 | if (base_move(i) == S || base_move(i) == z) | 128 | if (base_move(m) == S || base_move(m) == z) |
| 136 | aux[i] = 3; | 129 | return 3; |
| 137 | } | ||
| 138 | |||
| 139 | initialized = true; | ||
| 140 | } | ||
| 141 | 130 | ||
| 142 | return aux[m]; | 131 | return -1; |
| 143 | } | 132 | } |
| 144 | 133 | ||
| 145 | bool | 134 | bool |
