summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/plugins/sliding_puzzle.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/apps/plugins/sliding_puzzle.c b/apps/plugins/sliding_puzzle.c
index 12c7a9aafa..423ab7fcf1 100644
--- a/apps/plugins/sliding_puzzle.c
+++ b/apps/plugins/sliding_puzzle.c
@@ -180,7 +180,7 @@ static void puzzle_init(void)
180 180
181 /* shuffle spots */ 181 /* shuffle spots */
182 for (i=19; i>=0; i--) { 182 for (i=19; i>=0; i--) {
183 r = (*rb->current_tick % (i+1)); 183 r = (rb->rand() % (i+1));
184 184
185 temp = spots[r]; 185 temp = spots[r];
186 spots[r] = spots[i]; 186 spots[r] = spots[i];
@@ -192,11 +192,16 @@ static void puzzle_init(void)
192 192
193 /* test if the puzzle is solvable */ 193 /* test if the puzzle is solvable */
194 for (i=0; i<20; i++) 194 for (i=0; i<20; i++)
195 tsp[i] = spots[i]; 195 tsp[i] = spots[i];
196 r=0; 196 r=0;
197
198 /* First, check if the problem has even or odd parity,
199 depending on where the empty square is */
197 if (((4-hole%5) + (3-hole/5))%2 == 1) 200 if (((4-hole%5) + (3-hole/5))%2 == 1)
198 ++r; 201 ++r;
199 for (i=0; i<15; i++) { 202
203 /* Now check how many swaps we need to solve it */
204 for (i=0; i<19; i++) {
200 while (tsp[i] != (i+1)) { 205 while (tsp[i] != (i+1)) {
201 temp = tsp[i]; 206 temp = tsp[i];
202 tsp[i] = tsp[temp-1]; 207 tsp[i] = tsp[temp-1];