Wenn Sie eine Eingabeliste mit nicht leeren Zeichenfolgen angegeben haben, geben Sie eine ASCII-Grafikdarstellung eines Turniers basierend auf den folgenden Zeichenregeln aus:
- Die Anzahl der Saiten ist garantiert quantitativ
2,4,8,16,etc.
- Die ersten beiden Saiten spielen sich gegenseitig und die nächsten beiden Saiten spielen sich gegenseitig und so weiter. Dies ist die erste Runde.
- Wählen Sie für jedes Spiel den Gewinner zufällig mit gleicher Wahrscheinlichkeit.
- In der nächsten Runde spielt der Gewinner des ersten Spiels den Gewinner des zweiten Spiels, der Gewinner des dritten Spiels spielt den Gewinner des vierten Spiels und so weiter. Nachfolgende Runden folgen dem Muster.
- Es gibt schließlich einen Gesamtsieger.
- Für eine hübsche Ausgabe (erforderlich) müssen alle Zeichenfolgen vorangestellt und mit einem Unterstrich versehen werden
_
. - Damit die Klammern richtig ausgerichtet sind, muss jeder Eintrag mit
_
der gleichen Länge für diese Runde aufgefüllt werden. - Sie können wählen, ob die Auffüllung vorangestellt oder angehängt werden soll, solange sie konsistent ist.
- Stattdessen können Sie festlegen, dass alle Zeichenfolgen vorab die gleiche Länge haben und nicht pro Runde. Was auch immer für Ihren Code Golfspieler ist.
Weitere Regeln
- Führende oder nachfolgende Zeilenumbrüche oder Leerzeichen sind optional, sofern die Zeichen selbst korrekt ausgerichtet sind.
- Es ist entweder ein vollständiges Programm oder eine Funktion zulässig. Bei einer Funktion können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Fügen Sie nach Möglichkeit einen Link zu einer Online-Testumgebung hinzu, damit andere Benutzer Ihren Code ausprobieren können!
- Standardlücken sind verboten.
- Dies ist Codegolf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Byte) gewinnt.
Beispiele
Beispiel mit Städten ['Boston', 'New York', 'Charlotte', 'Atlanta', 'St. Paul', 'Chicago', 'Los Angeles', 'Phoenix']
:
_Boston______
\_New York____
_New York____/ \
\_New York_
_Charlotte___ / \
\_Charlotte___/ \
_Atlanta_____/ \
\_St. Paul_
_St. Paul____ /
\_St. Paul____ /
_Chicago_____/ \ /
\_St. Paul_/
_Los Angeles_ /
\_Los Angeles_/
_Phoenix_____/
Beispiel mit ['Lions', 'Tigers', 'Bears', 'Oh My']
:
_Lions__
\_Tigers_
_Tigers_/ \
\_Tigers_
_Bears__ /
\_Bears__/
_Oh My__/
Antworten:
Kohle ,
9279 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Benötigt eine Leerzeile, um das Ende der Eingabe zu markieren. Erläuterung:
Initialisieren Sie die Variable
q
. Dies hält die Größe der Zick-Zack-Linien, dh die Hälfte der Lücke zwischen den Reihen.Lesen Sie nicht leere Eingabezeilen in das Array
u
. Die Zeilen werden beim_
Einlesen automatisch von s umgeben , obwohl sie noch nicht aufgefüllt sind.Schleife solange noch Saiten übrig sind.
Berechnen Sie die Breite der größten Zeichenfolge in
e
.Berechnen Sie die Lücke zwischen den Zeilen in
d
.Drucken Sie für jedes Team die Füllung aus, drucken Sie das Team aus, und fahren Sie dann mit dem nächsten Team fort.
Wählen Sie für jedes andere Team zufällig zwischen diesem Team oder dem vorherigen Team aus. (Wenn nur noch ein Team übrig ist, wird eine leere Liste erstellt.)
Wenn noch Teams übrig sind, ziehe die Zickzacke, die sie paarweise verbinden.
Verdoppeln Sie die Länge der Zickzacklinien jedes Mal.
quelle
▷vS
sowieso etwas dafür tun.Python 2 ,
379364 BytesProbieren Sie es online!
quelle