Sto facendo un altro esperimento (questo lo posso fare al lavoro, l'altro no).
Ho creato uno schema 5x5 (la matrice è 7x7 perché mi serviranno, più avanti, anche le altre righe e colonne). Ho fatto in modo di inserire numeri casuali tra 1 e 4 in modo che due caselle adiacenti non abbiano numeri uguali (e questo funziona).
Dove sta l'inghippo? Beh, io ho bisogno che lo schema contenga esattamente 24 numeri (la casella centrale è vuota) e che ogni numero sia ripetuto esattamente 6 volte.
Ho provato a usare un while (x = 1 and One = 0) per ripetere la generazione, ma ho l'impressione che il programma vada in loop perché non genera niente.
Questo il codice:
codice:
Dim Schema(7, 7) As Integer
Dim i As Integer
Dim j As Integer
Dim x As Integer
Dim MaxNum As Integer = 6
Dim One As Integer = MaxNum
Dim Two As Integer = MaxNum
Dim Three As Integer = MaxNum
Dim Four As Integer = MaxNum
Randomize()
For i = 1 To 5
For j = 1 To 5
While Schema(i - 1, j) = x Or Schema(i + 1, j) = x Or Schema(i, j - 1) = x Or
Schema(i, j + 1) = x
x = CInt(Int((4 * Rnd()) + 1))
End While
Schema(i, j) = x
If x = 1 Then
One = One - 1
ElseIf x = 2 Then
Two = Two - 1
ElseIf x = 3 Then
Three = Three - 1
ElseIf x = 4 Then
Four = Four - 1
End If
Next
Next
Questo mi sottrae anche 1 ogni volta che un numero viene utilizzato. Però non capisco come fare in modo che, una volta raggiunto lo 0, non usi più tale numero.
Cosa posso fare? Mi date qualche idea di codice per ottenere l'effetto desiderato?