Novità

Software R e RSTUDIO chi li conosce?

Jessica... 🤔 mai covert... :eek::ROFLMAO:

Tornando a chatty... alias cgpt e al c++ e alle sue news... 😂

🤖"
In particolare, l'uso dell'algoritmo basato sui bit avviene nei seguenti passi:
  1. Calcola il numero totale di combinazioni possibili per l'insieme gruppo_base utilizzando num_combinazioni = 1 << n, dove n è la dimensione dell'insieme.
  2. Successivamente, il ciclo for (int i = 1; i < num_combinazioni; i++) viene utilizzato per generare tutte le combinazioni utilizzando maschere di bit.
  3. Nell'interno del ciclo for, la combinazione corrente viene generata selezionando gli elementi dell'insieme gruppo_base corrispondenti ai bit attivi nella variabile i.
Quindi, l'algoritmo basato sui bit è implementato implicitamente attraverso il ciclo for e l'uso di operatori bitwise nella funzione generate_formazioni.
Ripeto, mi scuso per l'incomprensione precedente. Ora dovresti avere l'algoritmo basato sui bit correttamente incluso nel codice. Puoi eseguire lo script per vedere quanto tempo impiega a generare le formazioni desiderate.
"

Per adesso sto testando un modo classico in c++ sempre "mostrato" da lei per generare formazioni integrali da 2 a 5 elementi di classe by gruppo base di 90 numeri. E al momento ci ha messo per c2 : 4 sec. x c3 : 5 min x c4 ancora in corso... Quindi non proprio un razzo...

il codice c++ finora testato è questo:

Codice:
#include <iostream>
#include <vector>
#include <ctime>

using namespace std;

// Funzione per generare tutte le formazioni numeriche in base al gruppo base e alla classe di sviluppo
vector<vector<int>> generate_formazioni(const vector<int>& gruppo_base, int classe_sviluppo) {
    vector<vector<int>> formazioni;  // Vettore che conterrà tutte le formazioni generate
    int n = gruppo_base.size();

    // Inizializzazione del vettore degli indici
    vector<int> indices(classe_sviluppo);
    for (int i = 0; i < classe_sviluppo; i++) {
        indices[i] = i;
    }

    // Calcolo del numero totale di formazioni possibili
    int total_combinations = 1;
    for (int i = 0; i < classe_sviluppo; i++) {
        total_combinations *= (n - i);
        total_combinations /= (i + 1);
    }

    // Generazione delle combinazioni
    for (int count = 0; count < total_combinations; count++) {
        vector<int> current_combination;
        for (int i = 0; i < classe_sviluppo; i++) {
            current_combination.push_back(gruppo_base[indices[i]]);
        }
        formazioni.push_back(current_combination);

        // Calcolo e visualizzazione della percentuale di completamento
        double percent_complete = static_cast<double>(count + 1) / total_combinations * 100;
        cout << "Formazione " << count + 1 << ": ";
        for (int num : current_combination) {
            cout << num << " ";
        }
        cout << "- Percentuale di completamento: " << percent_complete << "%" << endl;

        // Calcolo delle combinazioni successive
        int j = classe_sviluppo - 1;
        while (j >= 0 && indices[j] == n - classe_sviluppo + j) {
            j--;
        }

        if (j < 0) {
            break;
        }

        indices[j]++;

        for (int i = j + 1; i < classe_sviluppo; i++) {
            indices[i] = indices[j] + i - j;
        }
    }

    return formazioni;
}

int main() {
    vector<int> gruppo_base;
    for (int i = 1; i <= 90; i++) {
        gruppo_base.push_back(i);
    }
    int classe_sviluppo = 5;

    // Genera le formazioni e calcola il tempo di esecuzione
    clock_t start_time = clock();
    vector<vector<int>> formazioni_generate = generate_formazioni(gruppo_base, classe_sviluppo);
    clock_t end_time = clock();

    double elapsed_time = double(end_time - start_time) / CLOCKS_PER_SEC;
    cout << "Tempo di esecuzione: " << elapsed_time << " secondi" << endl;

    return 0;
}

un piccolo dietro le quinte del test

unpiccolodietrolequintedeltest.jpg

comunque sia io che lei non ci diamo ancora per vinti...

🧑‍🍳 " al momento dispongo di questo pc: Intel(R) Celeron(R) J4125 CPU @ 2.00GHz 2.00 GHz 16,0 GB (15,8 GB utilizzabile) Sistema operativo a 64 bit, processore basato su x64 credi sia possibile procedere alle ottimizzazioni che mi hai indicato? "


🤖 "
Il tuo PC ha un processore Intel Celeron J4125 con 4 core e 4 thread, che è una CPU quad-core con una frequenza di clock base di 2.00 GHz. Anche se non è una CPU ad alta potenza, è ancora possibile ottimizzare il codice per migliorare le prestazioni durante la generazione delle formazioni.

Alcune delle ottimizzazioni menzionate in precedenza, come l'utilizzo di algoritmi efficienti e la parallelizzazione, possono essere implementate anche su questa CPU. La generazione delle formazioni in classe 5 dai 90 numeri richiederà comunque un certo tempo, ma puoi migliorare le prestazioni con le seguenti strategie:


  1. Utilizza un algoritmo più efficiente per la generazione delle combinazioni, come l'algoritmo basato su bit. Questo può aiutare a ridurre il tempo di esecuzione rispetto all'approccio ricorsivo.
  2. Sfrutta la parallelizzazione se possibile. Puoi utilizzare librerie come OpenMP per aggiungere supporto a threading e sfruttare i 4 core del tuo processore per generare formazioni in modo simultaneo.
  3. Verifica che il codice sia ben ottimizzato e utilizza le ottimizzazioni del compilatore, come l'opzione -O3 per GCC.
  4. Limita l'output se non è necessario stampare tutte le formazioni generate. La stampa a schermo può richiedere tempo aggiuntivo, quindi puoi evitarla durante la generazione e stampare solo i risultati finali.
  5. Utilizza strutture dati efficienti per memorizzare le formazioni generate, come un vettore di vettori.
  6. Prova a profilare il codice per individuare le parti critiche e ottimizzarle.
Anche con queste ottimizzazioni, la generazione di 50 milioni di formazioni in classe 5 dai 90 numeri richiederà comunque un certo tempo. Tuttavia, dovresti essere in grado di ridurre significativamente i tempi di elaborazione rispetto all'implementazione iniziale senza ottimizzazioni. "

ps: in realtà a me per i miei esperimenti attuali basterebbe riuscire ad analizzare in modo integrale in tempi rapidi...


con 78 elementi si generano in modo integrale

x classe 1 : 78 formazioni
x classe 2 : 3003 formazioni
x classe 3 : 76076 formazioni
x classe 4 : 1426425 formazioni
x classe 5 : 21111090 formazioni <<<<<
 
Ultima modifica:
Tom, non si se dipenda dal device utilizzato o magari dall algoritmo utilizzato.
5 Minute per lo sviluppo in terzine è troppo, anche per un celeron.
Vediamo se Luigi r Rookie ci dicono qualcosa sull algoritmo come è implementato.

la programmazione è arte.
 
Tom, non si se dipenda dal device utilizzato o magari dall algoritmo utilizzato.
5 Minute per lo sviluppo in terzine è troppo, anche per un celeron.
Vediamo se Luigi r Rookie ci dicono qualcosa sull algoritmo come è implementato.

la programmazione è arte.

Questa volta io non centro... :ROFLMAO: Ha fatto di nuovo tutto lei da sola! :eek: :LOL:
 
perfino con gl iscript ci mette di meno ..

Dim aColonne
Dim aN

aN = GetANumeri
aColonne = SviluppoIntegrale (aN ,3)
Scrivi TempoTrascorso


Tom lascia perdere ChatGpt è un language model ...non è capace di scrivere nessun programma se non ricopiandolo da qualche parte se già esiste.
Tra l'altro la parte critica non è sviluppare le combinazioni ma analizzarle sulle migliaia di estrazioni dell'archivio.

perche non gli provi a domandare se secondo lei tuttequeste analisi abbiano un 'utilità ai fini pratici ?
 
perfino con gl iscript ci mette di meno ..

Dim aColonne
Dim aN

aN = GetANumeri
aColonne = SviluppoIntegrale (aN ,3)
Scrivi TempoTrascorso


Tom lascia perdere ChatGpt è un language model ...non è capace di scrivere nessun programma se non ricopiandolo da qualche parte se già esiste.
Tra l'altro la parte critica non è sviluppare le combinazioni ma analizzarle sulle migliaia di estrazioni dell'archivio.

perche non gli provi a domandare se secondo lei tuttequeste analisi abbiano un 'utilità ai fini pratici ?

No a fini pratici e se si prende di punta.. con domande tipo "si può vincere alla lotteria?" lei è + pragmatica e razionale di te :D. Non fa altro che ripetere... "la lotteria è aleatoria... l'intelligenza artificiale non può aiutare a far vincere.. ecc... " Ma se la si prende con + tatto... e le si chiede solo dei pareri riduzionali e statistici si apre.. molto di + e credo che con il tempo... possa venire enormemente in aiuto se non altro... per le nuove idee di sviluppo, di linguaggi, di programmi e di basi di codice che altrimenti rimarrebbero sotto il cuscino... Io la trovo utilissima per queste cose anche se le pesca nel suo enorme database per altro neppure aggiornato ma fermo al 2021 e non le crea ex novo. Per quanto mi riguarda la sua "potenzialità di assistenza" per noi poveri mortali... non ha niente a che vedere con i motori di ricerca classici superandoli alla grande anche per quanto concerne la semplice "comunicazione..." 🙃

Ad ogni modo il codice che ha recuperato per generare le formazioni in c++ fa proprio cag... 😵‍💫🥴😆 Per generare tutte le c4 by 90 ci ha messo ben 104 minuti e passa!

104minuti-xc4by90.jpg
 
Ultima modifica:
secondo me ti aumentano solo la confusione , che ci fa icon tutti questi linguaggi se non ne conosci manco uno ? Al momento ci vuole l'intervento umano per realizzare un qualsiasi programma ,al massimo chatgpt ti puo fornire un template sul quale dovrai sempre intervenre di persona. Hai pensato a fart iibernare e risvegliare tra un centinaio d'anni ? Forse a quell'epoca esisterà una macchina in grado di esaudire le tue richieste...
 
Ed io agg
perfino con gl iscript ci mette di meno ..

Dim aColonne
Dim aN

aN = GetANumeri
aColonne = SviluppoIntegrale (aN ,3)
Scrivi TempoTrascorso


Tom lascia perdere ChatGpt è un language model ...non è capace di scrivere nessun programma se non ricopiandolo da qualche parte se già esiste.
Tra l'altro la parte critica non è sviluppare le combinazioni ma analizzarle sulle migliaia di estrazioni dell'archivio.

perche non gli provi a domandare se secondo lei tuttequeste analisi abbiano un 'utilità ai fini pratici ?
Condivido in toto il pensiero di SLDR, che saluto anche se ci siamo persi...occasioni per continuare a discettare! Da il fu' Blaise Pascal, che per primo affermo' che il linguaggio chiaro (senza alludere ai linguaggi con cui si scrive il codice) e' sinonimo di pensiero altrettanto chiaro, per arrivare al mio amico Emil Kirchegaard, che tra l'altro ha titolato il suo Blog "Clear Language, Clear Mind" (per non scomodare i traduttori: Pensiero chiaro, mente Lucida) e' lampante che le azioni che seguono il pensiero sono efficaci se, cio' che si pensa ha un senso pratico.

Dove voglio arrivare?

Nonostante gli orizzonti allargati dei LLMs, l'Eldorado di Tom, si allontana man mano che prosegue il percorso nel riproporre pedissequamente, al fine di far riprodurre il suo concetto (discutibile e inutile, secondo me) agli "edotti" LLMs perche' trovino qualcosa di magico che migliori il modo con cui egli intende fare ricerche su ampie distese di moltitudini di combinazioni.

Non serve scorrere migliaia di estrazioni (ogni volta), per ognuna delle milionate di combinazioni, ogni volta, per cercare la stessa situazione. E gia' qui ci sarebbe da scrivere un tomo.

E se prima non si ha un modello per capire quali siano, oggettivamente (con cognizione di causa, non dettate da sensazioni o per sentito dire), le situazioni che vale la pena approfondire, allora e ' inutile andare a cercar cose che ancora non esistono, perche' sono sempre in attesa di qualcuno che le crei o le scopra.
 
Ciao Rookie , le occasioni anche se sporadiche ci sono mi fa piacere averti risentito. Hai giustamente dato un input che si basa sul fatto che le estrazioni quelle sono e quelle restano pertanto per velocizzare l'analisi si potrebbe aggiornare i dati gia colcolati l'ultima volta piuttosto che ripartre daccapo , questa sarebbe sicuramente tra le migliori strategie. Si torna a quanto dicevo , e mi rivolgo a Tom ,non puoi pretendere che chatgpt ragioni e ti suggerisca le ottimizzazioni ,e anzi t offra direttamente il codice da compilare e perche no l'exe gia fatto a sto punto -.. puo farlo solo se le conosce se il problema è già stato affrontato.
 
Ciao Rookie , le occasioni anche se sporadiche ci sono mi fa piacere averti risentito. Hai giustamente dato un input che si basa sul fatto che le estrazioni quelle sono e quelle restano pertanto per velocizzare l'analisi si potrebbe aggiornare i dati gia colcolati l'ultima volta piuttosto che ripartre daccapo , questa sarebbe sicuramente tra le migliori strategie. Si torna a quanto dicevo , e mi rivolgo a Tom ,non puoi pretendere che chatgpt ragioni e ti suggerisca le ottimizzazioni ,e anzi t offra direttamente il codice da compilare e perche no l'exe gia fatto a sto punto -.. puo farlo solo se le conosce se il problema è già stato affrontato.
Qui sopra vi e' uno Splendido Esempio di Pensiero Chiaro e Mente Lucida! Bravo Luigi, ti confermi superbo Fulmine di guerra!!!

p.s. da gioia anche a me averti re-incontrato, grazie e un caloroso Ciao Luigi!
 
pertanto per velocizzare l'analisi si potrebbe aggiornare i dati gia colcolati l'ultima volta piuttosto che ripartre daccapo
Concordo, secondo me questo espediente è favoloso ( soprattutto per gli storici o gli storici dei sincroni di livello ma se inserisci un estrazione sbagliata e te ne accorgi solo dopo il risultato resta falsato , ci dovrebbe essere la possibilità di rifare il ricalcolo .
 
Pur concordando quasi su tutto con quanto detto dai due indiscussi maestri di programmazione riguardo le IA, per i poveri mortali che fanno fatica come il sottoscritto ad imparare o memorizzare qualsiasi linguaggio e relativi codici di programmazione continuo a riportare help "alla macedonia" by questi "nuovi motori di ricerca dopati"... Anche per ritrovare abbastanza facilmente le varie info senza doverle ricercare nelle finestre di chat della IA o altrove...

c++

dopo aver installato un compilatore C++ tipo MinGW x windows.

x compilare il code .cpp salvato in qualsiasi editor come notepad++ ad esempio...

Codice:
g++ generate_formazioni.cpp -o nome-eseguibile-voluto

per eseguirlo da prompt semplicemente:

Codice:
nome-eseguibile-voluto.exe
 
Ultima modifica:
Tom io non conosco il c++ ma in ogni caso il codice è flessibile .
Tu scrivi la classe e lui fa lo sviluppo

Non so come si scrive ma se tu gli chiedessi di fare 4 cicli for
For i=1 to 87
For j=i+1 to 88
For m= j+1 to 89
For k= m+1 to 90
S= i &","&j&","&m&","& k
Next
Next
Next
Next
Print s
Fuoribdal ciclo
quindi l ultima combinazione solamente

Chiedile di tradurti in c++ questo
Quanto tempo ci mette?

Solo per curiosità.
Poi chiedile qual è l ide free che ottimizza il c++

Tiene sempre una funzione che tu faccia uscire dal ciclo se sei stanco
Di aspettare.
 
Ultima modifica:
Ladies and gentlemen we have a winner...

algoritmo basato su bit 🤖🥇🥇🥇🥇🥇:alien:



C:\Users\admin\Desktop\C++>generate_formazioni-6.exe
Tempo di esecuzione: 273.978 secondi :eek::eek::eek::eek::eek:

Codice:
int main() {
    vector<int> gruppo_base;
    for (int i = 1; i <= 90; i++) {
        gruppo_base.push_back(i);
    }
    int classe_sviluppo = 5;

    // Genera le formazioni e calcola il tempo di esecuzione
    clock_t start_time = clock();
    vector<vector<int>> formazioni_generate = generate_formazioni(gruppo_base, classe_sviluppo);
    clock_t end_time = clock();

    // Stampa le formazioni generate (commentato per non occupare troppo spazio nell'output)
    /*
    for (const auto& formazione : formazioni_generate) {
        for (int num : formazione) {
            cout << num << " ";
        }
        cout << endl;
    }
    */

    double elapsed_time = double(end_time - start_time) / CLOCKS_PER_SEC;
    cout << "Tempo di esecuzione: " << elapsed_time << " secondi" << endl;

    return 0;
}
 
giusto per curiosità ma non manca qualcosa nel codice che hai postato ? la funzione generate_formazioni dov'è ?

Avevo postato solo la parte dove si evidenziava l'immane richiesta di tutte le 45M e passa di c5 by 90 ;)


code full

Codice:
#include <iostream>
#include <vector>
#include <ctime>

using namespace std;

// Funzione per generare tutte le formazioni numeriche in base al gruppo base e alla classe di sviluppo
vector<vector<int>> generate_formazioni(const vector<int>& gruppo_base, int classe_sviluppo) {
    vector<vector<int>> formazioni;  // Vettore che conterrà tutte le formazioni generate
    int n = gruppo_base.size();
    int num_combinazioni = 1 << n;  // Numero totale di combinazioni possibili (2^n)

    // Generazione delle combinazioni utilizzando l'algoritmo basato sui bit
    for (int i = 1; i < num_combinazioni; i++) {
        vector<int> current_combination;
        for (int j = 0; j < n; j++) {
            if (i & (1 << j)) {
                current_combination.push_back(gruppo_base[j]);
            }
        }

        if (current_combination.size() == classe_sviluppo) {
            formazioni.push_back(current_combination);
        }
    }

    return formazioni;
}

int main() {
    vector<int> gruppo_base;
    for (int i = 1; i <= 90; i++) {
        gruppo_base.push_back(i);
    }
    int classe_sviluppo = 5;

    // Genera le formazioni e calcola il tempo di esecuzione
    clock_t start_time = clock();
    vector<vector<int>> formazioni_generate = generate_formazioni(gruppo_base, classe_sviluppo);
    clock_t end_time = clock();

    // Stampa le formazioni generate (commentato per non occupare troppo spazio nell'output)
    /*
    for (const auto& formazione : formazioni_generate) {
        for (int num : formazione) {
            cout << num << " ";
        }
        cout << endl;
    }
    */

    double elapsed_time = double(end_time - start_time) / CLOCKS_PER_SEC;
    cout << "Tempo di esecuzione: " << elapsed_time << " secondi" << endl;

    return 0;
}
 
hai provato a vedere cosa sviluppa ?
A me gia che le combinazioni totali siano calcolate cosi mi puzza , saranno i misteri del c++

int num_combinazioni = 1 << n; // Numero totale di combinazioni possibili (2^n)
 
hai provato a vedere cosa sviluppa ?
A me gia che le combinazioni totali siano calcolate cosi mi puzza , saranno i misteri del c++

int num_combinazioni = 1 << n; // Numero totale di combinazioni possibili (2^n)

Puzza un pò anche a me..., anche perchè per adesso pur de commentando i risultati l'output non lo mostra, ma mi sono tappato il naso... e sogno che si tratti di un profumo di rose... :D
 

Ultima estrazione Lotto

  • Estrazione del lotto
    sabato 31 agosto 2024
    Bari
    88
    20
    52
    44
    64
    Cagliari
    28
    21
    22
    61
    10
    Firenze
    46
    36
    17
    49
    28
    Genova
    53
    69
    68
    01
    43
    Milano
    79
    03
    19
    83
    55
    Napoli
    02
    81
    65
    43
    79
    Palermo
    52
    01
    74
    51
    80
    Roma
    63
    41
    15
    73
    40
    Torino
    84
    56
    66
    87
    19
    Venezia
    19
    20
    89
    34
    24
    Nazionale
    23
    25
    39
    46
    53
    Estrazione Simbolotto
    Nazionale
    22
    12
    05
    38
    29

Ultimi Messaggi

Indietro
Alto