>>>DIMENSION aStrings[9], aResult[9], aRandomize[6,3] >>>CLEAR >>> >>>FOR nT = 0 TO 17 >>> aRandomize[nT+1] = VAL(SUBSTR(GETWORDNUM("123 132 231 213 312 321", INT(nT/3)+1),(nT%3)+1,1)) >>>ENDFOR >>> >>>* Generate a random number to use as a base >>>cString = "123456789" >>>FOR nT = 1 TO 9 >>> nPos = INT(RAND() * 9)+1 >>> cString = IIF(nPos>1, SUBSTR(cString, nPos,1)+LEFT(cString, nPos-1)+SUBSTR(cString,nPos+1), cString) >>> cString = SUBSTR(cString,2)+LEFT(cString,1) >>>ENDFOR >>> >>>* Make a basic Soduko map >>>nT = 1 >>>FOR nY = 1 TO 3 >>> FOR nX = 1 TO 3 >>> aStrings[nT] = cString >>> cString = SUBSTR(cString,4)+LEFT(cString,3) >>> nT = nT + 1 >>> ENDFOR >>> cString = SUBSTR(cString,2)+LEFT(cString,1) >>>ENDFOR >>> >>>* Move rows arround, to randomize >>>nT = 1 >>>nRand2 = INT(RAND()*6)+1 >>>FOR nY = 1 TO 3 >>> nRand = INT(RAND()*6)+1 >>> FOR nY2 = 1 TO 3 >>> aResult[nT] = aStrings[(aRandomize[nRand2, nY]-1)*3+aRandomize[nRand, nY2]] >>> nT = nT + 1 >>> ENDFOR >>>ENDFOR >>> >>>* Move columns arround, to randomize >>>nT = 1 >>>nRand2 = INT(RAND()*6)+1 >>>FOR nX = 1 TO 3 >>> nRand = INT(RAND()*6)+1 >>> FOR nX2 = 1 TO 3 >>> FOR nX3 = 1 TO 9 >>> aStrings[nX3] = STUFF(aStrings[nx3], (aRandomize[nRand2, nX]-1)*3+aRandomize[nRand, nX2], 1, ; >>> SUBSTR(aResult[nX3], nT,1)) >>> ENDFOR >>> nT = nT + 1 >>> ENDFOR >>>ENDFOR >>> >>>* Display puzzle >>> >>>FOR nT = 1 TO 9 >>> ? " "+aStrings[nT] >>>ENDFOR