>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