Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    Creare un calendario di calcio

    salve, non so se questa sia la "sede" opportuna, ma avrei bisogno di una mano per creare un programma che mi faccia un calendario automatico inserendo solo il numero di squadre partecipanti. Non mi interessa per un linguaggio specifico, mi interessa fare l'algoritmo.

    Sono solo riuscito a crearmi una matrice dove avrò tutte le partite di ogni squadra. Es. se ho 6 squadre la matrice sarà questa (non rende molto l'idea di una matrice, ma lo è )
    I numeri rappresentano le squadre, quindi dove sta 12 significa SQUADRA 1 - SQUADRA 2.


    codice:
     1    2    3    4    5    6
    1-   12   13   14   15   16
    2    -    23   24   25   26    
    3          -   34   35   36
    4              -    45   46
    5                    -   56
    6                        -

    ovviamente mi interessa solo la matrice sopra la diagonale dato che quella di sotto rappresenterebbe le partite del girone di ritorno. Detto questo, ora ho tutte le partite nella diagonale superiore, come creo le giornate? Esiste un metodo matematico per risolvere questo problema supponendo sempre che il tutto deve essere implementabile anche se le squadre fossero 4 o 8 o 12....

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Questo e' un esempio in C che ottiene i dati che vuoi ottenere ... prendi spunto ...

    codice:
    #define SQUADRE 6
    
    int main()
    {
    	int sq1, sq2;
    
    	for(sq1=1; sq1<SQUADRE; sq1++)
    	{
    		printf("%d - ", sq1);
    
    		for(sq2=1; sq2<=SQUADRE; sq2++)
    			if(sq1 < sq2)
    				printf("%d%d ", sq1, sq2);
    
    		printf("\n");
    	}
    
    	return 0;
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    da quello che ho capito, così ottengo la matrice che è quello che ho già fatto
    A me servirebbe un algoritmo per creare il calendario partendo dalla matrice...

    Grazie lo stesso per il suggerimento

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Allora non ti sei spiegato ...

    Cosa vuoi ottenere a partire da quella matrice?

    Fai un esempio pratico, magari con 4 squadre ... indica chiaramente quello che hai ottenuto (con quale algoritmo?) e cosa vuoi ancora ottenere ...

    Per chiarezza, e' meglio che fai riferimento ad un linguaggio per gli esempi ... dovrebbe andare bene il C.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    A me servirebbe un algoritmo per creare il calendario
    Creare calendari ed orari è un problema di ottimizzazione combinatoria, specifica quali sono i vincoli.

  6. #6
    quello che mi serve, è un algoritmo per la creazione di un calendario di partite tra squadre.
    ES. Ho 4 squadre: A B C D. Per fare un calendario con queste quattro esce quasi spontaneo.
    1^ giornata
    A-B
    C-D
    2^ giornata
    A-C
    B-D
    3^ giornata
    A-D
    B-C

    Per ottenere questo calendario, non ho usato (almeno volontariamente) nessun algoritmo particolare, l'ho fatto ad occhio.
    Quando le squadre aumentano, diventa più difficile. Soprattutto non si può fare sempre tutto "ad occhio". A me servirebbe appunto un algoritmo che date un "x" numero di squadre, mi crei un calendario AD HOC.

    Avevo pensato alla creazione di una matrice che contenesse tutte le partite. Quindi nel caso di quattro squadre
    codice:
        A   B    C    D
    A  -   AB  AC  AD
    B        -   BC  BD
    C              -  CD
    D                   -
    Dove nella diagonale superiore ottengo tutte le partite del calendario che poi bisogna organizzare nelle varie giornate. Ma come? Mi serve appunto una regola matematica che mi riorganizzi queste partite.

    L'unico vincolo è che la stessa squadra non può giocare più di una partita per giornata (e mi sembra ovvio) e che ogni giornata deve avere un numero fisso di partite che equinvale al numero totale di squadre diviso due.
    Quindi per 4 squadre, ogni giornata avrà 2 partite, per 6 squadre, 3 partite e così via...

    Ovviamente il calendario è realizzabile solo con un numero pari di squadre e maggiori di quattro.

    Scusate se prima non sono stato chiaro, spero che ora possiate aiutarmi meglio

  7. #7
    Per vincoli intendevo cose tipo: necessità (o meno) di gestire i match di andata/ritorno, quante partite in casa consecutive si possono giocare, etc.

    Questo è un semplice programma scritto in Java per la generazione dei calendari.
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  8. #8
    a me serve proprio l'algoritmo perchè devo farlo io il programma
    Serve per il mio sito....

  9. #9
    Un possibile algoritmo è quello implementato nell'esempio proposto, cliccando sul link trovi anche la versione in PHP, nel caso il tuo sito sia sviluppato in tale linguaggio.
    "Se riesci a passare un pomeriggio assolutamente inutile in modo assolutamente inutile, hai imparato a vivere."

  10. #10
    grazie mille.

    Per chi fosse interessato, questo è il cuore dell'algoritmo

    codice:
    // $teams è il numero di squadre
    
    $totalRounds = $teams - 1;
    $matchesPerRound = $teams / 2;
    
    for ($round = 0; $round < $totalRounds; $round++) {
            for ($match = 0; $match < $matchesPerRound; $match++) {
                $home = ($round + $match) % ($teams - 1);
                $away = ($teams - 1 - $match + $round) % ($teams - 1);
                // Last team stays in the same place while the others
                // rotate around it.
                if ($match == 0) {
                    $away = $teams - 1;
                }
                $rounds[$round][$match] = team_name($home + 1, $names) 
                    . " v " . team_name($away + 1, $names);
            }
        }
    Non è che abbia capito molto bene la regola matematica di questo ciclo, però funziona

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.