Archiv verlassen und diese Seite im Standarddesign anzeigen : Spielplan mal wieder
als erstes zu meiner verteidigung ;) ich habe die suchfunktion ausgiebig benutzt, aber nicht wirklich was gefunden was mir weitergeholfen hätte :(
Als hier mein "Problem" :
Ich habe 8 Vereine,
jeder soll gegen jeden 1x spielen - in einer Saison die logischerweise 7 Spieltage hat - jeder nur 1x gegen einen anderen Verein.
for($i = 0; $i < count($verein); $i++) {
for($j = 0; $j < count($verein); $j++) {
if($j > $i) echo $verein[$i] . " vs. " . $verein[$j] . "<br>";
}
}
über diesen Status bin ich leider nicht wirklich hinausgekommen.
Es währe echt sehr toll wenn hier jmd. eine Lösung oder einen Lösungsvorschlag für mich parat hätte.
PS: was natürlich noch idealer währe, aber nur wenn es möglich ist und net zuviel arbeit machen würde - an dieser Stelle seit ihr gefordert ;)) - währe das ganze für eine Anzahl von X Vereinen. Aber sowas brauche ich net wirklich : )
Also ich bedanke mich schonmal für alle Antworten und hoffe ihr könnt mir helfen
davidovich 11-05-2005, 20:45 meinste sowas?
<?php
$vereine = array('Verein 1', 'Verein 2', 'Verein 3', 'Verein 4', 'Verein 5', 'Verein 6');
function spielplan($vereine, $j=0) {
$num = count($vereine);
for ($i=$j; $i<$num-1; $i++) {
$return .= $vereine[$j] ." vs ". $vereine[($i+1)] ."<br>\n\r";
}
if ($j<$num) $return .= spielplan($vereine, $j+1);
return $return;
}
echo spielplan($vereine);
?>
mrhappiness 11-05-2005, 22:27 $vereine = array(
'Verein 1', 'Verein 2', 'Verein 3',
'Verein 4', 'Verein 5', 'Verein 6');
function spielplan($vereine) {
$plan = array();
while (count($vereine) > 1) {
$team_1 = array_shift($vereine);
foreach ($vereine as $verein)
$plan[] = array($team_1, $verein);
}
return $plan;
}Das gibt dir alle Kombinationen
ja sowas in der art^^ aber da sist ja auch net so anders von dem was ich schon hatte, mein problem ist die zuordnung der partien auf die 7 spieltage
hat den niemand eine idee ? :(
davidovich 13-05-2005, 09:38 Wenn ich wieder @home bin, werd ich mir das problem mal anschauen
Quetschi 13-05-2005, 11:00 Hab nicht Zeit richtig drüber nachzudenken, ich denke mit einem mehrdimensionalen Array sollte es zu lösen sein.
Mal so als grober Denkansatz:
Spielplan in einem Array abbilden:
$ar_spielplan[tag1][spiel1][heim] = "Verein1";
$ar_spielplan[tag1][spiel1][gast] = "Verein2";
$ar_spielplan[tag1][spiel2][heim] = "Verien3";
$ar_spielplan[tag1][spiel2][gast] = "Verein4";
.
.
.
Die Erstellung dieses Arrays muss natürlich automatisch erfolgen und bevor ein Element erstellt wird muss geprüft werden ob am entsprechenden Spieltag bereits ein Verein in einem Spiel steht.
Die Schleife(n) so zu gestalten das alle Möglichkeiten ausgeschöpft werden wird halt letztlich die größte Schwierigkeit an der ganzen Geschichte sein.
Werd mich evtl. am WE mal dran versuchen, diese Aufgabenstellung gefällt mir irgendwie :)
Gruss
Quetschi
davidovich 13-05-2005, 14:46 So hab mla ein wenig rumprobiert, könnte viell. noch ein wenig buggy sein :( :
<?php
$vereine = array('Verein 1', 'Verein 2', 'Verein 3',
'Verein 4', 'Verein 5', 'Verein 6');
function spielplan($vereine, $spieltage) {
$spiele = $spielplan = array();
while (count($vereine) > 1) {
$team_1 = array_shift($vereine);
foreach ($vereine as $verein)
$spiele[] = array($team_1, $verein);
}
$num_spiele = count($spiele);
$spiele_pro_tag = floor($num_spiele / $spieltage);
for ($i=1;$i<=$spieltage;$i++) {
for ($j=1;$j<=$spiele_pro_tag;$j++) {
$key = array_rand($spiele, 1);
$spielplan['spieltag'.$i]['Spiel'.$j] = $spiele[$key];
unset($spiele[$key]);
}
}
foreach ($spiele as $spiel) {
$spieltag = rand(1, $spieltage);
$spiel_nr = (count($spielplan['spieltag'.$spieltag])+1);
$spielplan['spieltag'.$spieltag]['Spiel'.$spiel_nr] = $spiel;
}
return $spielplan;
}
echo "<pre>";print_r(spielplan($vereine, 7));echo"</pre>";
?>
hmm funktioniert noch nicht so ganz:(
er gibt mir folgendes aus :^^
Array
(
[spieltag1] => Array
(
[Spiel1] => Array
(
[0] => Verein 2
[1] => Verein 6
)
[Spiel2] => Array
(
[0] => Verein 1
[1] => Verein 3
)
)
[spieltag2] => Array
(
[Spiel1] => Array
(
[0] => Verein 2
[1] => Verein 5
)
[Spiel2] => Array
(
[0] => Verein 2
[1] => Verein 3
)
)
[spieltag3] => Array
(
[Spiel1] => Array
(
[0] => Verein 1
[1] => Verein 4
)
[Spiel2] => Array
(
[0] => Verein 5
[1] => Verein 6
)
)
[spieltag4] => Array
(
[Spiel1] => Array
(
[0] => Verein 1
[1] => Verein 2
)
[Spiel2] => Array
(
[0] => Verein 2
[1] => Verein 4
)
)
[spieltag5] => Array
(
[Spiel1] => Array
(
[0] => Verein 3
[1] => Verein 4
)
[Spiel2] => Array
(
[0] => Verein 1
[1] => Verein 6
)
)
[spieltag6] => Array
(
[Spiel1] => Array
(
[0] => Verein 4
[1] => Verein 6
)
[Spiel2] => Array
(
[0] => Verein 1
[1] => Verein 5
)
[Spiel3] => Array
(
[0] => Verein 3
[1] => Verein 5
)
)
[spieltag7] => Array
(
[Spiel1] => Array
(
[0] => Verein 3
[1] => Verein 6
)
[Spiel2] => Array
(
[0] => Verein 4
[1] => Verein 5
)
)
)
davidovich 13-05-2005, 16:05 und, was ist daran falsch?
Edit:
Machst halt aus folgendem:
echo "<pre>";print_r(spielplan($vereine, 7));echo"</pre>";
folgendes:
$spielplan = spielplan($vereine, 7));
und schon kannste weiterarbeiten mit dem Array
Quetschi 13-05-2005, 16:12 Habs auch mal ausprobiert, bei 6 Mannschaften sollten eigentlich pro Spieltag 3 Begegnungen stattfinden, was insgesamt 5 Spieltage ergeben würde. Habs deshalb mal mit echo "<pre>";print_r(spielplan($vereine, 5));echo"</pre>"; aufgerufen, da ist's aber gescheitert, weil am gleichen Spieltag manche Mannschaften mehrere Spiele bestreiten hätten müssen.
Ich werd mich am WE mal dran versuchen, bei einer ungeraden Mannschaftszahl sollte z.B. auch berücksichtigt werden dass jede Mannschaft einmal pro Saison Spielfrei bekommt usw...
davidovich 13-05-2005, 16:24 weil am gleichen Spieltag manche Mannschaften mehrere Spiele bestreiten hätten müssen
hab versucht das zu vermeiden, hatte aber irgendwann keine Lust mehr. Mal schauen, heut' abend hab ich au genug Zeit zum testen
es müssen bei 7 spieltagen an jedem spieltag 4 partien gespielt werden^^
oh sorry hab garnicht gesehen das schon eine 2te seite dazu gekommen ist :)
also großes dankeschön aufjeden fall erstmal an euch das ihr mir so bereitwillig unter die arme greift :p
davidovich 13-05-2005, 17:57 Original geschrieben von eXo1234
es müssen bei 7 spieltagen an jedem spieltag 4 partien gespielt werden^^
bei 6 Vereinen wird das aber nicht klappen ;)
Quetschi 13-05-2005, 17:59 @davidovich
siehe Ausgangsposting, er hat 8 Mannschaften!
davidovich 13-05-2005, 18:30 oh, ok
bei miener version werden ja auch 4 partien gespielt pro Tag
[Insgesamt] => 28
[spieltag1] => Array
(
[Spiel1] => Array
(
[0] => Verein 1
[1] => Verein 4
)
[Spiel2] => Array
(
[0] => Verein 4
[1] => Verein 5
)
[Spiel3] => Array
(
[0] => Verein 3
[1] => Verein 4
)
[Spiel4] => Array
(
[0] => Verein 3
[1] => Verein 5
)
)
[spieltag2] => Array
(
[Spiel1] => Array
(
[0] => Verein 1
[1] => Verein 5
)
[Spiel2] => Array
(
[0] => Verein 5
[1] => Verein 7
)
[Spiel3] => Array
(
[0] => Verein 4
[1] => Verein 6
)
[Spiel4] => Array
(
[0] => Verein 2
[1] => Verein 4
)
)
...
das ewinzigste was halt wikrlich fehlt ist das amnche mannschaften 2mal am tag spielen, da werd ich aber später mal nach schauen (muss erstmal drüber nachdenekn ;) )
hm wenn ich ehrlich bin durchschaue ich das jetzt net mehr alles :D
von daher währe es echt nett wenn du bzw ihr es so anstellen könntest, dass ich als ausgabe dann echt "einfach" nur noch nen spielplan vor mir hab :)
ich blick da echt net mehr durch gerade ^^
Google spuckt dazu folgendes aus:
http://www.tutorials.de/showthread.php?p=1050768#post1050768
|
-
- |