![]() |
![]() |
|
| Condividi questo contenuto nei Social Network: |
|
Tweet |
|
|
|
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito. |
||||
|
|||||||||
|
|
LinkBack | Strumenti di discussione |
|
|
#1 (permalink) |
|
Esperto
|
Cerco Generatore di combinazioni NON casuali
Sto cercando se esiste un programma che generi in output un file con tutte le combinazioni possibili a partire da alcuni parametri dati
Le variabili sono B blocchi (nel mio caso il valore va da 15 a 45) N numeri (da 2 a 6) L lunghezza Sequenza (da 6 a 16) Attenzione: non mi basta che mi dia il numero delle combinazioni che si generano ma mi servirebbe anche lo sviluppo delle stesse. Ad esempio Esempio: Io ho 45 blocchi composti da coppie di 2 numeri differenti (nessun numero si ripete nelle coppie) e voglio generare tutte le combinazioni per ottenere sequenze di 8 numeri (non ripetuti) quindi 4 coppie Se non erro dovrebbero essere 148.995 combinazioni di cui vorrei ottenere lo sviluppo Questo sarebbe il primo passo Il secondo passo sarebbe un sistema di verifica A partire da N sequenza di numeri (da 1 a 1000 sequenze) di lunghezza fissa 6 verificare quante corrispondenze intere o parziali (6, 5, 4, 3, 2, 1 corrispondenza ) ottengo nelle combinazioni dello sviluppo precedente. Il livello di corrispondenza dovrebbe essere determinabile Nell'esempio precedente avendo 148.995 combinazioni voglio vedere quante corrispondenze intere o parziali ottengo nelle 500 sequenze di 6 numeri a mia disposizione. E' chiaro che in alcune combinazioni posso ottenere più corrispondenze diverse ad esempio 1 corrispondenza da 5 numeri 3 da 4 numeri ecc. Mi sapete dare qualche dritta? Grazie |
|
__________________
Hosting x noprofit. Esperto GT settore previdenziale Ultima modifica di grisu59 : 19-08-09 12:57. |
|
|
|
|
|
|
|
|
#2 (permalink) |
|
Consiglio Direttivo
Bibliotecario Data di registrazione: Oct 2008
Ubicazione: gt-Biblioteca; Forum; Wiki.
Messaggi: 9,445
|
Salve, Grisu59.
Se non ho capito male, cerchi qualcosa che gestisca e mandi in output una gran quantità di dati derivanti da processi di calcolo combinatorio (permutazioni e combinazioni di numeri, con o senza ripetizioni). I due nomi che mi vengono subito in mente sono Mathematica di Stephen Wolfram e Matlab. Sono entrambi a pagamento e, da quel che so, nemmeno troppo economici (il primo è un programma scientifico molto avanzato di calcolo simbolico che potrebbe facilmente fare ciò che chiedi, a patto di conoscere la sua sintassi; il secondo lavora prevalentemente con le matrici di dati ed è più orientato al calcolo numerico - sempre con sintassi dedicata). Un'altra possibilità potrebbe essere quella di scrivere i programmi direttamente a mano: poiché si tratta - almeno nel primo passo - di calcolo combinatorio, una volta trovata la formula generale per il caso che ti riguarda, si tratterebbe solo di dire alla macchina cosa moltiplicare e cosa dividere per avere rapidamente (secondo la disponibilità del processore e della RAM, ovvio) lo sviluppo delle sequenze. Un Matematico con un po' di conoscenze nel settore potrebbe facilmente formalizzare il problema e darti la formula finale, che opportunamente tradotta sarebbe di facile gestione nelle mani anche di un programmatore non espertissimo. Per maggiori informazioni ti rimando a questa semplice introduzione, accessibile anche ai non iniziati. Per il secondo passo, la sequenza potrebbe essere sviluppata in più tappe successive; azzardo una scaletta: 1) Confronto della lunghezza della stringa di input (assegnata da te e nota) con tutte quelle di output del precedente; sulla base di questo dato, sfruttamento per il confronto delle sole stringhe con lunghezza uguale a quella di input. 2) Mediante un sistema posizionale, verificare in più cicli le corrispondenze tra le cifre della stringa di input e quelle rese disponibili da 1). Specificamente: 2.1) Far conteggiare le corrispondenze singole. 2.2) Per quelle multiple, agire così: ogni volta che c'è una corrispondenza singola un contatore - con etichetta "Corrispondenza singola" - scatta di una unità e fa accedere la coppia "stringa di input & stringa passata dalla macchina" alla fase successiva, in cui si controllano le coincidenze doppie sulle restanti cifre dei due numeri in ballo. 2.3) I superstiti di questo passo vengono ripassati alla ricerca di triple e così via. 3) Stampa a video dei risultati in una tabella per colonne con somma finale delle occorrenze (= coincidenze) per ogni tipologia: singole, doppie, triple etc. 4) Ripetizione del processo per ciascuna sequenza di input (in numero variabile da 1 a 1000, sempre con un sistema di cicli che faccia girare la macchina finché non abbia esaurito ciò che tu le avrai dato in pasto). 6) Riassunto finale a video dei risultati col solito sistema delle colonne e delle somme. Avendo una macchina abbastanza potente e tempo sufficiente, si dovrebbe poter riuscire a risolvere tutto senza sforzi mostruosi (creato il primo loop, è tutto uguale); lascio comunque la parola a un programmatore per i dettagli tecnici, in cui confesso di non essere attualmente in grado di potermi addentrare. Saluti. ![]() |
|
__________________
Bibliosaurus ModSenior --- Bibliotecario del Forum gt. Al vostro servizio. Sono con te, sei con me.
![]() |
|
|
|
|