void newboard ( int A[9][9], int S[9][9] ) { int P[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, *Q, i, j, k, r, s, t; int B[9][9] = { {1, 0, 0, 0, 0, 8, 0, 0, 9}, {0, 0, 2, 0, 0, 0, 0, 0, 8}, {0, 8, 0, 5, 4, 9, 0, 0, 0}, {0, 4, 0, 2, 0, 0, 9, 0, 0}, {3, 0, 9, 0, 0, 0, 2, 0, 1}, {0, 0, 1, 0, 0, 5, 0, 4, 0}, {0, 0, 0, 9, 1, 2, 0, 3, 0}, {7, 0, 0, 0, 0, 0, 1, 0, 0}, {2, 0, 0, 7, 0, 0, 0, 0, 6} }, C[9][9] = { {1, 3, 4, 6, 2, 8, 5, 7, 9}, {9, 5, 2, 1, 3, 7, 4, 6, 8}, {6, 8, 7, 5, 4, 9, 3, 1, 2}, {5, 4, 6, 2, 7, 1, 9, 8, 3}, {3, 7, 9, 4, 8, 6, 2, 5, 1}, {8, 2, 1, 3, 9, 5, 6, 4, 7}, {4, 6, 8, 9, 1, 2, 7, 3, 5}, {7, 9, 5, 8, 6, 3, 1, 2, 4}, {2, 1, 3, 7, 5, 4, 8, 9, 6} }; srand((unsigned int)time(NULL)); Q = P + 1; for (i=8; i>0; --i) { j = rand() % (i + 1); t = Q[i]; Q[i] = Q[j]; Q[j] = t; } for (k=0; k<9; k+=3) { s = rand() % 3; t = rand() % 3; if (s != t) { for (j=0; j<9; ++j) { r = B[k+s][j]; B[k+s][j] = B[k+t][j]; B[k+t][j] = r; r = C[k+s][j]; C[k+s][j] = C[k+t][j]; C[k+t][j] = r; } } } for (k=0; k<9; k+=3) { s = rand() % 3; t = rand() % 3; if (s != t) { for (i=0; i<9; ++i) { r = B[i][k+s]; B[i][k+s] = B[i][k+t]; B[i][k+t] = r; r = C[i][k+s]; C[i][k+s] = C[i][k+t]; C[i][k+t] = r; } } } if (rand()%2) { for (i=0; i<9; ++i) { for (j=0; j<9; ++j) { A[i][j] = P[B[i][j]]; S[i][j] = P[C[i][j]]; } } } else { for (i=0; i<9; ++i) { for (j=0; j<9; ++j) { A[i][j] = P[B[j][i]]; S[i][j] = P[C[j][i]]; } } } }