Toon posts:

Random wedstrijd kalender

Pagina: 1
Acties:

Verwijderd

Topicstarter
Dit zou niet zo moeilijk moeten zijn,maar sinds ik op vakantie ben geweest kan ik niet meer nadenken. Nadat ik het getypt had ben ik eerst een half uur bezig geweest om het draaiend te krijgen want ik had er echt alles door elkaar gegooid; van Pascal tot aan VB, het kwam er allemaal in voor :D

Maar nu het geen scripts errors meer geeft heb ik er een uur naar gekeken, maar kan niet bedenken waar het nou fout gaat.

De bedoeling is dat er een wedstrijd kalender wordt genereerd, dus er zijn bijvoorbeeld 18 clubs die 2 keer tegen elkaar spelen, dan zijn er per ronde 9 wedstrijden en 34 ronden. En elke wedstrijd mag natuurlijk maar 1 keer voor komen.

Dus had ik bedacht om een 2D arrray te maken:
[sub]$wedstrijd[$ronde][$thuis_club]=$uit_club;[/sub]
Waar de ronde,thuis en uit club in opgeslagen worden.

Om vervolgens met een while do de rondes langs te lopen:
[sub]while ($ronde<(($aantalclubs*2)-2))
{
echo "---------------------<br>\n";
$ronde++;
}[/sub]


Waarin de wedstrijden worden vastgelegd.
[sub]while ($thuis_club<=($aantalclubs/2))
{
$wedstrijd[$ronde][$thuis_club]=$uit_club;
echo "".$thuis_club."-".$wedstrijd[$ronde][$thuis_club]."<br>";
$thuis_club++;
}
[/sub]


Vervolgens had ik dit getypt om te controleren of een wedstrijd al voor komt waarna er een nieuwe $uit_club nummer wordt genereerd en de loop weer opnieuw wordt gestart.
$check_ronde=0;
$check_club=0;
[sub]
$check_ronde=0;
$check_club=0;
while ($check_ronde<(($aantalclubs*2)-2)) {
if ($check_club>=($aantalclubs/2)) {$check_club=0; $check_ronde++;}

if (($wedstrijd[$check_ronde][$check_club]==$uit_club || $thuis_club==$uit_club))
{
$uit_club=rand(1,9);
$check_ronde=0;
$check_club=0;
}
$check_club++;
}
[/sub]

PHP:
1
&lt;?$aantalclubs=18;$ronde=1;while ($ronde&lt;(($aantalclubs*2)-2)) {   $thuis_club=1;   while ($thuis_club&lt;=($aantalclubs/2)){//-------------------------------------------------------------------------------------$check_ronde=0;$check_club=0;while ($check_ronde&lt;(($aantalclubs*2)-2)) {    if ($check_club&gt;=($aantalclubs/2)) {$check_club=0; $check_ronde++;}        if (($wedstrijd[$check_ronde][$check_club]==$uit_club  || $thuis_club==$uit_club))        {        $uit_club=rand(1,9);        $check_ronde=0;        $check_club=0;        }    $check_club++;}//-------------------------------------------------------------------------------------   $wedstrijd[$ronde][$thuis_club]=$uit_club;   echo &quot;&quot;.$thuis_club.&quot;-&quot;.$wedstrijd[$ronde][$thuis_club].&quot;&lt;br&gt;&quot;;   $thuis_club++;   }echo &quot;---------------------&lt;br&gt;\n&quot;;$ronde++;}?&gt;

Maar om een of andere reden blijft die hangen:
Fatal error: Maximum execution time of 30 seconds exceeded
en ik kan maar niet bedenken waarom, dus als iemand het wel ziet of een andere manier weet laat het horen (als mensen in je buurt vreemd kijken als je tegen je PC praat mag je het ook wel typen :P)

Verwijderd

Maar om een of andere reden blijft die hangen:
Fatal error: Maximum execution time of 30 seconds exceeded
Zoek eens naar oneindige lussen (debuggen heet dat!)

Verwijderd

ik vind hem niet.....

Verwijderd

Zet in elke while gewoon een of andere echo, en je hebt hem onmiddellijk.

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
Dit algoritme is redelijk verwant aan bogosort. Maak er een rotzooi van en check of het acceptabel is.

De nette methode is een standaard wedstrijdschema te nemen, met rondes 1..N en clubs 0..N. Vervolgens gebruik je een standaard shuffle om clubs aan de nummers 0..N toe te wijzen, en data aan rondes 1..N. ( Ronde '1' uit het originele schema is dus niet noodzakelijkerwijs de eerste datum meer ).

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 09:50

mulder

ik spuug op het trottoir

Ik zie dat die $check_ronde op nul word gezet in een while loop. Kijk daar eens naar, lijkt me niet verstandig.

oogjes open, snaveltjes dicht


  • Kama
  • Registratie: Mei 2002
  • Laatst online: 01-09 14:19

Kama

Aritifical Intelligenticus

Op maandag 22 juli 2002 16:03 schreef Cpt_RenoRichard het volgende:
ik vind hem niet.....
PHP:
1
&lt;?while ($check_ronde&lt;(($aantalclubs*2)-2)) {    if ($check_club&gt;=($aantalclubs/2)) {$check_club=0; $check_ronde++;}        if (($wedstrijd[$check_ronde][$check_club]==$uit_club  || $thuis_club==$uit_club))        {        $uit_club=rand(1,9);        $check_ronde=0;        $check_club=0;        }    $check_club++;}?&gt;

In die if zet je $check_rond op 0. Als die if altijd, of "vaak" van toepassing is, gaat $check_rond dus op 0 en blijft ie rondzingen (dan is $check_ronde<(($aantal... )

Kijk daar es naar...

Niels

Pagina: 1