Ciao Gianluigi,
L'idea di base è che ci sia un array per ogni colonna e riga.
byRow0 As New Byte[] byRow1 As New Byte[] byRow2 As New Byte[] byRow3 As New Byte[] byRow4 As New Byte[] byRow5 As New Byte[] byRow6 As New Byte[] byRow7 As New Byte[] byRow8 As New Byte[]
byCol0 As New Byte[] byCol1 As New Byte[] byCol2 As New Byte[] byCol3 As New Byte[] byCol4 As New Byte[] byCol5 As New Byte[] byCol6 As New Byte[] byCol7 As New Byte[] byCol8 As New Byte[]
Viene creato un insieme casuale di numeri.
byNumbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
byNumbers.Shuffle()
Si cerca di aggiungere il primo numero alla riga e alla colonna in questione, a condizione che non esista già. Poi il successivo fino a quando non si adatta o non fallisce. This creates one of the 9 blocks of 9.
If Not oAllRows[byRow + byNextWorkRow].Exist(byNumbers[byCounter]) And If Not oAllCols[byCol + byNextWorkCol].Exist(byNumbers[byCounter]) Then..
Questa operazione fallirà molte volte e il tentativo verrà interrotto. Il processo ricomincia da capo.
Repeat
byLines.Clear
ClearAll
CreateArray
Inc iTimes
Until bItWorks = True
Ho appena creato 5 nuove soluzioni e i tentativi sono stati 19, 216, 257, 64 e 3 prima che l'intero processo fosse completato con successo. Durante il processo una Stringa[9,9] viene riempita e poi restituita.
The attempts are printed in the Console. '464 arrays of 81 numbers were created before a solution was found' (Prima di trovare una soluzione sono state create 464 matrici di 81 numeri)
Spero che questo aiuti.
Non capisco esattamente cosa state cercando. Forse potrebbe spiegarlo in un altro modo. Non parlo italiano, quindi il suo punto di vista potrebbe essersi perso nella traduzione.