Ciao InRicordo,
purtroppo nemmeno l'avere invocato il grande Nino Manfredi ha sortito l'effetto voluto.
Stavolta per il test ho puntato sulle "ottine" per terno e...
la primissima cosa che mi ha colpito è stato il tempo impiegato: una frazione di secondo per elaborare 77 miliardi e mezzo di ottine mi è parso davvero inconcepibile e infatti...
Questi sono i risultati trovati da "RitardoFormazioniLinux":
Vedi l'allegato 2319651
E questi i risultati trovati da "Ricerca lunghette" di LuigiB dopo avere eleborato poco più di 14 miliardi di combinazioni su 77 e mezzo:
Vedi l'allegato 2319653
[td][/td] [td][/td] [td][/td]
[td width="16.6483%"][/td]
[td width="16.6483%"][/td]
[td][/td]
Quindi direi che l'IA ci deve ancora lavorare.
Mi dispiace di essere portatore di brutte notizie; ma di questo si tratta e non posso cambiare le cose.
Per inciso va detto che "Ricerca lunghette" è un software affidabilissimo sul piano dei risultati, anche se obsoleto su quello dell'efficienza, infatti ha lavorato per circa 24 minuti per elaborare "solo" 14 miliardi di combinazioni. Capisci bene che pur attribuendo al C++ tutti i meriti di velocità ed efficienza che si merita, è praticamente impossibile che abbia potuto elaborare tutte le 77.515.521.435 combinazioni in una frazione di secondo.
A presto.
Oberdan
Scusate se mi intrometto.
Ho letto il discorso sui tempi di calcolo e siccome tempo fa ho scritto un programma che fa anche questa elaborazione, provo a spiegare come mai può metterci pochissimo.
L'obiezione è giusta: le ottine sono 77.515.521.435 e una per una non si guardano in una frazione di secondo, non c'è linguaggio che tenga. Infatti non si guardano.
Il punto sta in una proprietà del ritardo: aggiungendo numeri a un gruppo il ritardo non può crescere, al massimo cala.
Se prendo quattro numeri e vedo che hanno già fatto terno duecento colpi fa, allora tutte le ottine che contengono quei quattro numeri hanno per forza un ritardo minore di duecento. Sono milioni di combinazioni e le scarto tutte insieme, senza guardarne nemmeno una, perché so già che in classifica non ci entrano.
Il programma quindi costruisce i gruppi un numero alla volta, e appena un pezzo di gruppo fa terno dentro la soglia butta via l'intero blocco che ci sta sotto. Alla fine i gruppi che sopravvivono e vanno valutati per esteso sono qualche migliaio, non miliardi. Il tempo viene da lì.
A questo punto la domanda è un'altra: chi mi dice che buttando via a blocchi non si perda qualcosa per strada?
Per quello il programma tiene la contabilità. Ogni volta che scarta un blocco sa quante ottine conteneva, e alla fine stampa la somma. Su una ruota, classe 8 e sorte 3, viene così: 77.515.521.435 = 77.515.519.142 escluse + 2.293 esaminate a una a una I due addendi tornano al totale esatto, sempre, per qualunque classe e sorte.
Se lo scarto a blocchi si mangiasse qualcosa i conti non quadrerebbero.
In due parole: non è merito della velocità del linguaggio. È che non si contano tutte. Si scarta in blocco quello che si sa già che non serve, e si dimostra di non aver perso niente contando quello che si è scartato.
Mattia73
Una curiosità tecnica : hai scritto 14 miliardi di combinazioni in 24 minuti, però le ottine possibili sono 77.515.521.435.
I 14 miliardi sono un tetto che hai impostato tu, o l'elaborazione si è fermata prima, oppure la ricerca parte già ristretta a una parte delle combinazioni?
Te lo chiedo perché a seconda di quale delle tre è, il conteggio vuol dire cose molto diverse.