Novità

Script per sistemi cruciverba

L

LuigiB

Guest
Keeper mi aveva chiesto di fare una funzione nell'area sistemi .. ho preferrito fare uno script che è piu sbrigativo


Codice:
Option Explicit
Dim aNumUsati
Dim aColonne

Sub Main
	
	
	Dim nLato
	Dim r,c,k
	Dim n
	Dim s
	Dim nTentativi
	Dim bTrovato
	Dim nScelti
	Const nMinLato = 2
	Const nMaxLato = 12
	Const nTentativiMax = 1000

	nLato = Int(InputBox("Inserire la quantita di numeri per il lato del cruciverba","Lato Cruciverba",6))
	If nLato < nMinLato Or nLato > nMaxLato Then
		MsgBox "Il lato dve essere compreso tra " & nMinLato & " e " & nMaxLato
		Exit Sub
	End If
	
	ReDim aNumScelti(0)
	nScelti = ScegliNumeri(aNumScelti)
	Call DoEventsEx
	
	If nScelti <= nLato Then
		MsgBox "Selezionare piu numeri" ,vbInformation
		Exit Sub 
	End If
	aNumUsati = ArrayNumeriToBool(aNumScelti)
	
	
	ReDim aDiagonali(nLato,nLato)
	
	Call CalcolaDiagonali(aDiagonali,nLato)
	
	Do While bTrovato = False
		ReDim aNumeri(nLato,nLato)
		For r = 1 To nLato
			For c = 1 To nLato
				n = ScegliNumero(r,c,aNumeri,nLato,aDiagonali)
				If n =0 Then Exit For
				aNumeri(r,c) = n	
			Next 	
			If n =0 Then Exit For

		Next
		 

		If colonneDuplicate(aNumeri,nLato,aDiagonali) = False Then
			bTrovato = True
		Else
			nTentativi = nTentativi + 1
			If nTentativi > nTentativiMax Then Exit Do
		End If
		If ScriptInterrotto Then Exit Do
		Call Messaggio ("Cruciverba Generati " & nTentativi)
		DoEventsEx
	Loop
	
	For r = 1 To nLato
		ReDim aV(nLato)
		For c = 1 To nLato
			aV(c) = Format2(Int(aNumeri(r,c)))
		Next
		If r = 1 Then
			Call InitTabella(aV,,,4)
		Else
			Call AddRigaTabella(aV,,,4)
		End If
	Next

	If nTentativi > nTentativiMax Or colonneDuplicate ( aNumeri ,nLato ,aDiagonali) Then
	
		Call Scrivi("ATTENZIONE CRUCIVERBA NON VALIDO",True,,,vbRed)
	
	End If

	
	
	Call Scrivi("Cruciverba " & nLato & "x" & nLato,True)
	Call Scrivi
	Call Scrivi ("Si vince con le righe , le colonne e le diagonali")
	Call CreaTabella
	
	
	Call Scrivi
	Call Scrivi("Colonne in gioco",True)
	For k = 1 To UBound(aColonne)
		Call Scrivi(FormatSpace(k,5,True) & ") " & aColonne(k))
	Next
	Call Scrivi

	Call Scrivi("Numeri usati",True)
	Call Scrivi(SpezzaStringaNumeri(StringaNumeri(aNumScelti,,True)))

End Sub
Sub CalcolaDiagonali(aDiagonali,nLato)
	
	Dim r,c
	
	For r = 1 To nLato
		c = c + 1
		aDiagonali(r,c) = True
	Next
	c = nLato + 1
	For r = 1 To nLato
		c = c - 1
		If aDiagonali(r,c) Then
			aDiagonali(r,c) = 1
		Else
			aDiagonali(r,c) = True
		End If
	Next
	

	
End Sub
Function ScegliNumero(Riga,Colonna,aNumeri,nLato,aDiagonali)
	Dim n
	Dim nPassaggi
	
	
	
	Do
		n = NumeroCasuale(1,90)
		nPassaggi = nPassaggi + 1
		If nPassaggi > 1000 Then
			n = 0
			Exit Do
		End If
		If ScriptInterrotto Then
			n = 0
			Exit Do
		End If
		Call DoEventsEx

	Loop While NumeroNonValido(n,Riga,Colonna,aNumeri,nLato,aDiagonali)
	
	ScegliNumero = n
	
End Function

Function NumeroNonValido(Numero,Riga,Colonna,aNumeri,nLato,aDiagonali)

	Dim k,r,c
	
	If Numero = 0 Then
		NumeroNonValido = True
		Exit Function

	End If

	
	If aNumUsati(Numero) = False Then
		NumeroNonValido = True
		Exit Function

	End If
	
	For k = 1 To nLato
		If aNumeri(Riga,k) = Numero Then
			NumeroNonValido = True
			Exit Function
		End If
	Next
	For k = 1 To nLato
		If aNumeri(k,Colonna) = Numero Then
			NumeroNonValido = True
			Exit Function
		End If
	Next
	
	If aDiagonali(Riga,Colonna) Then
		'If Riga = Colonna Or ((Riga = nLato/2)And (Colonna = nLato/2)) Then
		If Riga = Colonna Then
		
			c = Colonna + 1
			For r = Riga To 1 Step - 1
				c = c - 1
				If aNumeri(r,c) = Numero Then
					NumeroNonValido = True
					Exit Function
				End If
				
	
			Next
			c = Colonna - 1
			For r = Riga + 1 To nLato
				c = c + 1
				If aNumeri(r,c) = Numero Then
					NumeroNonValido = True
					Exit Function
				End If
				
	
			Next
		End If
		If Riga <> Colonna Or aDiagonali(Riga,Colonna) = 1 Then
			c = Colonna - 1
			For r = Riga To 1 Step - 1
				c = c + 1
				If aNumeri(r,c) = Numero Then
					NumeroNonValido = True
					Exit Function
				End If
				
	
			Next
			c = Colonna + 1
			For r = Riga + 1 To nLato
				c = c - 1
				If aNumeri(r,c) = Numero Then
					NumeroNonValido = True
					Exit Function
				End If
				
	
			Next

		End If
	End If

End Function
Function colonneDuplicate(aNumeri,nLato,aDiagonali)

	Dim nColonneTot
	Dim r,c,i
	Dim k,kk
	
	nColonneTot = nLato * 2 + 2
	
	ReDim aColonne(nColonneTot)
	
	For r = 1 To nLato
		ReDim aN(nLato)
		For c = 1 To nLato
			aN(c) = aNumeri(r,c)
		Next
		i = i + 1
		Call OrdinaMatrice(aN ,1,1)
		aColonne(i) = StringaNumeri(aN,,True)
	Next
	For c = 1 To nLato
		ReDim aN(nLato)
		For r = 1 To nLato
			aN(r) = aNumeri(r,c)
		Next
		i = i + 1
		Call OrdinaMatrice(aN ,1,1)

		aColonne(i) = StringaNumeri(aN,,True)

	Next
	
	ReDim aN(nLato)
	c = 0
	For r = 1 To nLato
		c = c + 1
		aN(r) = aNumeri(r,c)
	Next
	i = i + 1
	Call OrdinaMatrice(aN ,1,1)

	aColonne(i) = StringaNumeri(aN,,True)


	ReDim aN(nLato)
	c = nLato + 1
	For r = 1 To nLato
		c = c - 1
		aN(r) = aNumeri(r,c)
	Next
	i = i + 1
	Call OrdinaMatrice(aN ,1,1)

	aColonne(i) = StringaNumeri(aN,,True)

	
	
	For k = 1 To nColonneTot - 1
		For kk = k + 1 To nColonneTot
			If aColonne(k) = aColonne(kk) Then
				colonneDuplicate = True
				Exit Function
			End If
		Next
		
	Next

	For k = 1 To nColonneTot
		If Len(aColonne(k)) < nLato *2 +(nLato - 1) Then
			colonneDuplicate = True
			Exit Function

		End If
	Next
	
End Function

Function SpezzaStringaNumeri(sStringa)
	Dim k
	Dim s,i
	ReDim aV(0)
	
	Call SplitByChar(sStringa,".",aV)
	
	s = ""
	For k = 0 To UBound(aV)
		i = i + 1
		s = s & aV(k) & "."
		If i Mod 20 = 0 Then
			s = s & vbCrLf
		End If
	Next
	SpezzaStringaNumeri = Left(s,Len(s) - 1)

End Function
 

keeper

Advanced Member >PLATINUM PLUS<
grazie luigib la prossima volta ti chiedero di isnerire uan sezione per il caffè. scherzo sei sempre disponibile utilizzalo anche te per il wfl
 
L

LuigiB

Guest
Ciao , ho migliorato ulteriormente lo script

Codice:
Option Explicit
Dim aNumUsati
Dim aColonne
Dim aNumScelti
Sub Main
	Dim nLato
	Dim r,c,k
	Dim n
	Dim s
	Dim nTentativi
	Dim bTrovato
	Dim nScelti
	Dim bUnaPresenzaSola
	Const nMinLato = 2
	Const nMaxLato = 12
	Const nTentativiMax = 1000
	bUnaPresenzaSola = False
	nLato = Int(InputBox("Inserire la quantita di numeri per il lato del cruciverba","Lato Cruciverba",6))
	If nLato < nMinLato Or nLato > nMaxLato Then
		MsgBox "Il lato dve essere compreso tra " & nMinLato & " e " & nMaxLato
		Exit Sub
	End If
	ReDim aNumScelti(0)
	nScelti = ScegliNumeri(aNumScelti)
	If nScelti >= nLato * nLato Then
		bUnaPresenzaSola = True
	End If
	Call DoEventsEx
	If nScelti <= nLato Then
		MsgBox "Selezionare piu numeri",vbInformation
		Exit Sub
	End If
	aNumUsati = ArrayNumeriToBool(aNumScelti)
	ReDim aDiagonali(nLato,nLato)
	Call CalcolaDiagonali(aDiagonali,nLato)
	Do While bTrovato = False
		ReDim aNumeri(nLato,nLato)
		For r = 1 To nLato
			For c = 1 To nLato
				n = ScegliNumero(r,c,aNumeri,nLato,aDiagonali,bUnaPresenzaSola)
				If n = 0 Then Exit For
				aNumeri(r,c) = n
			Next
			If n = 0 Then Exit For
		Next
		If colonneDuplicate(aNumeri,nLato,aDiagonali) = False Then
			bTrovato = True
		Else
			nTentativi = nTentativi + 1
			If nTentativi > nTentativiMax Then Exit Do
		End If
		If ScriptInterrotto Then Exit Do
		Call Messaggio("Cruciverba Generati " & nTentativi)
		DoEventsEx
	Loop
	For r = 1 To nLato
		ReDim aV(nLato)
		For c = 1 To nLato
			aV(c) = Format2(Int(aNumeri(r,c)))
		Next
		If r = 1 Then
			Call InitTabella(aV,,,6)
		Else
			Call AddRigaTabella(aV,,,6)
		End If
	Next
	If nTentativi > nTentativiMax Or colonneDuplicate(aNumeri,nLato,aDiagonali) Then
		Call Scrivi("ATTENZIONE CRUCIVERBA NON VALIDO",True,,,vbRed)
	End If
	Call Scrivi("Cruciverba " & nLato & "x" & nLato,True)
	Call Scrivi
	Call Scrivi("Si vince con le righe , le colonne e le diagonali")
	Call CreaTabella
	Call Scrivi
	Call Scrivi("Colonne in gioco",True)
	For k = 1 To UBound(aColonne)
		Call Scrivi(FormatSpace(k,5,True) & ") " & aColonne(k))
	Next
	Call Scrivi
	Call Scrivi("Numeri usati",True)
	Call Scrivi(SpezzaStringaNumeri(GetNumRealmenteUsati(aNumeri,nLato)),,True)
	Call Scrivi
	Call ScriviTabellaFreq(aNumeri,nLato)
End Sub
Sub CalcolaDiagonali(aDiagonali,nLato)
	Dim r,c
	For r = 1 To nLato
		c = c + 1
		aDiagonali(r,c) = True
	Next
	c = nLato + 1
	For r = 1 To nLato
		c = c - 1
		If aDiagonali(r,c) Then
			aDiagonali(r,c) = 1
		Else
			aDiagonali(r,c) = True
		End If
	Next
End Sub
Function ScegliNumero(Riga,Colonna,aNumeri,nLato,aDiagonali,bUnaVoltaSola)
	Dim n
	Dim nPassaggi
	Do
		n = aNumScelti(NumeroCasuale(1,UBound(aNumScelti)))
		nPassaggi = nPassaggi + 1
		If nPassaggi > 1000 Then
			n = 0
			Exit Do
		End If
		If ScriptInterrotto Then
			n = 0
			Exit Do
		End If
		Call DoEventsEx
	Loop While NumeroNonValido(n,Riga,Colonna,aNumeri,nLato,aDiagonali,bUnaVoltaSola)
	ScegliNumero = n
End Function
Function NumeroNonValido(Numero,Riga,Colonna,aNumeri,nLato,aDiagonali,bUnaVoltaSola)
	Dim k,r,c
	If Numero = 0 Then
		NumeroNonValido = True
		Exit Function
	End If
	If bUnaVoltaSola Then
		For r = 1 To nLato
			For c = 1 To nLato
				If aNumeri(r,c) = Numero Then
					NumeroNonValido = True
					Exit Function
				End If
			Next
		Next
	End If
	If aNumUsati(Numero) = False Then
		NumeroNonValido = True
		Exit Function
	End If
	For k = 1 To nLato
		If aNumeri(Riga,k) = Numero Then
			NumeroNonValido = True
			Exit Function
		End If
	Next
	For k = 1 To nLato
		If aNumeri(k,Colonna) = Numero Then
			NumeroNonValido = True
			Exit Function
		End If
	Next
	If aDiagonali(Riga,Colonna) Then
		'If Riga = Colonna Or ((Riga = nLato/2)And (Colonna = nLato/2)) Then
		If Riga = Colonna Then
			c = Colonna + 1
			For r = Riga To 1 Step - 1
				c = c - 1
				If aNumeri(r,c) = Numero Then
					NumeroNonValido = True
					Exit Function
				End If
			Next
			c = Colonna - 1
			For r = Riga + 1 To nLato
				c = c + 1
				If aNumeri(r,c) = Numero Then
					NumeroNonValido = True
					Exit Function
				End If
			Next
		End If
		If Riga <> Colonna Or aDiagonali(Riga,Colonna) = 1 Then
			c = Colonna - 1
			For r = Riga To 1 Step - 1
				c = c + 1
				If aNumeri(r,c) = Numero Then
					NumeroNonValido = True
					Exit Function
				End If
			Next
			c = Colonna + 1
			For r = Riga + 1 To nLato
				c = c - 1
				If aNumeri(r,c) = Numero Then
					NumeroNonValido = True
					Exit Function
				End If
			Next
		End If
	End If
End Function
Function colonneDuplicate(aNumeri,nLato,aDiagonali)
	Dim nColonneTot
	Dim r,c,i
	Dim k,kk
	nColonneTot = nLato * 2 + 2
	ReDim aColonne(nColonneTot)
	For r = 1 To nLato
		ReDim aN(nLato)
		For c = 1 To nLato
			aN(c) = aNumeri(r,c)
		Next
		i = i + 1
		Call OrdinaMatrice(aN,1,1)
		aColonne(i) = StringaNumeri(aN,,True)
	Next
	For c = 1 To nLato
		ReDim aN(nLato)
		For r = 1 To nLato
			aN(r) = aNumeri(r,c)
		Next
		i = i + 1
		Call OrdinaMatrice(aN,1,1)
		aColonne(i) = StringaNumeri(aN,,True)
	Next
	ReDim aN(nLato)
	c = 0
	For r = 1 To nLato
		c = c + 1
		aN(r) = aNumeri(r,c)
	Next
	i = i + 1
	Call OrdinaMatrice(aN,1,1)
	aColonne(i) = StringaNumeri(aN,,True)
	ReDim aN(nLato)
	c = nLato + 1
	For r = 1 To nLato
		c = c - 1
		aN(r) = aNumeri(r,c)
	Next
	i = i + 1
	Call OrdinaMatrice(aN,1,1)
	aColonne(i) = StringaNumeri(aN,,True)
	For k = 1 To nColonneTot - 1
		For kk = k + 1 To nColonneTot
			If aColonne(k) = aColonne(kk) Then
				colonneDuplicate = True
				Exit Function
			End If
		Next
	Next
	For k = 1 To nColonneTot
		If Len(aColonne(k)) < nLato *2 +(nLato - 1) Then
			colonneDuplicate = True
			Exit Function
		End If
	Next
End Function
Function SpezzaStringaNumeri(sStringa)
	Dim k
	Dim s,i
	ReDim aV(0)
	Call SplitByChar(sStringa,".",aV)
	s = ""
	For k = 0 To UBound(aV)
		i = i + 1
		s = s & aV(k) & "."
		If i Mod 20 = 0 Then
			s = s & vbCrLf
		End If
	Next
	SpezzaStringaNumeri = Left(s,Len(s) - 1)
End Function
Function GetNumRealmenteUsati(aNumeri,nLato)
	Dim r,c,k
	Dim s
	ReDim aB(90)
	For r = 1 To nLato
		For c = 1 To nLato
			aB(aNumeri(r,c)) = True
		Next
	Next
	For k = 1 To 90
		If aB(k) Then
			s = s & Format2(k) & "."
		End If
	Next
	If s <> "" Then
		s = Left(s,Len(s) - 1)
	End If
	GetNumRealmenteUsati = s
End Function
Sub ScriviTabellaFreq(aNumeri,nLato)
	Dim r,c,k
	Dim s
	Dim nNumeriPoss
	nNumeriPoss = nLato * nLato
	ReDim aN(90,2)
	For r = 1 To 90
		aN(r,1) = r
	Next
	For r = 1 To nLato
		For c = 1 To nLato
			aN(aNumeri(r,c),2) = aN(aNumeri(r,c),2) + 1
		Next
	Next
	Call OrdinaMatrice(aN,- 1,2)
	ReDim aT(3)
	aT(1) = "Numero"
	aT(2) = "Presenze"
	aT(3) = " % "
	Call InitTabella(aT)
	For k = 1 To 90
		If aN(k,2) > 0 Then
			ReDim aV(3)
			aV(1) = aN(k,1)
			aV(2) = aN(k,2)
			aV(3) = Round((aN(k,2)*100)/nNumeriPoss,3) & " %"
			Call AddRigaTabella(aV)
		End If
	Next
	Call Scrivi("Presenze numeri in gioco nel cruciverba")
	Call CreaTabella
End Sub
 
Ultima modifica di un moderatore:

pino55

Super Member >PLATINUM<
SCUSAMI LUIGIB FORSE CHIEDO TROPPO,MA è POSSIBILE INSTALLARE ANCHE I NUMERI SPIA PER IL SUPERENALOTTO?CIAO E GRAZIE DI TUTTO
PINO55
:cool:
 

fillotto

Advanced Member >PLATINUM<
Ciao , ho migliorato ulteriormente lo script

Codice:
Option Explicit
Dim aNumUsati
Dim aColonne
Dim aNumScelti
Sub Main
    Dim nLato
    Dim r,c,k
    Dim n
    Dim s
    Dim nTentativi
    Dim bTrovato
    Dim nScelti
    Dim bUnaPresenzaSola
    Const nMinLato = 2
    Const nMaxLato = 12
    Const nTentativiMax = 1000
    bUnaPresenzaSola = False
    nLato = Int(InputBox("Inserire la quantita di numeri per il lato del cruciverba","Lato Cruciverba",6))
    If nLato < nMinLato Or nLato > nMaxLato Then
        MsgBox "Il lato dve essere compreso tra " & nMinLato & " e " & nMaxLato
        Exit Sub
    End If
    ReDim aNumScelti(0)
    nScelti = ScegliNumeri(aNumScelti)
    If nScelti >= nLato * nLato Then
        bUnaPresenzaSola = True
    End If
    Call DoEventsEx
    If nScelti <= nLato Then
        MsgBox "Selezionare piu numeri",vbInformation
        Exit Sub
    End If
    aNumUsati = ArrayNumeriToBool(aNumScelti)
    ReDim aDiagonali(nLato,nLato)
    Call CalcolaDiagonali(aDiagonali,nLato)
    Do While bTrovato = False
        ReDim aNumeri(nLato,nLato)
        For r = 1 To nLato
            For c = 1 To nLato
                n = ScegliNumero(r,c,aNumeri,nLato,aDiagonali,bUnaPresenzaSola)
                If n = 0 Then Exit For
                aNumeri(r,c) = n
            Next
            If n = 0 Then Exit For
        Next
        If colonneDuplicate(aNumeri,nLato,aDiagonali) = False Then
            bTrovato = True
        Else
            nTentativi = nTentativi + 1
            If nTentativi > nTentativiMax Then Exit Do
        End If
        If ScriptInterrotto Then Exit Do
        Call Messaggio("Cruciverba Generati " & nTentativi)
        DoEventsEx
    Loop
    For r = 1 To nLato
        ReDim aV(nLato)
        For c = 1 To nLato
            aV(c) = Format2(Int(aNumeri(r,c)))
        Next
        If r = 1 Then
            Call InitTabella(aV,,,6)
        Else
            Call AddRigaTabella(aV,,,6)
        End If
    Next
    If nTentativi > nTentativiMax Or colonneDuplicate(aNumeri,nLato,aDiagonali) Then
        Call Scrivi("ATTENZIONE CRUCIVERBA NON VALIDO",True,,,vbRed)
    End If
    Call Scrivi("Cruciverba " & nLato & "x" & nLato,True)
    Call Scrivi
    Call Scrivi("Si vince con le righe , le colonne e le diagonali")
    Call CreaTabella
    Call Scrivi
    Call Scrivi("Colonne in gioco",True)
    For k = 1 To UBound(aColonne)
        Call Scrivi(FormatSpace(k,5,True) & ") " & aColonne(k))
    Next
    Call Scrivi
    Call Scrivi("Numeri usati",True)
    Call Scrivi(SpezzaStringaNumeri(GetNumRealmenteUsati(aNumeri,nLato)),,True)
    Call Scrivi
    Call ScriviTabellaFreq(aNumeri,nLato)
End Sub
Sub CalcolaDiagonali(aDiagonali,nLato)
    Dim r,c
    For r = 1 To nLato
        c = c + 1
        aDiagonali(r,c) = True
    Next
    c = nLato + 1
    For r = 1 To nLato
        c = c - 1
        If aDiagonali(r,c) Then
            aDiagonali(r,c) = 1
        Else
            aDiagonali(r,c) = True
        End If
    Next
End Sub
Function ScegliNumero(Riga,Colonna,aNumeri,nLato,aDiagonali,bUnaVoltaSola)
    Dim n
    Dim nPassaggi
    Do
        n = aNumScelti(NumeroCasuale(1,UBound(aNumScelti)))
        nPassaggi = nPassaggi + 1
        If nPassaggi > 1000 Then
            n = 0
            Exit Do
        End If
        If ScriptInterrotto Then
            n = 0
            Exit Do
        End If
        Call DoEventsEx
    Loop While NumeroNonValido(n,Riga,Colonna,aNumeri,nLato,aDiagonali,bUnaVoltaSola)
    ScegliNumero = n
End Function
Function NumeroNonValido(Numero,Riga,Colonna,aNumeri,nLato,aDiagonali,bUnaVoltaSola)
    Dim k,r,c
    If Numero = 0 Then
        NumeroNonValido = True
        Exit Function
    End If
    If bUnaVoltaSola Then
        For r = 1 To nLato
            For c = 1 To nLato
                If aNumeri(r,c) = Numero Then
                    NumeroNonValido = True
                    Exit Function
                End If
            Next
        Next
    End If
    If aNumUsati(Numero) = False Then
        NumeroNonValido = True
        Exit Function
    End If
    For k = 1 To nLato
        If aNumeri(Riga,k) = Numero Then
            NumeroNonValido = True
            Exit Function
        End If
    Next
    For k = 1 To nLato
        If aNumeri(k,Colonna) = Numero Then
            NumeroNonValido = True
            Exit Function
        End If
    Next
    If aDiagonali(Riga,Colonna) Then
        'If Riga = Colonna Or ((Riga = nLato/2)And (Colonna = nLato/2)) Then
        If Riga = Colonna Then
            c = Colonna + 1
            For r = Riga To 1 Step - 1
                c = c - 1
                If aNumeri(r,c) = Numero Then
                    NumeroNonValido = True
                    Exit Function
                End If
            Next
            c = Colonna - 1
            For r = Riga + 1 To nLato
                c = c + 1
                If aNumeri(r,c) = Numero Then
                    NumeroNonValido = True
                    Exit Function
                End If
            Next
        End If
        If Riga <> Colonna Or aDiagonali(Riga,Colonna) = 1 Then
            c = Colonna - 1
            For r = Riga To 1 Step - 1
                c = c + 1
                If aNumeri(r,c) = Numero Then
                    NumeroNonValido = True
                    Exit Function
                End If
            Next
            c = Colonna + 1
            For r = Riga + 1 To nLato
                c = c - 1
                If aNumeri(r,c) = Numero Then
                    NumeroNonValido = True
                    Exit Function
                End If
            Next
        End If
    End If
End Function
Function colonneDuplicate(aNumeri,nLato,aDiagonali)
    Dim nColonneTot
    Dim r,c,i
    Dim k,kk
    nColonneTot = nLato * 2 + 2
    ReDim aColonne(nColonneTot)
    For r = 1 To nLato
        ReDim aN(nLato)
        For c = 1 To nLato
            aN(c) = aNumeri(r,c)
        Next
        i = i + 1
        Call OrdinaMatrice(aN,1,1)
        aColonne(i) = StringaNumeri(aN,,True)
    Next
    For c = 1 To nLato
        ReDim aN(nLato)
        For r = 1 To nLato
            aN(r) = aNumeri(r,c)
        Next
        i = i + 1
        Call OrdinaMatrice(aN,1,1)
        aColonne(i) = StringaNumeri(aN,,True)
    Next
    ReDim aN(nLato)
    c = 0
    For r = 1 To nLato
        c = c + 1
        aN(r) = aNumeri(r,c)
    Next
    i = i + 1
    Call OrdinaMatrice(aN,1,1)
    aColonne(i) = StringaNumeri(aN,,True)
    ReDim aN(nLato)
    c = nLato + 1
    For r = 1 To nLato
        c = c - 1
        aN(r) = aNumeri(r,c)
    Next
    i = i + 1
    Call OrdinaMatrice(aN,1,1)
    aColonne(i) = StringaNumeri(aN,,True)
    For k = 1 To nColonneTot - 1
        For kk = k + 1 To nColonneTot
            If aColonne(k) = aColonne(kk) Then
                colonneDuplicate = True
                Exit Function
            End If
        Next
    Next
    For k = 1 To nColonneTot
        If Len(aColonne(k)) < nLato *2 +(nLato - 1) Then
            colonneDuplicate = True
            Exit Function
        End If
    Next
End Function
Function SpezzaStringaNumeri(sStringa)
    Dim k
    Dim s,i
    ReDim aV(0)
    Call SplitByChar(sStringa,".",aV)
    s = ""
    For k = 0 To UBound(aV)
        i = i + 1
        s = s & aV(k) & "."
        If i Mod 20 = 0 Then
            s = s & vbCrLf
        End If
    Next
    SpezzaStringaNumeri = Left(s,Len(s) - 1)
End Function
Function GetNumRealmenteUsati(aNumeri,nLato)
    Dim r,c,k
    Dim s
    ReDim aB(90)
    For r = 1 To nLato
        For c = 1 To nLato
            aB(aNumeri(r,c)) = True
        Next
    Next
    For k = 1 To 90
        If aB(k) Then
            s = s & Format2(k) & "."
        End If
    Next
    If s <> "" Then
        s = Left(s,Len(s) - 1)
    End If
    GetNumRealmenteUsati = s
End Function
Sub ScriviTabellaFreq(aNumeri,nLato)
    Dim r,c,k
    Dim s
    Dim nNumeriPoss
    nNumeriPoss = nLato * nLato
    ReDim aN(90,2)
    For r = 1 To 90
        aN(r,1) = r
    Next
    For r = 1 To nLato
        For c = 1 To nLato
            aN(aNumeri(r,c),2) = aN(aNumeri(r,c),2) + 1
        Next
    Next
    Call OrdinaMatrice(aN,- 1,2)
    ReDim aT(3)
    aT(1) = "Numero"
    aT(2) = "Presenze"
    aT(3) = " % "
    Call InitTabella(aT)
    For k = 1 To 90
        If aN(k,2) > 0 Then
            ReDim aV(3)
            aV(1) = aN(k,1)
            aV(2) = aN(k,2)
            aV(3) = Round((aN(k,2)*100)/nNumeriPoss,3) & " %"
            Call AddRigaTabella(aV)
        End If
    Next
    Call Scrivi("Presenze numeri in gioco nel cruciverba")
    Call CreaTabella
End Sub

Ciao Luigi ho visto lo script migliorato del cruciverba , io ho messo 3 di lato e 9 numeri (consecutivi 1...2.....9),l'output è stato il seguente:
Cruciverba 3x3

Si vince con le righe , le colonne e le diagonali

08 01 09
07 04 05
06 03 02




Colonne in gioco
1) 01.08.09
2) 04.05.07
3) 02.03.06
4) 06.07.08
5) 01.03.04
6) 02.05.09
7) 02.04.08
8) 04.06.09

Numeri usati
01.02.03.04.05.06.07.08.09

Presenze numeri in gioco nel cruciverba

Numero Presenze %
7 1 11.111 %
6 1 11.111 %
9 1 11.111 %
8 1 11.111 %
5 1 11.111 %
2 1 11.111 %
1 1 11.111 %
4 1 11.111 %
3 1 11.111 %

Mi sarei aspettato il "quadrato magico" dove la somma dei numeri in orizz , vert e diagonale è sempre la stessa (15 in questo caso) ,dico questo perchè a suo tempo ho osservato un certo fenomeno degno di approfondimento nel 10 e lotto .
Allorquando nel 10 e lotto escono 3 numeri consecutivi ipotizziamo l'uscita dello stesso terno in modo "ALLARGATO", mi spiego:
esce 4...5....6 dico che uscirà un terno formato da i num che vanno da 1 a 9 cioè 1.2.3.4.5.6.7.8.9 però il problema è che lo sviluppo integrale dei terni che si formano con 9 num è eccessivo allora tanto vale puntare sui terni del quadrato magico cioè 8 la cosa funziona sempre a patto che il terno uscito sia consecutivo così:


02 09 04
07 05 03
06 01 08

01 08 03
06 04 02
05 90 07

qui sopra la somma è 12 (con il fuori90) il sistema è sempre lo stesso a centro del quadrato magco bisogna mettere il numero medio del terno uscito con i 4 inferiori e 4 superiori!!!
 

fillotto

Advanced Member >PLATINUM<
Qualcuno può testare con uno script al 10 e lotto quanto ipotizzato nel mio precedente post.....Allorquando nel 10 e lotto escono 3 numeri consecutivi ipotizziamo l'uscita dello stesso terno in modo "ALLARGATO" ecc ecc
 

keeper

Advanced Member >PLATINUM PLUS<
ora estr.126 srtiti terno con 83.84.85 somma 72
72.81.86.85
72.88.84.80
72.83.82.87
vero? purtroppo io non sono bravo con gli script ci vorrebbe rubino
 

fillotto

Advanced Member >PLATINUM<
No keeper intendevo da giocare 8 terni aventi la caratteristica di avere la stessa somma nel caso specifico

terno uscito838485
808182838485868788
9 numeri da prendere in considerazione da utilizzare x formare 8 terni aventi la
stessa somma come da quadrato magico sottostante:
252252252252252
252818883
252868482
252858087
fuori 90 di252-180=72
 

fillotto

Advanced Member >PLATINUM<
No keeper intendevo da giocare 8 terni aventi la caratteristica di avere la stessa somma nel caso specifico

terno uscito
83
84
85
80
81
82
83
84
85
86
87
88
9 numeri da prendere in considerazione da utilizzare x formare 8 terni aventi la
stessa somma come da quadrato magico sottostante:
252
252
252
252
252
252
81
88
83
252
86
84
82
252
85
80
87
fuori 90 di
252
-
180
=
72
Questo non toglie niente di più e niente di meno a quanto sviluppabile con gli 8 terni ricavati con lo script di Luigi perchè con tutti e due i metodi si ricavano 8 terni che a uscita di 3 num garantiscono l'ambo anzi nel caso specifico (ma non è detto che sia sempre così) giocando con le disposizioni che propone Luigi nel giro di 8 estrazioni
la soluzione LUIGI che qui riepilogata:
Cruciverba 3x3

Si vince con le righe , le colonne e le diagonali

88 81 87
82 85 84
83 86 80




Colonne in gioco
1) 81.87.88
2) 82.84.85
3) 80.83.86
4) 82.83.88
5) 81.85.86
6) 80.84.87
7) 80.85.88
8) 83.85.87

Numeri usati
80.81.82.83.84.85.86.87.88
sarebbe andata in positivo (due terni oltre una serie di ambi)
 
L

LuigiB

Guest
Ciao ,

I sistemi a cruciverba costituiscono una particolare tecnica di gioco per il SuperEnalotto. Un cruciverba è costituito da una griglia avente dimensioni variabili all'interno della quale vengono disposti dei numeri. Esteticamente i sistemi a cruciverba presentano un aspetto identico agli schemi utilizzati per le parole crociate con la differenza che al posto delle lettere vi saranno dei numeri compresi tra 1 e 90. Il funzionamento del sistema è abbastanza intuitivo: vengono messe in gioco le combinazioni poste sulle righe e sulle colonne (o sulle diagonali) composte da almeno sei numeri. Un sistema a cruciverba affinchè possa essere sviluppato correttamente non deve presentare due numeri uguali sulla stessa riga o sulla stessa colonna.


La definizione sopra riportata (che ho trovato sul web) è quella sulla quale mi sono basato per realizzare lo script.
I quadrati magici non c'entrano nulla e non era mia intenzione realizzare quelli.
Credo sia evidente letta la definizione che il cruciverba viene generato in modo del tutto casuale l'unico accorgimento fatto dallo script è quello di evitare colonne ripetute o colonne non valide.
Un cruciverba 6x6 puo contenere ovviamente massimo 36 numeri, all'atto dello sviluppo del cruciverba
se i numeri scelti dall'utente sono maggiori od uguali alla quantita massima possibile lo script fara in modo di adoperare
tutti i numeri , se i numeri scelti invecesono di meno di quelli posssibili possono capitare 2 cose :
1) il cruciverba non è valido a causa di troppi pochi numeri
2) alcuni dei numeri scelti verranno usati piu volte nelle caselel del cruciverba.
 
L

LuigiB

Guest
invece questo nuovo script sfrutta il precedente ma swerve per vedere cosa succederebeb giocando il cruciverba
ad ogni estrazione.
Lo script lavora sul lotto e i numeri che prende per riempire il cruciverba sono quelli delle estrazioni immediatamente precedenti
a quella di gioco.
Eì solo un test ma magaari puo servirvi come base di uno script che gioca i criciverba p er vedere se rende ....


Codice:
Option Explicit
 

Dim aNumUsati
Dim aColonne
Dim aNumScelti

Sub Main
	Dim nLato,nScelti
	Const nMinLato = 2
	Const nMaxLato = 12
	ReDim aRuote(1)
	ReDim aPoste(2)
	Dim Sorte,Colpi
	Dim idEstr
	Dim RuotaDiRil
	
	RuotaDiRil = BA_
	aPoste(2) = 1
	aRuote(1) = RuotaDiRil
	Sorte = 2
	Colpi = 1
	nLato = 5
	
	
	nLato = Int(InputBox("Inserire la quantita di numeri per il lato del cruciverba","Lato Cruciverba",nLato))
	If nLato < nMinLato Or nLato > nMaxLato Then
		MsgBox "Il lato dve essere compreso tra " & nMinLato & " e " & nMaxLato
		Exit Sub
	End If
	
	
	ReDim aDiagonali(nLato,nLato)
	Call CalcolaDiagonali(aDiagonali,nLato)
	
	For idEstr = EstrazioneIni To EstrazioneFin Step Colpi
		Call Messaggio("Estrazione " & idEstr)
		ReDim aNumScelti(0)
		Call AlimentaNumScelti(aNumScelti,idEstr,RuotaDiRil,nLato)
		
		Call GiocaCruciverba(aNumScelti,nLato,aDiagonali,aRuote,aPoste,Colpi,Sorte,idEstr)
		
		If ScriptInterrotto Then Exit For
		
	Next
	
	Call ScriviResoconto
	
End Sub
Sub AlimentaNumScelti(aNumScelti,idEstr,RuotaDiRil,nLato)

	Dim k,e,n,t
	Dim nNumDaTrov
	
	ReDim aB(90)
	t = 0
	nNumDaTrov = nLato * nLato
		
	For k = idEstr To 1 Step - 1
		For e = 1 To 5
			n = Vert(Estratto(k,RuotaDiRil,e))
			If aB(n) = False Then
				aB(n) = True
				t = t + 1
				If t >= nNumDaTrov Then Exit For
			End If
			
		Next
		If t >= nNumDaTrov Then Exit For
	Next
	
	If t >= nNumDaTrov Then
		ReDim aNumScelti(t)
		t = 0
		For k = 1 To 90
			If aB(k) Then
				t = t + 1
				aNumScelti(t) = k
			End If
		Next
	
	End If
	
End Sub
Sub GiocaCruciverba(aNumScelti,nLato,aDiagonali,aRuote,aPoste,Colpi,Sorte,idEstr)
	
	Dim r,c,k
	Dim n
	Dim s
	Dim nTentativi
	Dim bTrovato
	Dim nScelti
	Dim bUnaPresenzaSola
	
	Const nTentativiMax = 1000
	bUnaPresenzaSola = False
	
	
	nScelti = UBound(aNumScelti)
	If nScelti >= nLato * nLato Then
		bUnaPresenzaSola = True
	End If
	Call DoEventsEx
	
	aNumUsati = ArrayNumeriToBool(aNumScelti)
	
	Do While bTrovato = False
		ReDim aNumeri(nLato,nLato)
		For r = 1 To nLato
			For c = 1 To nLato
				n = ScegliNumero(r,c,aNumeri,nLato,aDiagonali,bUnaPresenzaSola)
				If n = 0 Then Exit For
				aNumeri(r,c) = n
			Next
			If n = 0 Then Exit For
		Next
		If colonneDuplicate(aNumeri,nLato,aDiagonali) = False Then
			bTrovato = True
		Else
			nTentativi = nTentativi + 1
			If nTentativi > nTentativiMax Then Exit Do
		End If
		If ScriptInterrotto Then Exit Do
		Call Messaggio("Cruciverba Generati " & nTentativi)
		DoEventsEx
	Loop
	For r = 1 To nLato
		ReDim aV(nLato)
		For c = 1 To nLato
			aV(c) = Format2(Int(aNumeri(r,c)))
		Next
		If r = 1 Then
			Call InitTabella(aV,,,6)
		Else
			Call AddRigaTabella(aV,,,6)
		End If
	Next
	If nTentativi > nTentativiMax Or colonneDuplicate(aNumeri,nLato,aDiagonali) Then
		Call Scrivi("ATTENZIONE CRUCIVERBA NON VALIDO",True,,,vbRed)
	
	Else
		Call CreaTabella
		
	End If
	
	For k = 1 To UBound(aColonne)
		ReDim aN(0)
		Call SplitByChar("0." & aColonne(k),".",aN)
		Call ImpostaGiocata(k,aN,aRuote,aPoste,Colpi,Sorte)
	Next
	Call Gioca(idEstr)



	
End Sub


Sub CalcolaDiagonali(aDiagonali,nLato)
	Dim r,c
	For r = 1 To nLato
		c = c + 1
		aDiagonali(r,c) = True
	Next
	c = nLato + 1
	For r = 1 To nLato
		c = c - 1
		If aDiagonali(r,c) Then
			aDiagonali(r,c) = 1
		Else
			aDiagonali(r,c) = True
		End If
	Next
End Sub
Function ScegliNumero(Riga,Colonna,aNumeri,nLato,aDiagonali,bUnaVoltaSola)
	Dim n
	Dim nPassaggi
	Do
		n = aNumScelti(NumeroCasuale(1,UBound(aNumScelti)))
		nPassaggi = nPassaggi + 1
		If nPassaggi > 1000 Then
			n = 0
			Exit Do
		End If
		If ScriptInterrotto Then
			n = 0
			Exit Do
		End If
		Call DoEventsEx
	Loop While NumeroNonValido(n,Riga,Colonna,aNumeri,nLato,aDiagonali,bUnaVoltaSola)
	ScegliNumero = n
End Function
Function NumeroNonValido(Numero,Riga,Colonna,aNumeri,nLato,aDiagonali,bUnaVoltaSola)
	Dim k,r,c
	If Numero = 0 Then
		NumeroNonValido = True
		Exit Function
	End If
	If bUnaVoltaSola Then
		For r = 1 To nLato
			For c = 1 To nLato
				If aNumeri(r,c) = Numero Then
					NumeroNonValido = True
					Exit Function
				End If
			Next
		Next
	End If
	If aNumUsati(Numero) = False Then
		NumeroNonValido = True
		Exit Function
	End If
	For k = 1 To nLato
		If aNumeri(Riga,k) = Numero Then
			NumeroNonValido = True
			Exit Function
		End If
	Next
	For k = 1 To nLato
		If aNumeri(k,Colonna) = Numero Then
			NumeroNonValido = True
			Exit Function
		End If
	Next
	If aDiagonali(Riga,Colonna) Then
		'If Riga = Colonna Or ((Riga = nLato/2)And (Colonna = nLato/2)) Then
		If Riga = Colonna Then
			c = Colonna + 1
			For r = Riga To 1 Step - 1
				c = c - 1
				If aNumeri(r,c) = Numero Then
					NumeroNonValido = True
					Exit Function
				End If
			Next
			c = Colonna - 1
			For r = Riga + 1 To nLato
				c = c + 1
				If aNumeri(r,c) = Numero Then
					NumeroNonValido = True
					Exit Function
				End If
			Next
		End If
		If Riga <> Colonna Or aDiagonali(Riga,Colonna) = 1 Then
			c = Colonna - 1
			For r = Riga To 1 Step - 1
				c = c + 1
				If aNumeri(r,c) = Numero Then
					NumeroNonValido = True
					Exit Function
				End If
			Next
			c = Colonna + 1
			For r = Riga + 1 To nLato
				c = c - 1
				If aNumeri(r,c) = Numero Then
					NumeroNonValido = True
					Exit Function
				End If
			Next
		End If
	End If
End Function
Function colonneDuplicate(aNumeri,nLato,aDiagonali)
	Dim nColonneTot
	Dim r,c,i
	Dim k,kk
	nColonneTot = nLato * 2 + 2
	ReDim aColonne(nColonneTot)
	For r = 1 To nLato
		ReDim aN(nLato)
		For c = 1 To nLato
			aN(c) = aNumeri(r,c)
		Next
		i = i + 1
		Call OrdinaMatrice(aN,1,1)
		aColonne(i) = StringaNumeri(aN,,True)
	Next
	For c = 1 To nLato
		ReDim aN(nLato)
		For r = 1 To nLato
			aN(r) = aNumeri(r,c)
		Next
		i = i + 1
		Call OrdinaMatrice(aN,1,1)
		aColonne(i) = StringaNumeri(aN,,True)
	Next
	ReDim aN(nLato)
	c = 0
	For r = 1 To nLato
		c = c + 1
		aN(r) = aNumeri(r,c)
	Next
	i = i + 1
	Call OrdinaMatrice(aN,1,1)
	aColonne(i) = StringaNumeri(aN,,True)
	ReDim aN(nLato)
	c = nLato + 1
	For r = 1 To nLato
		c = c - 1
		aN(r) = aNumeri(r,c)
	Next
	i = i + 1
	Call OrdinaMatrice(aN,1,1)
	aColonne(i) = StringaNumeri(aN,,True)
	For k = 1 To nColonneTot - 1
		For kk = k + 1 To nColonneTot
			If aColonne(k) = aColonne(kk) Then
				colonneDuplicate = True
				Exit Function
			End If
		Next
	Next
	For k = 1 To nColonneTot
		If Len(aColonne(k)) < nLato *2 +(nLato - 1) Then
			colonneDuplicate = True
			Exit Function
		End If
	Next
End Function
Function SpezzaStringaNumeri(sStringa)
	Dim k
	Dim s,i
	ReDim aV(0)
	Call SplitByChar(sStringa,".",aV)
	s = ""
	For k = 0 To UBound(aV)
		i = i + 1
		s = s & aV(k) & "."
		If i Mod 20 = 0 Then
			s = s & vbCrLf
		End If
	Next
	SpezzaStringaNumeri = Left(s,Len(s) - 1)
End Function
Function GetNumRealmenteUsati(aNumeri,nLato)
	Dim r,c,k
	Dim s
	ReDim aB(90)
	For r = 1 To nLato
		For c = 1 To nLato
			aB(aNumeri(r,c)) = True
		Next
	Next
	For k = 1 To 90
		If aB(k) Then
			s = s & Format2(k) & "."
		End If
	Next
	If s <> "" Then
		s = Left(s,Len(s) - 1)
	End If
	GetNumRealmenteUsati = s
End Function
Sub ScriviTabellaFreq(aNumeri,nLato)
	Dim r,c,k
	Dim s
	Dim nNumeriPoss
	nNumeriPoss = nLato * nLato
	ReDim aN(90,2)
	For r = 1 To 90
		aN(r,1) = r
	Next
	For r = 1 To nLato
		For c = 1 To nLato
			aN(aNumeri(r,c),2) = aN(aNumeri(r,c),2) + 1
		Next
	Next
	Call OrdinaMatrice(aN,- 1,2)
	ReDim aT(3)
	aT(1) = "Numero"
	aT(2) = "Presenze"
	aT(3) = " % "
	Call InitTabella(aT)
	For k = 1 To 90
		If aN(k,2) > 0 Then
			ReDim aV(3)
			aV(1) = aN(k,1)
			aV(2) = aN(k,2)
			aV(3) = Round((aN(k,2)*100)/nNumeriPoss,3) & " %"
			Call AddRigaTabella(aV)
		End If
	Next
	Call Scrivi("Presenze numeri in gioco nel cruciverba")
	Call CreaTabella
End Sub
Sub SalvaFileColonne
	
	Dim sFile
	Dim k
	
	sFile = GetDirectoryTemp & "Cruciverba.csv"
	If EliminaFile(sFile) Then
		For k = 1 To UBound(aColonne)
			Call ScriviFile(sFile,Replace(aColonne(k),".",";"),,False)
		Next
	
	End If

	Call Scrivi("Le colonne da giocare sono state salvate nel file : " & sFile)
End Sub
 

fillotto

Advanced Member >PLATINUM<
invece questo nuovo script sfrutta il precedente ma swerve per vedere cosa succederebeb giocando il cruciverba
ad ogni estrazione.
Lo script lavora sul lotto e i numeri che prende per riempire il cruciverba sono quelli delle estrazioni immediatamente precedenti
a quella di gioco.

Eì solo un test ma magaari puo servirvi come base di uno script che gioca i criciverba p er vedere se rende ....

Scusa luigi ma con quali criteri vengono inseriti i numeri che riempiono il cruciverba?
Io non riesco a trovare i criteri (dici sono quelli delle estrazioni immediatamente precedenti ma devono essere della stessa ruota? )
Ho fatto questa prova con tre num di lato e mi ha dato a un certo punto dell'output questo resoconto positivo allora ho voluto vedere da dove venivano i nuneri presi...
ma non li ho trovati ??
23 05 56
87 07 10
51 24 86



Estrazione generatrice del pronostico 08470 [150 - 15/12/2011]
G 0001
Numeri in gioco : 05.23.56 su BA per Ambo
N. [05.23.56 ] [BA] [.. .. .. .. ..] C. 1 08471 [151 - 17/12/2011]
Interrotta per raggiunta durata

G 0002
Numeri in gioco : 07.10.87 su BA per Ambo
N. [07.10.87 ] [BA] [.. .. 07 .. ..] C. 1 Estratto 08471 [151 - 17/12/2011]
Interrotta per raggiunta durata

G 0003
Numeri in gioco : 24.51.86 su BA per Ambo
V N. [24.51.86 ] [BA] [51 86 .. .. ..] C. 1 Ambo 08471 [151 - 17/12/2011]
Interrotta per raggiunta durata
Interrotta per esito verificato

G 0004
Numeri in gioco : 23.51.87 su BA per Ambo
N. [23.51.87 ] [BA] [51 .. .. .. ..] C. 1 Estratto 08471 [151 - 17/12/2011]
Interrotta per raggiunta durata

G 0005
Numeri in gioco : 05.07.24 su BA per Ambo
N. [05.07.24 ] [BA] [.. .. 07 .. ..] C. 1 Estratto 08471 [151 - 17/12/2011]
Interrotta per raggiunta durata

G 0006
Numeri in gioco : 10.56.86 su BA per Ambo
N. [10.56.86 ] [BA] [.. 86 .. .. ..] C. 1 Estratto 08471 [151 - 17/12/2011]
Interrotta per raggiunta durata

G 0007
Numeri in gioco : 07.23.86 su BA per Ambo
V N. [07.23.86 ] [BA] [.. 86 07 .. ..] C. 1 Ambo 08471 [151 - 17/12/2011]
Interrotta per raggiunta durata
Interrotta per esito verificato

G 0008
Numeri in gioco : 07.51.56 su BA per Ambo
V N. [07.51.56 ] [BA] [51 .. 07 .. ..] C. 1 Ambo 08471 [151 - 17/12/2011]
Interrotta per raggiunta durata
Interrotta per esito verificato
 
L

LuigiB

Guest
ciao , la funzione che alimenta i numeri è AlimentaNumScelti .. prende i vertibili dei numeri usciti nelle estrazioni immediatamente precedenti all'estrazione di gioco fino ad ottenere tanti numeri
quanti ne servono per riempire le caselle del cruciverba
 

keeper

Advanced Member >PLATINUM PLUS<
scusa luigi a me non va mida errore su questa riga
n
= aNumScelti(NumeroCasuale(1,UBound(aNumScelti)))
 

Ultima estrazione Lotto

  • Estrazione del lotto
    martedì 23 aprile 2024
    Bari
    47
    22
    34
    20
    50
    Cagliari
    33
    14
    86
    02
    62
    Firenze
    61
    22
    44
    19
    26
    Genova
    21
    12
    57
    82
    55
    Milano
    66
    05
    11
    70
    30
    Napoli
    05
    23
    25
    52
    73
    Palermo
    23
    44
    49
    71
    65
    Roma
    82
    37
    59
    34
    71
    Torino
    26
    42
    66
    15
    58
    Venezia
    57
    06
    68
    54
    84
    Nazionale
    21
    79
    49
    03
    01
    Estrazione Simbolotto
    Genova
    24
    02
    19
    03
    27
Alto