Zu dieser Jahreszeit bekommen viele von uns ihre Adventskalender ! Wenn Sie mit einem Adventskalender nicht vertraut sind, sind dies spezielle Kalender, mit denen Sie die Adventszeit vor Weihnachten herunterzählen können. Meiner Erfahrung nach werden die Türen zufällig platziert und ein Teil des Spaßes als Kind arbeitete daran, wo die Tür von morgen war! Heutzutage haben Kalender oft Pralinen hinter jeder Tür, aber anstatt dieses Jahr einen Adventskalender zu kaufen, sollten Sie einen ASCII-Kalender bauen!
Aufgabe
Bei Eingabe einer Ganzzahl ( n
) im Bereich 0
- 24
wird ein ASCII-Adventskalender mit den nummerierten Türen bis zu n
, geöffnet, erstellt. Sie müssen die gleiche Reihenfolge wie im folgenden Beispiel verwenden: 2
, 17
, 8
, 12
, 1
, 6
, 11
, 20
, 5
, 22
, 3
, 10
, 15
, 23
, 7
, 16
, 9
, 24
, 18
, 4
, 13
, 19
, 21
, 14
.
Türen
Die geschlossene Tür muss sein:
.-----------.
| |
| |
| |
| nn |
|___________|
Dabei n
steht die Nummer der Tür (führende Nullen sind optional) und die geöffnete Tür ist:
.-----------.
|\ |
| | |
| | |
| | |
| |_________|
\|
mit Ausnahme von Tür 24, die stattdessen ist:
.--------------------------.
| |
| |
| |
| 24 |
|__________________________|
.--------------------------.
|\ |
| | |
| | |
| | |
| |________________________|
\|
Diese Türen sind in einem Rahmen von 37 Zeilen mit 79 Zeichen mit zwei Leerzeichen zwischen jeder Spalte und einer leeren Zeile zwischen jeder Zeile angeordnet.
Geöffnete Türen
Wenn die Türen geöffnet werden, müssen Sie eines der folgenden Bilder (ich entschuldige mich für meine schrecklichen Kunstfertigkeiten!) In der Tür zeigen:
. _ . _'_ + .^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 ) /_/\_\ |_/\*_| %%
""""""" `=====' '-' `"` \/ [_____] //
Jedes Bild ist 7 Zeichen lang und deckt 4 Zeilen ab, damit sie in die Fenster passen. Es steht Ihnen frei, eines der oben genannten Bilder auszuwählen und in beliebiger Reihenfolge zu verwenden, Sie dürfen jedoch kein Bild wiederholen. Für den 24. müssen Sie auch eine Nachricht hinzufügen:
~
~ MERRY ~
~ CHRISTMAS! ~
~~~~~
Passend zu einem der obigen Bilder können Sie wählen, ob sich der Text rechts oder links vom Bild befindet.
Beispiele
Bei Eingabe 0
den Kalender ohne geöffnete Türen ausgeben:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 2 | | 17 | | 8 | | 12 | | 1 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 6 | | 11 | | 20 | | 5 | | 22 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 3 | | 10 | | 15 | | 23 | | 7 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
| .-----------. .-----------. .--------------------------. .-----------. |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 16 | | 9 | | 24 | | 18 | |
| |___________| |___________| |__________________________| |___________| |
| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | | | | | | | | | | |
| | 4 | | 13 | | 19 | | 21 | | 14 | |
| |___________| |___________| |___________| |___________| |___________| |
| |
|_____________________________________________________________________________|
Geben Sie für die Eingabe 5
etwas Ähnliches aus wie:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ . _ . | | | | | | | |\ __.==,_ | |
| | | }\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 | |
| | |_________| |___________| |___________| |___________| |___________| |
| \| |
|_____________________________________________________________________________|
Für die Eingabe 14
:
.-----------------------------------------------------------------------------.
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ . _ . | | | |\ . | |\ ____ | |\ __.==,_ | |
| | | }\O/{ | | | | | __/ \__ | | | /_%_/| | | | --|XX|- | |
| | | }/*\{ | | | | | `. .' | | | |_|_| | | | | _| | | |
| | | /***\ | | 17 | | | /.^.\ | | | |_|_|/ | | | (____' | |
| | |_________| |___________| | |_________| | |_________| | |_________| |
| \| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _ | |\ $ | | | |\ _{/ _{/ | | | |
| | | .'.'O | | | |,| | | | | | \_/ | | | |
| | | /___\ | | | | | | | | | | /O \ | | | |
| | | (_____) | | | ._|_|_. | | 20 | | | @__,/\\ | | 22 | |
| | |_________| | |_________| |___________| | |_________| |___________| |
| \| \| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ _n_ | |\ _(")_ | | | | | |\ |=| | |
| | | (") | | | (_ . _) | | | | | | | / \ | |
| | | >( o )< | | | / : \ | | | | | | | |(%)| | |
| | | ( o ) | | | (_/ \_) | | 15 | | 23 | | | |___| | |
| | |_________| | |_________| |___________| |___________| | |_________| |
| \| \| \| |
| .-----------. .-----------. .--------------------------. .-----------. |
| | | |\ \ ==== | | | | | |
| | | | | \\\|--| | | | | | |
| | | | | \\\\\-| | | | | | |
| | 16 | | | \\\\\\\ | | 24 | | 18 | |
| |___________| | |_________| |__________________________| |___________| |
| \| |
| .-----------. .-----------. .-----------. .-----------. .-----------. |
| |\ + | |\ , * | | | | | |\ i | |
| | | /~\ | | | + . + | | | | | | | .'%'. | |
| | | /~*~\ | | | . ' . | | | | | | | |^~~.~| | |
| | | /~*~~*\ | | | ~~~~~~~ | | 19 | | 21 | | | _'._.'_ | |
| | |_________| | |_________| |___________| |___________| | |_________| |
| \| \| \| |
|_____________________________________________________________________________|
Für die Eingabe 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-.) | | | _'._.'_ | |
| | |_________| | |_________| | |_________| | |_________| | |_________| |
| \| \| \| \| \| |
|_____________________________________________________________________________|
Regeln
Dies ist Codegolf, so dass der kürzeste Code in Bytes in jeder Sprache gewinnt.
- Jedes vernünftige Format kann für die E / A verwendet werden, sofern es konsistent ist.
- Beliebige Leerzeichen vor und nach dem Kalender sowie zusätzliche Leerzeichen / nicht druckbare Zeichen am Ende jeder Zeile, jedoch nichts vor jeder Zeile, da dies in 80 Zeichen passen muss.
- Alle Standardlücken sind verboten.
Vielen Dank
James Holderness für das Einbringen von ASCII-Bildern!
Antworten:
Charcoal ,
676 639 614 607 598 590 564561 BytesProbieren Sie es online!
Hier haben Sie die ausführliche Version des Codes , ganz verständlich. Mein Ansatz ist das Gegenteil von @ Neils. Er zeichnet alle Geschenke und deckt dann die nicht benötigten ab. Ich zeichne nur die benötigten Geschenke.
quelle
Print(Map(Map(4,Add(Times(Modulo(i,8),7),Times(56,Add(k,Times(4,IntDivide(i,8)))))),Slice("
...",k,Add(k,7))));
anstelle derfor (4)
Schleife.l
Wahl zu vertrauen ...Kohle , 666 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Nicht wirklich golfen, aber ich bin mir nicht sicher, ob ich ...
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Dies ist eine Version, die die Geschenke separat für
577541530 Bytes zeichnet, nachdem ich @Charlie mehrere Ideen gestohlen habe, um ein paar Bytes mehr zu sparen.quelle
Python 2 ,
132213191287126510611059105610321030 BytesProbieren Sie es online!
-4 Bytes dank Mr.Xcoder
-24 Bytes dank Lynn
Komprimierte Version (dank Lynn und Ovs):
Python 2 ,
102110171013 BytesProbieren Sie es online!
quelle
Befunge,
122011981186 BytesProbieren Sie es online!
Möglicherweise kann dies durch Komprimieren der Bilder noch weiter verbessert werden, dies würde jedoch wahrscheinlich die Verwendung erweiterter ASCII-Zeichen erfordern, die derzeit von TIO nicht unterstützt werden.
quelle
Python 3 + numpy,
1164115911231103109710651061996994 BytesKomprimiere alle Dinge und binde sie mit numpy zusammen.
Bauen Sie zuerst geschlossene Türen und ersetzen Sie dann die Türen, die geöffnet werden müssen. Zum Schluss alles ausgeben.
-22 Bytes dank Mr. Xcoder .
-5 bytes dank notjagan .
EDIT: <1000 Bytes!
Probieren Sie es online!
quelle
C (gcc) ,
12961291121111661164 BytesDiese superlange Saite (59% des Ganzen!). In den Hügeln steckt Gold. Ich kann es fühlen.
Bearbeiten: Wenn es Gold gibt, habe ich bisher nur Flecken gefunden.
Edit: -2 Bytes dank Ceilingcat
Probieren Sie es online!
Nicht-ASCII-Version
-30 bytes dank ceilingcat .
GCC auf meinem Computer erzeugt etwas, das sofort abstürzt, was es unwahrscheinlich macht, dass ich diese Gabelung verfolgen werde. (Ganz zu schweigen davon, dass TiO aus irgendeinem Grund 1120 Bytes berechnet (genau wie die angegebene Anzahl von Zeichen).)
Ideone-Link
quelle
C (gcc) ,
279819761963...186217421703165116341632 Bytes-2 Bytes dank ceilingcat
Ich habe einige Symbole ersetzt, um unnötige ESC-Zeichen zu vermeiden.
Probieren Sie es online!
quelle
Ruby , 966 Bytes
Probieren Sie es online!
Mehr Golf, aber schwieriger, die Bilder im Code zu sehen.
Ruby , 974 Bytes
Dies ist eine Funktion, die einer Variablen wie
f
und mit dem Namen zugewiesen werden sollf[n]
. Es wird nach Standard gedruckt.Länger als erwartet ausgefallen. Ich denke, es gibt noch ein paar Bytes mehr, die durch eine andere Anordnung der Bilddaten herausgedrückt werden müssen, was ich später versuchen werde.
Ich verwende symmetrische oder nahezu symmetrische Bilder und nur die rechte Hälfte ist im Code enthalten. Die linke Hälfte kann im Vergleich zur rechten Hälfte bis zu 5 Zeichen enthalten. Der Code für die Ersetzungen ist ziemlich lang, was die Komprimierung teilweise zunichte macht. Es werden nur ca. 60 Bytes gespeichert.
Probieren Sie es online!
quelle
Clojure , 1530
Versuch es
Die Clojure-Lösung könnte wahrscheinlich etwas kürzer sein, aber hier ist mein erster Versuch.
quelle