O tej porze roku wielu z nas dostaje nasze kalendarze adwentowe ! Jeśli nie znasz kalendarza adwentowego, są to specjalne kalendarze używane do odliczania nadejścia w oczekiwaniu na Boże Narodzenie. Z mojego doświadczenia wynika, że drzwi są rozmieszczane losowo, a część zabawy jako dziecko polegała na tym, gdzie były drzwi jutra! Często w dzisiejszych czasach kalendarze mają czekoladki za drzwiami, ale zamiast kupować w tym roku kalendarz adwentowy, powinieneś zbudować kalendarz ASCII!
Zadanie
Biorąc pod uwagę liczbę całkowitą ( n
) z zakresu 0
- 24
, stwórz kalendarz adwentowy ASCII z ponumerowanymi drzwiami do góry n
, otwartymi. Należy użyć takiej samej kolejności jak w poniższym przykładzie: 2
, 17
, 8
, 12
, 1
, 6
, 11
, 20
, 5
, 22
, 3
, 10
, 15
, 23
, 7
, 16
, 9
, 24
, 18
, 4
, 13
, 19
, 21
, 14
.
Drzwi
Zamknięte drzwi muszą być:
.-----------.
| |
| |
| |
| nn |
|___________|
gdzie n
reprezentuje liczbę drzwi (zera wiodące są opcjonalne), a otwarte drzwi to:
.-----------.
|\ |
| | |
| | |
| | |
| |_________|
\|
z wyjątkiem drzwi 24, które zamiast tego:
.--------------------------.
| |
| |
| |
| 24 |
|__________________________|
.--------------------------.
|\ |
| | |
| | |
| | |
| |________________________|
\|
Te drzwi są rozmieszczone w ramach 37 linii po 79 znaków, z dwiema spacjami między każdą kolumną i pustą linią między każdym rzędem.
Otwarte drzwi
Kiedy drzwi są otwarte, musisz wyświetlić poniżej jedno z (zwykle związanych z Bożym Narodzeniem - przeprosin za moje okropne umiejętności artystyczne!) Poniżej:
. _ . _'_ + .^o _(")_ _n_ $ .
}\O/{ ) (^.^_ /~\ (';') (_ . _) (") |,| __/ \__
}/*\{ \./v`v' /~*~\ {\|+|/} / : \ >( o )< | | `. .'
/***\ oO8 /~*~~*\ d-b (_/ \_) ( o ) ._|_|_. /.^.\
.\^/. ____ __.==,_ .*. _ _ . . . _______ _ _
<->o<-> /_%_/| --|XX|- /.\ (O X O) .i_i_i. _j_j_j_ ( `v' )
'/v\` |_|_| | _| | |_-_| / ^ \ |-~~-~| ||__| \ /
|_|_|/ (____' (.-o-.) \/ \/ |_____| _|/$$|_ V
i |~| //'`\ |=| _{/ _{/ , * \ ==== b
.'%'. | | //....\ / \ \_/ + . + \\\|+-| .'''.
|^~~.~| Y ||()()| |(%)| /O \ . ' . \\\\\+| {*=*=*}
_'._.'_ _|_ ||_[]_| |___| @__,/\\ ~~~~~~~ \\\\\\\ '._.'
_ | _ | .W. .W. .&%$+*. \O/ .;' ..,.;.. ('v')
.'.'O | ($) | |*| |*| */'"'\& [ ]|_. .m_. |\\|//| // \\
/___\ | " o| |*| |*| $\._./% |_____) C| | \\|// |\ /|
(_____) | === | 'M' 'M' '%&*+$' ------' |__| _=|=_ Y Y
\ / .==. .-. -._.- __/\__ ... .-.
._o_O_. .--' | \| |/ .+. \_\/_/ '* ` //`);
|/\/\/| \_____/ /| |\ ( W ) /_/\_\ |_/\*_| %%
""""""" `=====' '-' `"` \/ [_____] //
Każdy obraz ma 7 znaków i obejmuje 4 linie, aby zmieściły się w oknach. Możesz wybrać dowolny z powyższych obrazów i użyć ich w dowolnej kolejności, ale nie możesz powtórzyć obrazu. Do 24-tego musisz również dodać wiadomość:
~
~ MERRY ~
~ CHRISTMAS! ~
~~~~~
który pasuje do jednego z powyższych zdjęć, możesz wybrać, czy tekst będzie po prawej czy lewej stronie obrazu.
Przykłady
Biorąc pod uwagę dane wejściowe 0
, wyświetl kalendarz bez otwartych drzwi:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 2 | | 17 | | 8 | | 12 | | 1 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 6 | | 11 | | 20 | | 5 | | 22 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 3 | | 10 | | 15 | | 23 | | 7 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .--------------------------. .-----------. |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 16 | | 9 | | 24 | | 18 | |
| |___________| |___________| |__________________________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 4 | | 13 | | 19 | | 21 | | 14 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
|_____________________________________________________________________________|
Jako dane wejściowe 5
wypisz coś podobnego do:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ . _ . | | | | | | | |\ __.==,_ | |
| | | }\O/{ | | | | | | | | | --|XX|- | |
| | | }/*\{ | | | | | | | | | _| | | |
| | | /***\ | | 17 | | 8 | | 12 | | | (____' | |
| | |_________| |___________| |___________| |___________| | |_________| |
| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | |\ _{/ _{/ | | | |
| | | | | | | | | \_/ | | | |
| | | | | | | | | /O \ | | | |
| | 6 | | 11 | | 20 | | | @__,/\\ | | 22 | |
| |___________| |___________| |___________| | |_________| |___________| |
| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _n_ | | | | | | | | | |
| | | (") | | | | | | | | | |
| | | >( o )< | | | | | | | | | |
| | | ( o ) | | 10 | | 15 | | 23 | | 7 | |
| | |_________| |___________| |___________| |___________| |___________| |
| \| |
| .-----------. .-----------. .--------------------------. .-----------. |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 16 | | 9 | | 24 | | 18 | |
| |___________| |___________| |__________________________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ + | | | | | | | | | |
| | | /~\ | | | | | | | | | |
| | | /~*~\ | | | | | | | | | |
| | | /~*~~*\ | | 13 | | 19 | | 21 | | 14 | |
| | |_________| |___________| |___________| |___________| |___________| |
| \| |
|_____________________________________________________________________________|
Do wprowadzenia 14
:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ . _ . | | | |\ . | |\ ____ | |\ __.==,_ | |
| | | }\O/{ | | | | | __/ \__ | | | /_%_/| | | | --|XX|- | |
| | | }/*\{ | | | | | `. .' | | | |_|_| | | | | _| | | |
| | | /***\ | | 17 | | | /.^.\ | | | |_|_|/ | | | (____' | |
| | |_________| |___________| | |_________| | |_________| | |_________| |
| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _ | |\ $ | | | |\ _{/ _{/ | | | |
| | | .'.'O | | | |,| | | | | | \_/ | | | |
| | | /___\ | | | | | | | | | | /O \ | | | |
| | | (_____) | | | ._|_|_. | | 20 | | | @__,/\\ | | 22 | |
| | |_________| | |_________| |___________| | |_________| |___________| |
| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _n_ | |\ _(")_ | | | | | |\ |=| | |
| | | (") | | | (_ . _) | | | | | | | / \ | |
| | | >( o )< | | | / : \ | | | | | | | |(%)| | |
| | | ( o ) | | | (_/ \_) | | 15 | | 23 | | | |___| | |
| | |_________| | |_________| |___________| |___________| | |_________| |
| \| \| \| |
| .-----------. .-----------. .--------------------------. .-----------. |
| | | |\ \ ==== | | | | | |
| | | | | \\\|--| | | | | | |
| | | | | \\\\\-| | | | | | |
| | 16 | | | \\\\\\\ | | 24 | | 18 | |
| |___________| | |_________| |__________________________| |___________| |
| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ + | |\ , * | | | | | |\ i | |
| | | /~\ | | | + . + | | | | | | | .'%'. | |
| | | /~*~\ | | | . ' . | | | | | | | |^~~.~| | |
| | | /~*~~*\ | | | ~~~~~~~ | | 19 | | 21 | | | _'._.'_ | |
| | |_________| | |_________| |___________| |___________| | |_________| |
| \| \| \| |
|_____________________________________________________________________________|
Do wprowadzenia 24
:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ . _ . | |\ //''\ | |\ . | |\ ____ | |\ __.==,_ | |
| | | }\O/{ | | | //....\ | | | __/ \__ | | | /_%_/| | | | --|XX|- | |
| | | }/*\{ | | | ||()()| | | | `. .' | | | |_|_| | | | | _| | | |
| | | /***\ | | | ||_[]_| | | | /.^.\ | | | |_|_|/ | | | (____' | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _ | |\ $ | |\ |~| | |\ _{/ _{/ | |\ . . . | |
| | | .'.'O | | | |,| | | | | | | | | \_/ | | | .i_i_i. | |
| | | /___\ | | | | | | | | Y | | | /O \ | | | |-~~-~| | |
| | | (_____) | | | ._|_|_. | | | _|_ | | | @__,/\\ | | | |_____| | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _n_ | |\ _(")_ | |\ | _ | | |\ .W. .W. | |\ |=| | |
| | | (") | | | (_ . _) | | | | ($) | | | | |*| |*| | | | / \ | |
| | | >( o )< | | | / : \ | | | | " o| | | | |*| |*| | | | |(%)| | |
| | | ( o ) | | | (_/ \_) | | | | === | | | | 'M' 'M' | | | |___| | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
| .-----------. .-----------. .-------------------------- .-----------. |
| |\ _ _ | |\ \ ==== | |\ .&%$+*. ~ | |\ \O/ | |
| | | (O X O) | | | \\\|--| | | | */'"'\& ~ MERRY ~ | | | [ ]|_. | |
| | | / ^ \ | | | \\\\\-| | | | $\._./% ~ CHRISTMAS! ~ | | | |_____) | |
| | | \/ \/ | | | \\\\\\\ | | | '%&*+$' ~~~~~ | | | ------' | |
| | |_________| | |_________| | |________________________| | |_________| |
| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ + | |\ , * | |\ | | |\ .*. | |\ i | |
| | | /~\ | | | + . + | | | .'''. | | | /.\ | | | .'%'. | |
| | | /~*~\ | | | . ' . | | | {*=*=*} | | | |_-_| | | | |^~~.~| | |
| | | /~*~~*\ | | | ~~~~~~~ | | | '._.' | | | (.-o-.) | | | _'._.'_ | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
|_____________________________________________________________________________|
Zasady
To jest golf golfowy, więc wygrywa najkrótszy kod w bajtach w każdym języku.
- Do we / wy można zastosować dowolny rozsądny format, zakładając, że jest spójny.
- Każda spacja przed i po kalendarzu jest w porządku, a także dodatkowe spacje / niedrukowalne na końcu każdej linii, ale nic przed każdą linią, ponieważ musi ona mieścić się w 80 znakach.
- Wszystkie standardowe luki są zabronione.
Dzięki
James Holderness za wkładanie obrazów ASCII!
Odpowiedzi:
Węgiel drzewny ,
676 639 614 607 598 590 564561 bajtówWypróbuj online!
Tutaj masz pełną wersję kodu , całkiem zrozumiałą. Moje podejście jest odwrotne niż @ Neil's. Wyciąga wszystkie prezenty, a następnie obejmuje te, które nie są potrzebne. Rysuję tylko potrzebne prezenty.
źródło
Print(Map(Map(4,Add(Times(Modulo(i,8),7),Times(56,Add(k,Times(4,IntDivide(i,8)))))),Slice("
...",k,Add(k,7))));
zamiastfor (4)
pętli.l
opcji Charcoala ...Węgiel , 666 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Nie bardzo grałem w golfa, ale nie jestem pewien, czy chcę ...
Wypróbuj online! Link jest do pełnej wersji kodu. Jest to wersja, która rysuje prezenty osobno dla
577541530 bajtów po tym, jak ukradłem kilka pomysłów @Charlie do golfa jeszcze kilka bajtów.źródło
Python 2 ,
132213191287126510611059105610321030 bajtówWypróbuj online!
-4 bajty dzięki Mr.Xcoder
-24 bajty dzięki Lynn
Wersja skompresowana (dzięki Lynn i ovs):
Python 2 ,
102110171013 bajtówWypróbuj online!
źródło
Befunge,
122011981186 bajtówWypróbuj online!
Może być jeszcze możliwe pogodzenie w golfa poprzez kompresowanie zdjęć, ale prawdopodobnie wymagałoby to użycia rozszerzonych znaków ASCII, które nie są obecnie obsługiwane w TIO.
źródło
Python 3 + numpy,
1164115911231103109710651061996994 bajtówKompresuj wszystkie rzeczy i użyj numpy, aby je połączyć.
Najpierw zbuduj zamknięte drzwi, a następnie wymień drzwi, które należy otworzyć. Na koniec wypisz wszystko.
-22 bajty dzięki Mr. Xcoder .
-5 bajtów dzięki notjagan .
EDYCJA: <1000 bajtów!
Wypróbuj online!
źródło
C (gcc) ,
12961291121111661164 bajtówJednak ten bardzo długi sznurek (59% całości!). W ich wzgórzach jest złoto; Mogę to poczuć.
Edycja: Jeśli jest złoto, do tej pory znalazłem tylko plamki.
Edycja: -2 bajty dzięki pułapkowi cat
Wypróbuj online!
Wersja inna niż ASCII
-30 bajtów dzięki pułapce cat .
GCC na moim komputerze produkuje coś, co natychmiast ulega awarii, co sprawia, że jest mało prawdopodobne, że będę kontynuował ten rozwidlenie. (Nie wspominając o tym, że TiO z jakiegoś powodu liczy 1120 bajtów (tyle samo, ile zgłoszona liczba znaków).)
Link Ideone
źródło
C (gcc) ,
279819761963...186217421703165116341632 bajtów-2 bajty dzięki pułapkowi kota
Zamieniłem kilka ikon, aby uniknąć niepotrzebnych znaków „ESC”.
Wypróbuj online!
źródło
Rubinowy , 966 bajtów
Wypróbuj online!
Bardziej golfa, ale trudniej zobaczyć zdjęcia w kodzie.
Rubinowy , 974 bajty
Jest to funkcja, która ma zostać przypisana do zmiennej takiej jak
f
i nazwana jakof[n]
. Drukuje na standardowe wyjście.Okazało się dłużej niż oczekiwano. Myślę, że jest jeszcze kilka bajtów do wyciśnięcia poprzez rozłożenie danych obrazu inaczej, co spróbuję później.
Używam obrazów symetrycznych lub prawie symetrycznych, aw kodzie znajduje się tylko prawa połowa. Lewa połowa może zawierać maksymalnie 5 znaków w porównaniu do prawej. Kod do dokonywania podstawień jest dość długi, co częściowo neguje kompresję. Zapisanych jest tylko około 60 bajtów.
Wypróbuj online!
źródło
Clojure , 1530
Wypróbuj to
Rozwiązanie clojure prawdopodobnie może być nieco krótsze, ale oto moja pierwsza próba.
źródło