Pagina 3 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 21 a 30 su 38

Discussione: combinazioni

  1. #21
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Finalmente uno che ha le idee chiare su come è fatto un calendario sportivo...
    allora, visto che ti ci sei messo, ti dò alcuni suggerimenti:

    1) aggiungi srand() prima delle chiamate ad array_rand(), altrimenti i numeri casuali sono poco casuali, come avevi già notato
    2) il motivo per cui il while ti "blocca" è che probabilmente lo manda in loop, perché fa fatica a completare il quadro delle giornate (conseguenza del problema precedente); per lo stesso motivo, ripetere il ciclo $n_squadre*10 volte non è sufficiente a completare la giornata (per questo alla fine ti mancano partite)

    Questo meccanismo è comunque debole, perché ti può sempre capitare che, generando una giornata, le ultime due squadre rimaste si siano già incontrate in una giornata precedente; a questo punto, siccome hai già eliminato quella partita, il ciclo andrebbe comunque in loop.

    C'è anche un altro problema, che deriva dall'array di partite che generi all'inizio.
    In questo array, la prima squadra gioca sempre in casa; la seconda gioca in casa con tutte esclusa la prima; la terza con tutte escluse le prime due, eccetera. L'ultima gioca sempre fuori casa. Ovviamente questo non va bene....

    In sostanza
    Originariamente inviato da luca200
    Ci vuole un algoritmo apposito, non è per niente semplice
    Avevo detto una ca22ata??

  2. #22
    Originariamente inviato da luca200
    Avevo detto una ca22ata??
    Ovviamente no

    C'è anche un altro problema, che deriva dall'array di partite che generi all'inizio.
    Uff si, mi ero accorto che mi ero dimenticato che le partite in casa e fuori casa devono essere pari

    Per non parlare del ritorno di cui non ho idea dei limiti da tenere presente (tipo se devo evitare che le partite di a/r siano ad una certa distanza e non magari l'utima dell'andata e la prima del ritorno).
    ...10 volte non è sufficiente a completare la giornata (per questo alla fine ti mancano partite)
    Con l'header() mi pare si risolva in parte.

    Questo meccanismo è comunque debole, perché ti può sempre capitare che, generando una giornata,...
    Intendi con iil calendario completo , cioé a/r?

    aggiungi srand() ...
    Ottimo, Tnx poi provo


    Mi sarebbe venuta in mente un'altra soluzione che però è semplicemente na pensata. Cioè usare la logica dei terribili Grafi del C, di cui ignoro gran parte della teoria , ma dato che sono masochista magari provo a fare un tentativo.

    Cmq per oggi è meglio che lascio stare se no mi fisso e poi non faccio altro per l'intera settimana (sempre che basti ).

    Cia , tnx per i consigli
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  3. #23
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Per non parlare del ritorno di cui non ho idea dei limiti da tenere presente (tipo se devo evitare che le partite di a/r siano ad una certa distanza e non magari l'utima dell'andata e la prima del ritorno).
    Il ritorno sarebbe l'ultimo dei problemi.
    Una volta ottenuto il calendario di andata, basta ribaltare le partite.

    Intendi con iil calendario completo , cioé a/r?
    No, intendevo esattamente in quello che stavi facendo tu.

    Mi sarebbe venuta in mente un'altra soluzione che però è semplicemente na pensata. Cioè usare la logica dei terribili Grafi del C, di cui ignoro gran parte della teoria , ma dato che sono masochista magari provo a fare un tentativo.
    su questo non metto becco... non ho la minima idea di cosa siano "i terribili Grafi del C". Avrei pensato a un racconto di Tolkien...

  4. #24
    Utente di HTML.it L'avatar di kuarl
    Registrato dal
    Oct 2001
    Messaggi
    1,093
    Originariamente inviato da luca200
    Il ritorno sarebbe l'ultimo dei problemi.
    Una volta ottenuto il calendario di andata, basta ribaltare le partite.


    No, intendevo esattamente in quello che stavi facendo tu.


    su questo non metto becco... non ho la minima idea di cosa siano "i terribili Grafi del C". Avrei pensato a un racconto di Tolkien...
    vabbé basta funzioni

    per i grafi del C non ne ho idea.... ma quelli del java sono una ca22ata il difficile è saperli usare intelligentemente

  5. #25
    Embehh!!!

    non vogliamo andare avanti con queste combinazioni???

    io nel mio (molto) piccolo sono arrivato a modificare quello che avete fatto finora per renderlo univoco per il maggior numero di volte.
    Com'era prima ripeteva anche se alternativamente, solo tre combinazioni (una in particolare!!).

    Ecco a che punto sono arrivato;

    <?php
    mt_srand ((double)microtime()*1000000);
    $TotSquadre = "10";

    foreach(range(1, $TotSquadre) as $num_Squadre)
    {$sq[] .= "$num_Squadre";}

    shuffle($sq);


    $n_squadre = count($sq); // conto le squadre

    # creo l'array
    for ($i=0; $i<$n_squadre; $i++){
    for ($j=$i; $j<$n_squadre; $j++){
    if ($i!=$j)

    $arr[$i][$j] = $sq[$i]." - ".$sq[$j];}}
    # invertendo a dx dell'operatore
    # $i e $j genero le partite del ritorno

    # Genero le giornate
    for ($i=0; $i<$n_squadre-2; $i++)
    {
    $champion[$i] = array();

    # genero 2 array con le chiavi dell'array $arr
    $ri = $col = range(0,$n_squadre-1);
    shuffle($ri);
    shuffle($col);




    #while (count($champion[$i])<floor($n_squadre/2))
    for ($j=0; $j<$n_squadre*10; $j++)
    {
    if (count($champion[$i])==floor($n_squadre/2)) break;


    $x = array_rand($ri);
    $y = array_rand($col);

    if (isset($arr[$ri[$x]][$col[$y]]) && $x!=$y)
    {
    $champion[$i][] = $arr[$ri[$x]][$col[$y]];
    unset($arr[$ri[$x]][$col[$y]]);
    unset($ri[$x], $ri[$y], $col[$x], $col[$y]);
    }
    }
    }
    //asort($champion);

    # Nell'ultima giornata ci infilo le partite rimanenti
    # nell'array $arr
    foreach ($arr as $ary)
    foreach ($ary AS $val)
    $champion[$n_squadre-2][] = $val;


    # Leggo l'array
    for ($i=0; $i<count($champion); $i++)
    {
    if(count($champion[$n_squadre-2])>$n_squadre/2) header("location:".$_SERVER['PHP_SELF']);
    $stampa = "GIORNATA ".($i+1)." | ";
    foreach ($champion[$i] AS $p) $stampa .= $p." | ";
    echo "$stampa
    ";
    }


    ?>


    e le domande sono:
    - ho inserito al posto giusto la funzione srand??
    - l'array $TotSquadre contenitore dei numeri, è per ora composto di soli dieci numeri, ma se io lo volessi di circa venti numeri...... per farlo funzionare senza farlo andare in loop, quali parametri devo cambiare????

    - i grafi del C??? che cosa sono ed a che cosa servono?? mi sono un pochino documentato ma non ci ho capito praticamente nulla!!???

    e per i grafi in java???

    - l'unico neo di questo script è praticamente il fatto che i numeri non vengono ben mescolati:
    - ad esempio il numero 2 viene sempre inserito (calcisticamente parlando!!...) in casa;
    - il numero 1 è sempre in casa tranne che con il 2 (vedi precedente esempio);
    e così via.....

    Non c'è nessun modo per evitare tutto ciò!!???

    vi ringrazio per l'attenzione e mi scuso in anticipo se per voi questa discussione era ormai defunta e sepolta!!

    saluti a tutti!!.
    www.skorpiograph.com - [ PORTFOLIO ]
    ...se vuoi essere aiutato devi aiutare chi ti aiuta ad aiutarti!!!

  6. #26
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    273
    Scusate se rimetto in discussione un post stravecchio..
    Avrei bisogno di sapere se qualcuno è riuscito a risolvere i problemi che vi sono per la creazione di questo calendario sportivo.
    Mi serve e sono settimane che ci sto dietro.
    Qualcuno magari che è riuscito a farlo sarebbe così gentile da postarmi il codice??
    Grazie Cmq!!!

  7. #27
    sarebbe bello!!!!!!!
    www.skorpiograph.com - [ PORTFOLIO ]
    ...se vuoi essere aiutato devi aiutare chi ti aiuta ad aiutarti!!!

  8. #28
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    273
    Chi è così gentile da darci una grossa mano?????

  9. #29
    Raga la vedo tosta come cosa, è un algoritmo molto difficile...

    xké nn chiedete una mano al prof ZIKIKI ???
    oppure chiedete direttamente alla FIFA l'algoritmo XD

  10. #30
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    273
    E' già è MOLTO MOLTO complicato!!!!
    Speriamo in qualche genietto..

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.