(Zainspirowany tym wyzwaniem )
Biorąc pod uwagę dwa ciągi wejściowe, z których jeden jest dokładnie jeden znak dłuższy od drugiego, ułóż ciągi w grafice ASCII tak, jakby były dwiema połówkami zamka błyskawicznego, który jest tylko w połowie zapięty. Dłuższe słowo tworzy spód zamka i jest pierwszym i ostatnim znakiem połączonej części zamka błyskawicznego. Ponieważ ten akapit jest trudny do zrozumienia, spójrz na kilka przykładów:
zippered
paragraph
z
i
p
p
gerraepdh
a
r
a
p
Zwróć uwagę, jak paragraph
(dłuższe słowo) tworzy dolny zamek błyskawiczny, a g r a p h
część otacza e r e d
część zippered
, z i p p
a p a r a
części i są przesunięte względem siebie.
Wkład
- Dwa ciągi ASCII w dowolnym dogodnym formacie , z których jeden ma równą długość, a drugi dokładnie jeden znak dłuższy.
- Żaden ciąg nie będzie zawierał białych znaków, ale może zawierać dowolną inną drukowaną wartość ASCII.
- Możesz wziąć dane wejściowe w dowolnej kolejności. Podaj w swoim zgłoszeniu kolejność wprowadzania.
Wydajność
Wynikowa reprezentacja ASCII spakowanych słów, jak opisano powyżej, ponownie w dowolnym dogodnym formacie.
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).
Przykłady
ppcg
tests
p
p
sctgs
e
t
string
strings
s
t
r
iinnggs
r
t
s
one guaranteed to be even in length and the other exactly one character longer.
Krótszy ciąg jest zawsze równyOdpowiedzi:
Japt ,
3128 bajtówPrzetestuj online! Najpierw zajmuje krótszy ciąg.
Wyjaśnienie
źródło
Węgiel drzewny ,
3331 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Najpierw zajmuje krótszy ciąg. Edycja: Zapisano 2 bajty, dostosowując wykrywanie punktu środkowego. Wyjaśnienie:
Zapętlaj kolejno każdy łańcuch.
Zapętlaj kolejno każdy znak ciągu.
Wydrukuj postać i przesuń dodatkowy kwadrat w prawo.
W pierwszej połowie ciągu przesuń również kursor odpowiednio w dół lub w górę.
Po wydrukowaniu pierwszego ciągu przeskocz do punktu początkowego drugiego ciągu i zastąp pierwszy ciąg drugim, aby został wydrukowany dla drugiej pętli. (Kod działa na obu pętlach, ale za drugim razem nie działa.)
źródło
Pyth , 35 bajtów
Wypróbuj online!
źródło
Galaretka ,
2726 bajtów-1 bajt dzięki Erikowi Outgolferowi (użyj powtarzania,
¡
w celu zastąpienia if?
, i przesłanej klauzuli else¹
)Pełny program, który drukuje wynik z wiodącą białą spacją, jak dopuszczono w pytaniu (lub diademiczny link zwracający listę znaków).
Wypróbuj online!
W jaki sposób?
źródło
C¹Ḃ?
->CḂ¡
Python 2 ,
128119 bajtówWypróbuj online!
źródło
V ,
473830272625 bajtówWreszcie pokonaj obecną odpowiedź na galaretkę \ o /
Wprowadza dane z dłuższym słowem na górze
Wyjaśnienia nadchodzą, nie myśl, że jest wiele więcej do golfa.
Wypróbuj online!
Wyjaśnienie
źródło
V , 79 bajtów
Wypróbuj online!
Poniższe fragmenty należy czytać z dużą ilością sarkazmu i cytatów z powietrza .
Dlaczego ciągle to robię?
Hexdump:
źródło
Galaretka , 28 bajtów
Wypróbuj online!
Woo Jelly faktycznie konkuruje w sznurkowym i ascii-artowym wyzwaniu! \ o /
źródło
Ṗ
nie doda końcowego spacji, ale końcowe1
. A pominięcie wszystkiego, co ma związek ze spacjami, usuwa układ liter. Zasadniczo ten algorytm wykorzystuje indeksowanie, dzięki czemu litery docierają do określonego indeksu w kolumnie, a następnie reszta jest wypełniana spacjami, więc myślę, że nie można tego dalej grać w golfa. Przynajmniej cieszę się, że CJam nie jest obrzucony Jelly. ;)05AB1E ,
2623 bajtówWypróbuj online!
Wyjaśnienie
Z przykładowym wejściem =
ppcg, tests
źródło
C # (.NET Core) , 163 bajty
Wypróbuj online!
Prawdopodobnie dużo golfa do zrobienia tutaj, ale oto wstępna próba bez LINQ. Funkcja Lambda, która jako pierwsza przyjmuje dłuższe słowo i zwraca ciąg znaków z wyjściem.
źródło
l=>s=>
) tjFunc<input1, Func<input2, output>>
.Java 8, 216 bajtów
Curried lambda: bierze
String
i zwraca lambda odString
doString
. Parametrem zewnętrznej lambda jest krótszy ciąg.Brak możliwości indeksowania do
String
s przy pomocy składni tablicowej jest ... niefortunny.Niegolfowana lambda
Wyjaśnienie
l
jest długością krótszego wejścia ii
jest indeksem uniwersalnym, zainicjowanym w celu odniesienia do pierwszego znaku drugiej połowy krótszego wejścia.o
gromadzi wynik,p
ostatecznie przechowuje miejsca na wypełnienie in
jest aliasem dla"\n"
.Pierwsza pętla przeplata drugą połowę dwóch łańcuchów (wyłączając ostatni znak dłuższego wejścia) i buduje
p
do odpowiedniej ilości wypełnienia dla linii środkowej.Następny wiersz kończy środkowy wiersz wyniku.
Chciałbym przeprosić Jamesa Goslinga za drugą pętlę. Dodaje linie powyżej i poniżej linii środkowej od wewnątrz. Wejście do pętli
i
jest takiel - 1
, że jeden znak dopełnienia jest dodawany wraz z ostatnim znakiem pierwszej połowy krótszego łańcucha.i
jest zmniejszane, tak że następne wypełnienie (dołączane do wyniku) jest krótsze. Przez dzielenie liczb całkowitych dołączany jest ten sam znak pozycji dłuższego łańcucha. To się powtarza i zwracany jest pełny wynik.Fajne rzeczy
Kiedyś była linia 13
ponieważ bez pustego ciągu
+
dodała wartości znaków i dodała ciąg liczbowy. Po rozszerzeniu przypisania złożonego najpierw ocenia się konkatenacjęo
it.charAt(i)
, co daje pożądany wynik bez potrzeby stosowania pustego ciągu, co pozwala zaoszczędzić 2 bajty. To pierwszy raz, kiedy przypisanie złożone zachowuje się inaczej niż jego rozszerzenie.źródło
JavaScript (ES6),
140 137133 bajtówCałkiem pewne, że można dalej grać w golfa
źródło
`<newline>`+` `
można się połączyć`<newline> `
? (Nie znam JS).Mathematica, 174 bajty
Wkład
źródło
TXR Lisp , 126 bajtów
źródło
PHP,
149129 bajtówUruchom
-nr
lub wypróbuj online .źródło
Perl 5 , 163 bajtów
Wypróbuj online!
Najpierw zajmuje dłuższy ciąg.
źródło