Spielplan für 4 Gruppen zu je 6 Teams auf 2 Feldern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Spielplan für 4 Gruppen zu je 6 Teams auf 2 Feldern

    Hallöchen zusammen,
    ich versuche derzeit unseren Excel-Spielplan in PHP zu überführen. Eigentlich bin ich auch shon fertig - wenn da nicht dieses Problem mit der Verteilung der Spiele wäre. Jedes Team soll abwechselnd auf Platz A und B spielen.

    zur Verfügung stehen diese Arrays:
    PHP-Code:
    $allteams = array ("T-1","T-4","T-3","T-4","T-5","T-6","T-7","T-8","T-9","T-10","T-11","T-12","T-13","T-14","T-15","T-16","T-17","T-18","T-19","T-20","T-21","T-22","T-23","T-24"); // Teamnamen werdem aus einer Datei gelesen
    $games = array ("1:6","2:5","3:4","6:2","3:1","4:5","3:6","4:2","5:1","6:4","5:3","1:2","5:6","1:4","2:3"); // Spielpaarungen fix
    $gruppen = array ( array("0","1","2","3","4","5"),
               array(
    "6","7","8","9","10","11"),
               array(
    "12","13","14","15","16","17"),
               array(
    "18","19","20","21","22","23")); // Zuordnung Teams in Gruppen via HTML Form​ 
    Bisher sieht mein Ansatz wie folgt aus:

    PHP-Code:
    echo "<table>";
    $num 1;

    for(
    $i 0$i count($games); $i++)
    {
      for(
    $j=0$j count($gruppen); $j++)
      {
        if(
    $num%== 0)
        {
          
    $field "B";
        }
        else
        {
          
    $field "A";
        }
        echo 
    "<tr>";
        
    $ids explode(":",$games[$i]);
        echo 
    "<td>".$num."</td>";
        echo 
    "<td>".$field."</td>";
        echo 
    "<td>".$allteams[intval($gruppen[$j][($ids[0]-1)])]."</td>";
        echo 
    "<td><input type='text' name='".$num."-A' value='' size='4' style='text-align:center;'></td>";
        echo 
    "<td> : </td>";
        echo 
    "<td><input type='text' name='".$num."-B' value='' size='4' style='text-align:center;'></td>";
        echo 
    "<td>".$allteams[intval($gruppen[$j][($ids[1]-1)])]."</td>";
        echo 
    "<td><input type='submit' name='add' value='&#10003'/></td>";
        echo 
    "</tr>";
        echo 
    "<input type='hidden' name='".$num."' value='".intval($gruppen[$j][($ids[0]-1)]).",".intval($gruppen[$j][($ids[1]-1)])."'>";
        
    $num++;
      }
        
    array_push($gruppenarray_shift($gruppen));
    }
    echo 
    "</table>";​​ 
    Via array_push($gruppen, array_shift($gruppen)); habe ich versucht die Reihenfolge im Array zu ändern um so eine Variation für die Veteilung auf A und B Platz zu erreichen. Leider passt es nicht so wie ich es mir gewünscht habe:
    T01 spielt AAABB
    T02 spielt BBBBA
    T03 spielt AAAAA

    Hat hier jemand einen Tipp was ich anders machen könnte? Ich verbiege mir schon Tage das Hirn aber stehe wohl wie der Ochse vor dem Berg...
    Man könnte bestimmt auch die Spielpaarungen anpassen, wichtig wäre nur, dass genug Abstand zwischen den Spielen einer Mannschaft ist.



    Dank und Gruß

  • #2
    Hey, hallöchen!

    Du musst die Spiele so durchgehen, dass die Platzierung kontrolliert wechseln, dass jedes Team auf den Plätzen spielt. Hier ist ein überarbeiteter Ansatz:


    PHP-Code:
    <?php
    echo "<table>";
    $num 1;
    $fieldA true// Start mit Platz A
    $teamLastField = []; // Speichert den letzten Platz für jedes Team

    for($i 0$i count($games); $i++) {
    $ids explode(":"$games[$i]);

    // Bestimme die Teams in diesem Spiel
    $team1 intval($ids[0]) - 1;
    $team2 intval($ids[1]) - 1;

    // Bestimme, welche Gruppe die Teams enthält
    $group1 floor($team1 6);
    $group2 floor($team2 6);

    // Hole die tatsächlichen Team-IDs aus den Gruppen
    $team1ID $allteams[$gruppen[$group1][$team1 6]];
    $team2ID $allteams[$gruppen[$group2][$team2 6]];

    // Bestimme den Platz basierend auf dem letzten gespielten Platz
    if (isset($teamLastField[$team1ID]) && $teamLastField[$team1ID] === "A") {
    $field "B";
    } elseif (isset(
    $teamLastField[$team1ID]) && $teamLastField[$team1ID] === "B") {
    $field "A";
    } else {
    $field $fieldA "A" "B";
    $fieldA = !$fieldA// Wechsle den Platz für das nächste Spiel
    }

    // Setze den letzten Platz für beide Teams
    $teamLastField[$team1ID] = $field;
    $teamLastField[$team2ID] = $field;

    echo 
    "<tr>";
    echo 
    "<td>".$num."</td>";
    echo 
    "<td>".$field."</td>";
    echo 
    "<td>".$team1ID."</td>";
    echo 
    "<td><input type='text' name='".$num."-A' value='' size='4' style='text-align:center;'></td>";
    echo 
    "<td> : </td>";
    echo 
    "<td><input type='text' name='".$num."-B' value='' size='4' style='text-align:center;'></td>";
    echo 
    "<td>".$team2ID."</td>";
    echo 
    "<td><input type='submit' name='add' value='&#10003'/></td>";
    echo 
    "</tr>";
    echo 
    "<input type='hidden' name='".$num."' value='".$team1ID.",".$team2ID."'>";
    $num++;
    }
    echo 
    "</table>";
    ?>
    In diesem Ansatz:
    1. Verfolgen wir, welches Team zuletzt auf welchem ​​Platz gespielt hat, und wechseln den Platz basierend auf dieser Information.
    2. Beginnen wir mit Platz A und wechseln ab, wenn das nächste Team bereits auf dem gleichen Platz gespielt hat.
    3. Dadurch wird sichergestellt, dass die Teams auf Platz A und B spielen.
    Teste diesen Code und überprüfe, ob er die Spiele gleichmäßiger verteilt. Falls es noch immer nicht perfekt passt, kannst du die Logik weiter anpassen oder zusätzliche Regeln einbauen, um sicherzustellen, dass der Abstand zwischen den Spielen einer Mannschaft gewahrt bleibt.

    Viel Erfolg und liebe Grüße, Nico
    Webspace , Php

    Kommentar


    • #3
      Zitat von Nico_Schubert Beitrag anzeigen
      Hey, hallöchen!

      Du musst die Spiele so durchgehen, dass die Platzierung kontrolliert wechseln, dass jedes Team auf den Plätzen spielt. Hier ist ein überarbeiteter Ansatz:


      PHP-Code:
      <?php
      echo "<table>";
      $num 1;
      $fieldA true// Start mit Platz A
      $teamLastField = []; // Speichert den letzten Platz für jedes Team

      for($i 0$i count($games); $i++) {
      $ids explode(":"$games[$i]);

      // Bestimme die Teams in diesem Spiel
      $team1 intval($ids[0]) - 1;
      $team2 intval($ids[1]) - 1;

      // Bestimme, welche Gruppe die Teams enthält
      $group1 floor($team1 6);
      $group2 floor($team2 6);

      // Hole die tatsächlichen Team-IDs aus den Gruppen
      $team1ID $allteams[$gruppen[$group1][$team1 6]];
      $team2ID $allteams[$gruppen[$group2][$team2 6]];

      // Bestimme den Platz basierend auf dem letzten gespielten Platz
      if (isset($teamLastField[$team1ID]) && $teamLastField[$team1ID] === "A") {
      $field "B";
      } elseif (isset(
      $teamLastField[$team1ID]) && $teamLastField[$team1ID] === "B") {
      $field "A";
      } else {
      $field $fieldA "A" "B";
      $fieldA = !$fieldA// Wechsle den Platz für das nächste Spiel
      }

      // Setze den letzten Platz für beide Teams
      $teamLastField[$team1ID] = $field;
      $teamLastField[$team2ID] = $field;

      echo 
      "<tr>";
      echo 
      "<td>".$num."</td>";
      echo 
      "<td>".$field."</td>";
      echo 
      "<td>".$team1ID."</td>";
      echo 
      "<td><input type='text' name='".$num."-A' value='' size='4' style='text-align:center;'></td>";
      echo 
      "<td> : </td>";
      echo 
      "<td><input type='text' name='".$num."-B' value='' size='4' style='text-align:center;'></td>";
      echo 
      "<td>".$team2ID."</td>";
      echo 
      "<td><input type='submit' name='add' value='&#10003'/></td>";
      echo 
      "</tr>";
      echo 
      "<input type='hidden' name='".$num."' value='".$team1ID.",".$team2ID."'>";
      $num++;
      }
      echo 
      "</table>";
      ?>
      In diesem Ansatz:
      1. Verfolgen wir, welches Team zuletzt auf welchem ​​Platz gespielt hat, und wechseln den Platz basierend auf dieser Information.
      2. Beginnen wir mit Platz A und wechseln ab, wenn das nächste Team bereits auf dem gleichen Platz gespielt hat.
      3. Dadurch wird sichergestellt, dass die Teams auf Platz A und B spielen.
      Teste diesen Code und überprüfe, ob er die Spiele gleichmäßiger verteilt. Falls es noch immer nicht perfekt passt, kannst du die Logik weiter anpassen oder zusätzliche Regeln einbauen, um sicherzustellen, dass der Abstand zwischen den Spielen einer Mannschaft gewahrt bleibt.

      Viel Erfolg und liebe Grüße, Nico
      Vielen Dank für die Hilfestellung!
      Aber auch hier läuft es nicht wie geplant - nehmen wir uns mal T-1 als Beispiel, dann ist die Verteilung: ABBAB
      Trotzdem besser als mein Ansatz Mal schauen, evtl kann ich darauf aufbauend ans Ziel kommen.

      Beste Grüße

      Kommentar

      Lädt...
      X