Biorąc pod uwagę listę wejściową niepustych ciągów, wypisz grafikę ASCII turnieju, w oparciu o następujące reguły losowania:
- Ilość łańcuchów jest gwarantowana na ilość
2,4,8,16,etc.
- Pierwsze dwa struny grają się nawzajem, a następne dwa grają nawzajem i tak dalej. To jest pierwsza runda.
- Dla każdej gry wybierz zwycięzcę losowo z jednakowym prawdopodobieństwem.
- W następnej rundzie zwycięzca pierwszej gry gra zwycięzcę drugiej gry, zwycięzca trzeciej gry gra zwycięzcę czwartej gry i tak dalej. Kolejne rundy są zgodne ze wzorem.
- W końcu jest jeden ogólny zwycięzca.
- Aby uzyskać ładne wyniki (wymagane), wszystkie ciągi muszą być poprzedzone i dołączone ze znakiem podkreślenia
_
. - Aby nawiasy były odpowiednio ustawione, każde wejście musi być wypełnione,
_
aby wszystkie były tej samej długości dla tej rundy. - Możesz wybrać, czy wypełnienie ma być dołączane, czy dopinane, o ile jest spójne.
- Zamiast tego możesz wybrać wstępne wypełnienie wszystkich łańcuchów, aby były tej samej długości, a nie na rundę. W zależności od tego, który kod jest bardziej golfowy.
Dalsze zasady
- Wiodące lub końcowe znaki nowej linii lub białe znaki są opcjonalne, o ile same znaki są poprawnie ustawione w linii.
- Dopuszczalny jest pełny program lub funkcja. Jeśli funkcja, możesz zwrócić dane wyjściowe zamiast je drukować.
- Jeśli to możliwe, dołącz link do internetowego środowiska testowego, aby inni mogli wypróbować Twój kod!
- Standardowe luki są zabronione.
- To jest golf golfowy, więc obowiązują wszystkie zwykłe zasady gry w golfa, a wygrywa najkrótszy kod (w bajtach).
Przykłady
Przykład z miastami ['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_____/
Przykład z ['Lions', 'Tigers', 'Bears', 'Oh My']
:
_Lions__
\_Tigers_
_Tigers_/ \
\_Tigers_
_Bears__ /
\_Bears__/
_Oh My__/
Odpowiedzi:
Węgiel ,
9279 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Potrzebuje pustej linii do oznaczenia końca danych wejściowych. Wyjaśnienie:
Zainicjuj zmienną
q
. To utrzymuje wielkość zygzaków, tj. Połowę odstępu między rzędami.Wczytaj niepuste linie wejściowe do tablicy
u
. Linie są automatycznie otaczane przez_
s podczas ich wczytywania, chociaż nie są jeszcze wypełnione.Zapętlaj, dopóki pozostaną jeszcze ciągi.
Oblicz szerokość największego ciągu w
e
.Oblicz odstęp między rzędami
d
.Dla każdego zespołu wydrukuj wypełnienie, wydrukuj zespół, a następnie przejdź do następnego zespołu.
Dla każdej innej drużyny losowo wybieraj między tą lub poprzednią drużyną. (Pamiętaj, że jeśli pozostanie tylko jeden zespół, powstanie pusta lista).
Jeśli pozostały jeszcze drużyny, narysuj zygzaki łączące je parami.
Za każdym razem podwoj długość zygzaków.
źródło
▷vS
.Python 2 ,
379364 bajtyWypróbuj online!
źródło