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:
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.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
Cosa posso fare? Mi date qualche idea di codice per ottenere l'effetto desiderato?

Rispondi quotando