Pagina 4 di 4 primaprima ... 2 3 4
Visualizzazione dei risultati da 31 a 38 su 38

Discussione: combinazioni

  1. #31
    RAGA FORSE HO TROVATO UN MODO X CREARE UN CALENDARIO DECENDE CON TUTTE LE PARTITE SIA IN ANDATA CHE IN RITORNO...

    PREMETTO CHE NN HO REALIZZATO LO SCRIPT XKè MI E' VENUTA IN MENTE (nn so neanche come dato che nn ci stavo pensando) ALL'IMPROVISO DUE SEC FA!!!

    allora lo scopo è questo dividere l'array contenente le squadre in due e creare due array, x creare le varie giornate nn bisogna fare altro che spostare tutti gli elementi del primo array di una posizione SOPRA e quelli del secondo in SOTTO, le squadre che saranno in eccesso andranno in un altro array....

    NN SO SE MI SONO SPIEGATO BENE....

  2. #32
    ma così non si avrà mai la casualità necessaria!!!! :master:
    www.skorpiograph.com - [ PORTFOLIO ]
    ...se vuoi essere aiutato devi aiutare chi ti aiuta ad aiutarti!!!

  3. #33
    Bella idea. Così su due piedi se lo shift fosse determinato casualmente, scalando di 1 di 5 o di 10 e via così, mi pare che forse potrebbe funzionare (come quella specie di orologio che davano con topolino mille anni fa con cui potevi farti un "codice segreto") . Successivamente andrebbero estratte casualmente anche le coppie di squadre in modo da aumentare la causalità.


    Mammamia da quanto non entro in questo forum.
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  4. #34
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    273
    Ragazzi se riuscite a risolvere fateci sapere!!!!
    Grazie!!!

  5. #35
    ho provato ad utilizzare lo script che avete postato, modificandolo per le mie esigenze... ma crea il solito errore, riportando nella 4ªgiornata un match già presente nella prima, mentre nella 9ª ne il numero delle partite è superiore a quello che dovrebbe essere...

    qlkn ha risolto?
    io è un paio di giorni che ci lavoro ma niente... grazie

  6. #36
    Riuppo questo 3D..
    io ho creato questa soluzione, basata su cicli while. Il pregio è che se tutto fila liscio, crea correttamente tutte le giornate. Il difetto è che, essendo basato su cicli while, va facilmente in loop. Con 4 squadre riesco a creare un calendario (al limite, se vedo che tira per le lunghe, dò un reload). Con 8 è quasi impossibile, al massimo sono arrivato a 6 giornate su 7. Poi arriva il tempo limite di 30 secondi di php..
    A me serviva un calendario per 6 squadre e già cosi mi va bene. )

    Codice PHP:
    <?php
        error_reporting
    (E_ALL);
        
        
    $squadre=array("Napoli","Roma","Lazio","Sampdoria");
        
    $tot_squadre=count($squadre);
        
    $tot_giornate=$tot_squadre-1;
        
    $tot_partite_giornata=$tot_squadre/2;

        
    $partite_giocate=array();
        
    $partite_questa_giornata=array();
        
    $giornata_corrente=1;
        
        function 
    get_campionato(){
            global 
    $tot_giornate;
            
    $tot_giornate_estratte=0;
            while (
    $tot_giornate_estratte $tot_giornate){
                
    get_giornata();
                
    $tot_giornate_estratte++;
            }
        }
        
        function 
    check_partita($squadra_a$squadra_b){//true se la partita è presente, false se non c'è
            
    global $partite_giocate;
            if(!
    in_array($squadra_a."-".$squadra_b,$partite_giocate)){
                if(!
    in_array($squadra_b."-".$squadra_a,$partite_giocate)){
                    return 
    false;
                }
                else{
                    return 
    true;
                }
            }
            else{
                return 
    true;
            }
        }
        
        function 
    get_giornata(){
            global 
    $tot_partite_giornata$partite_giocate$partite_questa_giornata,$giornata_corrente;
            
    $partite_questa_giornata=array();
            while (
    count($partite_questa_giornata) < $tot_partite_giornata){
                do {
                       
    $tmp_partita=get_partita();
                } while (
    $tmp_partita==false);
                
    $partite_questa_giornata[]=$tmp_partita;
                
    $partite_giocate[]=$tmp_partita;
            }
            echo 
    "Giornata $giornata_corrente:
    "
    ;
            while(list(
    $chiave,$valore) = each($partite_questa_giornata)){
                
    $chiave++;
                echo 
    "$chiave$valore
    "
    ;
            }
            
    $giornata_corrente++;
            echo 
    "


    "
    ;
        }
        
        function 
    in_array_giornata($squadra){
            global 
    $partite_questa_giornata;
            while(list(
    $chiave,$valore) = each($partite_questa_giornata)){
                
    $due_squadre=explode("-",$valore);
                if(
    in_array($squadra,$due_squadre)){
                    
    reset($partite_questa_giornata);
                    return 
    true;
                }
            }
            
    reset($partite_questa_giornata);
            return 
    false;
        }
        
        function 
    get_partita(){
            global 
    $partite_questa_giornata,$squadre;
            
    srand((float) microtime() * 10000000);
            
    $valorecasuale array_rand($squadre,2);
            
    $valorecasuale0 $squadre[$valorecasuale[0]];
            
    $valorecasuale1 $squadre[$valorecasuale[1]];
            if(
    count($partite_questa_giornata)>0){
                if(!
    in_array_giornata($valorecasuale0)){
                    if(!
    in_array_giornata($valorecasuale1)){
                        if(!
    check_partita($valorecasuale0,$valorecasuale1)){
                            return 
    $valorecasuale0."-".$valorecasuale1;
                        }
                        else{
                            return 
    false;
                        }
                    }
                    else{
                        return 
    false;
                    }
                }
                else{
                    return 
    false;
                }
            }
            else{
                return 
    $valorecasuale0."-".$valorecasuale1;
            }
        }
        
        
    get_campionato();
                
    ?>

  7. #37
    beh!! almeno ci hai provato e cmq sembra molto-troppo limitativo!!
    www.skorpiograph.com - [ PORTFOLIO ]
    ...se vuoi essere aiutato devi aiutare chi ti aiuta ad aiutarti!!!

  8. #38
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    3

    Soluzione

    Salve a tutti,
    credo di aver trovato il modo di risolvere il problema.
    Allora vi comunico subito che per me funziona e mi genera il calendario con 16 squadre in meno di un secondo tempo stimato tramite il comando
    codice:
    time php calendario.php
    chiaramente il tempo è stimato ed il test è in locale sul terminale
    Comunque tornando a noi purtroppo non posso ancora rilasciarvi il codice sorgente php perchè mi serve per un esame all'università e deve essere inedito(almeno finchè non lo ha visto il prof ) tuttavia ecco le linee guida che mi hanno portato ad una soluzione per me sufficente.

    codice:
    Il programma calcola il calendario di un campionato in base al numero di squadre passato per argomento
    Nel dettaglio si articola in più fasi:
    1)Si generano tutte le partite che devono essere giocate tremite la funzione partite. Tale funzione preso per parametro un array di squadre genera più array contenenti le partite della prima squadra combinata con le restanti
    		Esempio
    			A-B		B-C		C-D		D-E		E-F
    			A-C		B-D		C-E		D-F
    			A-D		B-E		C-F
    			A-E		B-F
    			A-F
    			partite[A]	partite[B]	partite[C]	partite[D]	partite[E] 	
    2)Si genera la singola giornata prendendo le partite dai vari array definiti al passo precedente controllando sia che la partita non sia stata già giocata sia che le squadre non siano già impegnate in un'altro incontro durante la stessa giornata.
    Nel caso in cui la combinazione scelta non sia possibile si marchia l'ultima partita elaborata come non possibile nella giornate attuale(partite[squadra1][squadra2]=-1) e si procede a ritroso cercando un'altra possibile soluzione.
    3)Ottenute tutte le giornate si scambiano i valori tra "in casa" e "fuori casa" nel modo più omogeneo possibile permettendo così di avere un campionato in cui le squadre giochino sia nel girone di andata che in quello di ritorno una partita in casa ed una in trasferta ove possibile.
    La chiave di volta sta nel fatto che se una soluzione non produce tutte le partite della giornata si deve procedere a ritroso ricordandosi la combinazione errata e tentare una nuova soluzione.

    Prometto che appena il prof mi accredita il progetto pubblico il codice completo.
    Per altre info scrivete pure.
    Quello che l'occhi vede, l'orecchio sente la mente crede.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.