Biorąc pod uwagę obraz sztuki ASCII, tekst ASCII należy pisać kursywą.
Aby zapisać kursywą grafikę ASCII:
Wstaw zero spacji przed ostatnią linią, jedną spację przed drugą ostatnią linią, dwie spacje przed trzecią ostatnią linią itp.
Usuń wszelkie dodatkowe wiodące białe znaki, które mogły zostać utworzone. Oznacza to, że jeśli każda linia ma co najmniej
n
spacje poprzedzające ją, usuńn
spacje na początku każdej linii.Zamień wszystkie
\
s na|
, wszystkie|
s na/
i wszystkie/
s na_
. Zachowaj istniejące_
s takie same.Dane wejściowe z pewnością zawierają tylko znaki
\|/_
i spację.
Na przykład dane wejściowe
/\/\/\ /\/\/\ /\/\/\ /\/\/\
/\ /\ /\ /\ /\ /\
/\/\/\ /\/\/\ /\ /\ /\/\
/\ /\ /\ /\ /\
/\ /\ /\/\/\ /\/\/\
musi generować
_|_|_| _|_|_| _|_|_| _|_|_|
_| _| _| _| _| _|
_|_|_| _|_|_| _| _| _|_|
_| _| _| _| _|
_| _| _|_|_| _|_|_|
które z kolei dostarczone jako dane wyjściowe
_/_/_/ _/_/_/ _/_/_/ _/_/_/
_/ _/ _/ _/ _/ _/
_/_/_/ _/_/_/ _/ _/ _/_/
_/ _/ _/ _/ _/
_/ _/ _/_/_/ _/_/_/
co by wydało
______ ______ ______ ______
__ __ __ __ __ __
______ ______ __ __ ____
__ __ __ __ __
__ __ ______ ______
Dane wejściowe i wyjściowe mogą być pojedynczym ciągiem (z opcjonalnym końcowym znakiem nowej linii) lub tablicą wierszy.
Ponieważ jest to code-golf , wygra najkrótszy kod w bajtach.
Dodatkowe przypadki testowe:
|||||
/////
\\\\\
_____
/////
_____
|||||
_____
________
________
(to znaczy, że wprowadzenie pustego ciągu powoduje wyjście pustego ciągu)
Odpowiedzi:
CJam,
4338 bajtówWymaga dopełnienia wejścia do prostokąta.
Wypróbuj online!
Wyjaśnienie
źródło
G
wówczas transformacja zwinie go do góry.Pyth, 32
Wypróbuj tutaj lub uruchom pakiet testowy
Każda linia ma kilka końcowych spacji. Działa to poprzez zastosowanie
.r
wbudowanego obrotu do każdej linii łańcucha. Rotacja bierze każdy znak w ciągu, który pasuje do jednego w drugim argumencie"\|/__"
i zastępuje go kolejnym znakiem. Podwójny znak podkreślenia ładnie zapobiega odwróceniu znaków podkreślenia. Ciągi są również wypełniane na podstawie ich indeksu.Po zakończeniu wiersze są spakowane razem, a następnie odfiltrowujemy każdą kolumnę, która zawiera tylko spacje, dopóki jedna z nich nie będzie. Następnie rozpakowujemy i dołączamy do nowych linii.
źródło
MATL ,
383329 bajtówLinie wyjściowe mają końcowe spacje, aby dopasować najdłuższą linię (jest to dozwolone przez wyzwanie).
Dane wejściowe to tablica komórek (lista) ciągów. Tablica używa nawiasów klamrowych, a ciągi znaków używają pojedynczych cudzysłowów w następujący sposób (kliknij każdy link, aby wypróbować online! ).
Pierwszy przykład :
Drugi przykład :
Trzeci przykład :
Wyjaśnienie
Tablica jest początkowo odwrócona. Każdy ciąg jest przetwarzany w pętli, a zmodyfikowany ciąg jest wypychany na stos. Przetwarzanie polega na zamianie znaków i dodawaniu spacji. Liczba spacji jest równa bieżącej liczbie elementów na stosie (dzięki temu, że tablica została odwrócona).
Po pętli ciągi znaków są gromadzone w tablicy, która jest odwracana, przekształcana w tablicę znaków 2D i usuwana z niechcianych spacji wiodących: spacji wiodących obecnych we wszystkich rzędach tablicy znaków 2D.
źródło
JavaScript (ES6),
171149148 bajtówAkceptuje i zwraca linie jako tablicę ciągów.
Edycja: Zapisano 22 bajty dzięki @ user81655. Zaoszczędzono 1 bajt, wiedząc, że dane wejściowe są ograniczone do 5 znaków
\|/_
i spacji.źródło
replace
s mogą być łączone w.replace(/[\\|/]/g,m=>"|/_"["\\|/".indexOf(m)])
,match(/ */)
mogą byćmatch` *`
, pierwsze dwamap
s mogą być łączone wa.map(s=>(t=' '.repeat(--i)+s,(l=t.match` *`[0].length)<n?n=l:l,t),...
, zewnętrzne nawiasy ((a=...)
) mogą być teraz usunięte. 149 bajtów:a=>a.map(s=>(t=' '.repeat(--i)+s,(l=t.match` *`[0].length)<n?n=l:l,t),n=i=a.length).map(s=>s.slice(n).replace(/[\\|/]/g,m=>"|/_"["\\|/".indexOf(m)]))
replace
.)Dyalog APL (starsze wersje),
2348 bajtówDostosowanie białych znaków jest kosztowne:
Wymaga to
⎕ML←0
, co było domyślne do niedawna .źródło