Biorąc pod uwagę dwa wejścia - jedno z nich niepusty ciąg znaków ASCII do druku (w tym miejsca, z wyjątkiem nowej linii), natomiast drugi jest z dwóch odrębnych, spójnych wartości do wyboru ( 1 / 0
, l / r
, left / right
, etc.) - wyjście ASCII Art samolot baner łańcucha, wskazujący w lewo lub w prawo. Aby zachować spójność, będę używać left
i right
przez cały opis wyzwania.
Płaszczyzna to |-DI>-/
( left
) lub \-<ID-|
( right
). Ponieważ baner jest czysty, składa się ze znaków ciągu wejściowego oddzielonych spacjami, od lewej do prawej ( left
) lub od prawej do lewej ( right
) i otoczonych polem kształtu
/--/
---< <
\--\
lub
\--\
> >---
/--/
Uwaga musi istnieć jedna przestrzeń pomiędzy początku / końcu wiadomości oraz >
, <
znaków.
Na przykład tutaj jest komunikat HAPPY BIRTHDAY!
i kierunek left
:
/-------------------------------/
|-DI>-/---< H A P P Y B I R T H D A Y ! <
\-------------------------------\
Oto wiadomość PPCG
i kierunek right
. Zwróć uwagę, że litery są wyświetlane „do tyłu”, gdy oglądane są z tej strony banera:
\---------\
> G C P P >---\-<ID-|
/---------/
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).
eval
- Wprowadź program, który generuje lewą płaszczyznę dla lewej strony, i program, który generuje prawą płaszczyznę dla prawej.Odpowiedzi:
JavaScript (ES6),
141138 bajtówŁańcuch i kierunek są wprowadzane za pomocą składni curry.
'/\n|-DI>-/---< '
na lewo,'/\n|-DI<-\\---> '
na prawo.Pokaż fragment kodu
źródło
eval
... zapewnieniu lewego i prawego źródła funkcji jako dwóch wybranych wartości. (Myślałem, że jest w tym meta, ale nie mogę go znaleźć.)eval
„Sztuczka” byłaby tą luką w duchu, nawet jeśli nie zostanie to wyraźnie stwierdzone. Ta odpowiedź jest jednak dość sprytna.eval
jako poważną odpowiedź . Obejściem przyszłych wyzwań może być włączenie danych wejściowych jako części liczby bajtów.Perl 5 , 149 +1 (-p) = 150 bajtów
Wypróbuj online!
Wejście dwuliniowe. Pierwsza jest wiadomość. Drugi to 0 dla lewej, 1 dla prawej.
źródło
V ,
73, 65 bajtówWypróbuj online!
Nie najlepszy wynik, ale to dlatego, że prawie połowa tego wynika z odwrócenia wyjścia.
Hexdump:
Bierze ciąg jako dane wejściowe do bufora, a kierunek jak
0
dla lewej i1
prawej jako argumenty wiersza poleceń.źródło
05AB1E , 63 bajty
Wypróbuj online!
Na podstawie błędów, które mogą zostać naprawione w przyszłości.
źródło
0
w drugim wierszu na a1
.Węgiel drzewny ,
44403935 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Pierwsze wejście to 1 dla prawej i 0 dla lewej, drugi to ciąg banera. Edycja:
Zapisałem 1 bajt przy użyciu,ReflectButterfly(:Up)
ponieważobecnie występuje błąd pozycjonowania kursora, ale zapisałem kolejne 4 bajty, odwracając kierunek drukowania, a teraz nie ma znaczenia, którego używam.ReflectButterfly(:Down)
3834Wersja 32-bajtowa, jeśli dozwolone było dublowanie banera:Wypróbuj online! Link jest do pełnej wersji kodu. Pierwsze wejście to 0 dla prawej i 1 dla lewej. Wyjaśnienie:
Wydrukuj samolot.
Wydrukuj górną połowę pudełka (zwróć uwagę na spację końcową).
Jeśli drugie wejście jest niezerowe, odwróć kierunek drukowania, w przeciwnym razie odzwierciedl płaszczyznę i ramkę.
Wydrukuj wiadomość z dodatkowymi odstępami (zwróć uwagę na spację końcową). Kursor znajduje się na drugim końcu pola od płaszczyzny, więc komunikat musi zostać odwrócony.
Odzyskaj, aby uzyskać dolną połowę pudełka.
źródło
Galaretka ,
6865 bajtówWypróbuj online!
Bierze 1 na prawo, 0 na lewo.
-3 bajty dzięki @JonathanAllan ( grr zawsze zapomnieć
AB+
robi to samo jakoB+@A
)źródło
³K“|-DI>-/---< “ < ”j
zapisuje bajt;LḤ‘”-x⁾//jṭ⁶x11¤Fµ,Ñj¢œs3U⁴¡YÑ⁴¡
zapisuje kolejne 2 w ten sam sposób.Węgiel drzewny , 56 bajtów
-8 bajtów dzięki całkowicie ludzkiemu i Erikowi Outgolferowi!
Wypróbuj online!
Naprawienie wspomnianych przypadków dzaima spowodowało duże straty w liczbie bajtów. 36 bajtów, jeśli wolno nam odwracać znaki takie jak
<
i/
.źródło
' '.join(s)
działa. Z pewnością można tego użyć w węglu drzewnym?Join
działa również na ciągi znaków.' '.join
w Charcoal. Uznam was oboje.SOGL V0.12 ,
554743 bajtówWypróbuj tutaj!
0 dla lewej i 1 dla prawej
źródło
Python 2 ,
137136133 bajtówWypróbuj online!
1
na prawo i0
na lewoźródło
1-2*d
w-d|1
(Negatywd
XOR1
).*list('></\\<>')[d::2]
PHP, 175 bajtów
Uruchom z
-nr
, pierwszy argument =0
dla skierowania w prawo lub1
dla lewego i drugiego argumentu = tekstlub wypróbuj online .
źródło
Perl 5 , 126 bajtów
Kod 124 bajtów + 2 dla
-pl
.Wypróbuj online!
źródło
Corea , 51 bajtów
Wypróbuj online!
Wyjaśnienie
Program składa się z kilku części:
1: Inicjalizacja
2: surowy tekst
Do pola treści wyprowadzany jest następujący tekst:
3: postamble
źródło
Excel VBA, 198 bajtów
Anonimowa funkcja bezpośredniego okna VBE, która pobiera dane wejściowe jako ciąg zi
[A1]
od zakresu,[B1]
gdzie1
wskazuje, że płaszczyzna znajduje się po lewej stronie i0
wskazuje, że płaszczyzna znajduje się po prawej stronie.źródło
Arkusze Google, 210 bajtów
Anonimowa funkcja arkusza roboczego, która pobiera dane wejściowe jako ciąg znaków z [A1] i int z zakresu [B1], gdzie 1 oznacza, że płaszczyzna znajduje się po lewej stronie, a 0 oznacza, że płaszczyzna znajduje się po prawej stronie.
źródło