Gegeben seien zwei Eingänge - einer von ihnen eine nicht leere druckbaren ASCII - Zeichenfolge (einschließlich Leerzeichen, ohne Newline), das andere Wesen eines von zwei verschiedenen, konsistente Werte Ihrer Wahl ( 1 / 0
, l / r
, left / right
, etc.) - Ausgabe eines ASCII - Kunst Flugzeug Banner der Zeichenfolge, entweder nach links oder rechts zeigend. Aus Gründen der Einheitlichkeit würde ich verwenden left
und right
in dieser Herausforderung Beschreibung.
Die Ebene ist entweder |-DI>-/
( left
) oder \-<ID-|
( right
). Da das Banner klar ist, besteht es aus den Zeichen der Eingabezeichenfolge, die durch Leerzeichen von links nach rechts ( left
) oder von rechts nach links ( right
) getrennt und von einem Feld der Form umgeben sind
/--/
---< <
\--\
oder
\--\
> >---
/--/
Hinweis Es muss ein Raum zwischen dem Anfang / Ende der Nachricht und die sein >
, <
Zeichen.
Hier ist zum Beispiel die Nachricht HAPPY BIRTHDAY!
und die Richtung left
:
/-------------------------------/
|-DI>-/---< H A P P Y B I R T H D A Y ! <
\-------------------------------\
Hier ist die Nachricht PPCG
und die Richtung right
. Beachten Sie, dass die Buchstaben von dieser Seite des Banners aus "rückwärts" angezeigt werden:
\---------\
> G C P P >---\-<ID-|
/---------/
Regeln
- Führende oder nachfolgende Zeilenumbrüche oder Leerzeichen sind optional, sofern die Zeichen selbst korrekt ausgerichtet sind.
- Entweder ein vollständiges Programm oder eine Funktion sind akzeptabel. Wenn es sich um eine Funktion handelt, können Sie die Ausgabe zurückgeben, anstatt sie zu drucken.
- Wenn möglich, fügen Sie bitte einen Link zu einer Online-Testumgebung hinzu, damit andere Personen Ihren Code ausprobieren können!
- Standardlücken sind verboten.
- Dies ist Code-Golf, daher gelten alle üblichen Golfregeln, und der kürzeste Code (in Bytes) gewinnt.
eval
- Geben Sie ein Programm ein, das eine nach links gerichtete Ebene für links generiert, und ein Programm, das eine nach rechts gerichtete Ebene für rechts generiert.Antworten:
JavaScript (ES6),
141138 ByteZeichenfolge und Richtung werden über die Curry-Syntax eingegeben.
'/\n|-DI>-/---< '
für links,'/\n|-DI<-\\---> '
für rechts.Code-Snippet anzeigen
quelle
eval
... Geben Sie einfach die linken und rechten Funktionsquellen als Ihre beiden Werte Ihrer Wahl an. (Ich dachte, es gibt ein Meta dazu, aber ich kann es nicht finden.)eval
"Trick" wäre diese Lücke im Geist, auch wenn nicht ausdrücklich angegeben. Diese Antwort hier ist allerdings etwas klug.eval
ich als ernsthafte Antwort posten soll . Eine Problemumgehung für zukünftige Herausforderungen wie diese könnte darin bestehen, Eingaben als Teil der Byteanzahl einzubeziehen.Perl 5 , 149 +1 (-p) = 150 Bytes
Probieren Sie es online aus!
Zweizeiliger Eingang. Erstens ist die Nachricht. Zweitens ist 0 für links, 1 für rechts.
quelle
V ,
73, 65 BytesProbieren Sie es online aus!
Nicht die beste Punktzahl, aber das liegt daran, dass fast die Hälfte davon aus der Umkehrung der Ausgabe stammt.
Hexdump:
Übernimmt die Zeichenfolge als Eingabe in den Puffer und die Richtung
0
für links und1
rechts als Befehlszeilenargumente.quelle
05AB1E , 63 Bytes
Probieren Sie es online aus!
Basierend auf Fehlern, die möglicherweise in Zukunft behoben werden.
quelle
0
in der zweiten Zeile in a zu ändern1
.Holzkohle ,
44403935 BytesProbieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Die erste Eingabe ist 1 für rechts und 0 für links, die zweite ist die Bannerzeichenfolge. Bearbeiten:
1 Byte durch Verwendung vongespeichert,ReflectButterfly(:Up)
daderzeit ein Cursorpositionierungsfehler vorliegt, aber ich habe weitere 4 Bytes durch Umkehren der Druckrichtung gespeichert, und jetzt spielt es keine Rolle, welche ich verwende.ReflectButterfly(:Down)
383432-Byte-Version, wenn das Spiegeln des Banners zulässig war:Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Die erste Eingabe ist 0 für rechts und 1 für links. Erläuterung:
Drucken Sie das Flugzeug.
Drucken Sie die obere Hälfte des Felds (hinteres Leerzeichen beachten).
Wenn der zweite Eingang ungleich Null ist, kehren Sie die Druckrichtung um, andernfalls spiegeln Sie die Ebene und das Feld wider.
Drucken Sie die Nachricht mit zusätzlichem Abstand (hinteres Leerzeichen). Der Cursor befindet sich am anderen Ende des Felds von der Ebene entfernt, sodass die Nachricht umgekehrt werden muss.
Denken Sie nach, um die untere Hälfte der Box zu erhalten.
quelle
Gelee ,
6865 BytesProbieren Sie es online aus!
Nimmt 1 für rechts, 0 für links.
-3 Bytes danke an @JonathanAllan ( grr ich vergesse immer
AB+
das gleiche wieB+@A
)quelle
³K“|-DI>-/---< “ < ”j
spart ein Byte;LḤ‘”-x⁾//jṭ⁶x11¤Fµ,Ñj¢œs3U⁴¡YÑ⁴¡
speichert weitere 2 auf die gleiche Weise.Holzkohle , 56 Bytes
-8 Bytes dank totalhuman und Erik the Outgolfer!
Probieren Sie es online aus!
Das Beheben der von dzaima erwähnten Fälle forderte einen erheblichen Tribut an der Anzahl der Bytes. 36 Bytes, wenn wir Zeichen wie
<
und umkehren dürfen/
.quelle
' '.join(s)
funktioniert. Sicherlich kann das in Holzkohle verwendet werden?Join
arbeitet auch an Strings.' '.join
in Charcoal anrufen . Ich werde euch beide gutschreiben.SOGL V0.12 ,
554743 BytesProbieren Sie es hier aus!
0 für links und 1 für rechts
quelle
Python 2 ,
137136133 BytesProbieren Sie es online aus!
1
für rechts und0
für linksquelle
1-2*d
durch-d|1
(negiered
xor1
).*list('></\\<>')[d::2]
PHP, 175 Bytes
Führen Sie mit
-nr
, erstes Argument =0
für rechts oder1
links und zweites Argument = Textoder versuchen Sie es online .
quelle
Perl 5 , 126 Bytes
124 Bytes Code + 2 für
-pl
.Probieren Sie es online aus!
quelle
Korea , 51 Bytes
Probieren Sie es online aus!
Erläuterung
Das Programm besteht aus einigen Teilen:
1: Initialisierung
2: Rohtext
Der folgende Text wird in das Inhaltsfeld ausgegeben:
3: postamble
quelle
Excel VBA, 198 Bytes
Anonyme VBE-Sofortfensterfunktion, die Eingaben als Zeichenfolge aus
[A1]
und int aus dem Bereich übernimmt ,[B1]
wobei1
angezeigt wird, dass sich die Ebene links und0
die Ebene rechts befindet.quelle
Google Sheets, 210 Bytes
Anonyme Arbeitsblattfunktion, die die Eingabe als Zeichenfolge aus [A1] und int aus dem Bereich [B1] übernimmt, wobei 1 angibt, dass sich die Ebene links befindet, und 0 angibt, dass sich die Ebene rechts befindet.
quelle