Der heutige Post ist eigentlich mehr als 10 Jahre alt, war aber trotzdem noch interessant. Ein paar kleine Änderungen und schon ist der Artikel wieder ganz passabel. Zur Einführung: Ich hab vor einer gefühlten Ewigkeit an einem Bowling-Projekt gearbeitet, dass dann auch in Freizeitligen genutzt wurde.
In einem Bowlingcenter in Berlin wurde eine Liga gestartet, die etwa ein Jahr laufen sollte und bei der jeder der 52 Teilnehmer gegen jeden anderen spielen musste. Dabei kann jeder Bowler selbst entscheiden, wann er die Spiele absolviert. Nur der Gegner steht eben fest. Dementsprechend ist also keine gerechte Verteilung der Bahnen notwendig und auf die üblichen Bahnbelegungstabellen kann verzichtet werden.
Ein Turnier dieser Art bezeichnet man auch als Round Robin und der zu verwendete Algorithmus trägt den gleichen Namen. Implementiert man diesen Algorithmus geht man üblicherweise davon aus, dass die Anzahl der Spieler gerade ist. Ist dem nicht so, wird ein so genannter Blindspieler mit in die Auswertung genommen, der als dienstbarer Geist die Aufgabe hat, immer gegen einen anderen zu verlieren.
In PHP sieht das Ganze dann so aus:
Der Algorithmus benötigt als Parameter einen geraden Zahlenwert, weshalb der Konstruktor hier den Eingabewert abprüft und im Bedarfsfall ein Spieler hinzufügt. Geliefert wird immer ein Array.