Biorąc pod uwagę jedną liczbę całkowitą, z x
której 0 <= x <= 91
wyprowadzany jest stos butelek piwa z brakiem tylu butelek (i półek). Dla uproszczenia pokażę tylko 6 pierwszych butelek i to, co by to było dla każdego z pierwszych danych wejściowych.
Oto stos butelek, każda liczba to butelka, którą należy usunąć dla tego wkładu (indeksowany 1):
Uwaga: używamy 91 zamiast 99, ponieważ 99 spowodowałoby niestabilny stos butelek.
Przykład
Brak 0 butelek ( x=0
):
|=|
| |
| |
/ \
. .
|-----|
| |
|-----|
|_____|
=============
|=| |=|
| | | |
| | | |
/ \ / \
. . . .
|-----| |-----|
| | | |
|-----| |-----|
|_____| |_____|
=====================
|=| |=| |=|
| | | | | |
| | | | | |
/ \ / \ / \
. . . . . .
|-----| |-----| |-----|
| | | | | |
|-----| |-----| |-----|
|_____| |_____| |_____|
=============================
[THERE ARE MORE UNDER THIS]
Aby uzyskać pełne wyjście 0, zobacz tutaj: https://pastebin.com/ZuXkuH6s
Z 1
butelki brakuje ( x=1
):
|=| |=|
| | | |
| | | |
/ \ / \
. . . .
|-----| |-----|
| | | |
|-----| |-----|
|_____| |_____|
=====================
|=| |=| |=|
| | | | | |
| | | | | |
/ \ / \ / \
. . . . . .
|-----| |-----| |-----|
| | | | | |
|-----| |-----| |-----|
|_____| |_____| |_____|
=============================
[THERE ARE MORE UNDER THIS]
Jeszcze raz pierwsze dwa wiersze stąd: https://pastebin.com/ZuXkuH6s (z 1 usuniętym) ...
Brak 2 butelek:
|=|
| |
| |
/ \
. .
|-----|
| |
|-----|
|_____|
=====================
|=| |=| |=|
| | | | | |
| | | | | |
/ \ / \ / \
. . . . . .
|-----| |-----| |-----|
| | | | | |
|-----| |-----| |-----|
|_____| |_____| |_____|
=============================
[THERE ARE MORE UNDER THIS]
[DODATKOWE WEJŚCIA USUNIĘTE]
Brak 91 butelek ( n = 91
):
:(
Musisz wyrazić nieszczęśliwą twarz, bo zabrakło Ci piwa.
Zasady
- Butelki należy wyjmować od lewej do prawej.
- Półki są wyjmowane, gdy na półkach nie pozostaje piwo.
- Dla wartości 0 wyprowadzasz 91 butelek ułożonych w trójkąt.
- Dolny rząd ma 13 butelek, górny ma 1.
- 1 miejsce między każdą butelką na każdej półce.
- Półki należy wprowadzać między każdym rzędem butelek.
- Półki mogą być używane
=
,-
lub#
jako postać. - Półki muszą być 3 szersze (z każdej strony) niż butelki, które trzymają.
- Półki mogą być używane
- To jest golf golfowy , wygrana o najniższej liczbie bajtów.
Odpowiedzi:
Węgiel drzewny ,
9991 bajtówWypróbuj online! Link jest do pełnej wersji kodu. W rzeczywistości prawdziwa wersja ma tylko
8370 bajtów:Wyjaśnienie:
Wypełnij tablicę, podając informacje o tym, gdzie idą półki i jak długo są.
Wydrukuj nieszczęśliwą twarz, chociaż zostanie ona natychmiast zastąpiona pierwszą butelką piwa (jeśli istnieje).
Zapętlić pozostałe butelki piwa.
Sprawdź, czy należy narysować półkę.
Wydrukuj półkę i ustaw gotową do narysowania następnej butelki nad nią.
Narysuj butelkę i ustaw gotową do narysowania kolejnej butelki.
źródło
for
pętli. To jestwhile
pętla, więc muszę zrobić coś więcej ręcznie.for
pętla była drogą do przejścia przez cały czas ... 13 bajtów zapisanych! (Cóż, mam trochę szczęścia z łatwością wypełniania mojej tablicy.)Python 3 ,
306299265253255252247244 bajtówSzybka próba, można zoptymalizować
Edycja: -2 bajty dzięki @MrXcoder
Edycja: -32 bajtów, ponieważ końcowe spacje nie są potrzebne
Edycja: -12 bajtów poprzez połączenie dwóch funkcji
Edycja: -5 bajtów dzięki @ musicman523
Edycja: +7 bajtów, aby usunąć półkę po ostatnim wierszu
Edycja: -3 bajty
Edycja: -5 bajtów, ponieważ funkcja lambda jest używana tylko raz na mapie
Edytuj: -3 bajty za pomocą funkcji ciągu
center
Wypróbuj online!
źródło
d=
nagłówek, ponieważ nie jest rekurencyjny dla -2 bajtówE
zmiennejJavaScript (ES6),
251256 bajtówEdycja: Zapisano 2 bajty dzięki @dzaima .
Edycja: Dodano 7 bajtów, aby naprawić problem z parametrem.
:(
Oto (przeważnie) wersja bez golfa:
Kod testowy
Pokaż fragment kodu
źródło
r
„makro”; Czułem, że może istnieć krótsza metoda, ale nic, co próbowałem, nie przyniosło żadnego efektu.C (gcc) ,
360358 bajtówWypróbuj online!
Wyjaśnienie:
źródło
Python 2, 436 bajtów
Yikes !!
Moja metoda jest zbyt szczegółowa, ale i tak: zasadniczo „rysuje” każdy rząd butelek, dodaje w odstępach, a następnie „usuwa” wszystko, co konieczne, drukując to, co zostało.
Halvard Hummel's jest znacznie lepszy.
źródło