Twoim zadaniem jest przyjęcie jako danych wejściowych dwóch „ASCII Art” i wyrównanie każdego dzieła obok siebie w poziomie.
Załóżmy na przykład, że masz dwa ciągi "abc\ndef"
i "123\n456"
. Musisz wyrównać je w poziomie, aby utworzyć ciąg znaków "abc123\ndef456
. Nazywam to „wyrównywaniem w poziomie”, ponieważ podczas gdy dane wejściowe, po wydrukowaniu, wyglądają tak:
abc
def
i:
123
456
Wydruk po wydrukowaniu będzie wyglądał następująco:
abc123
def456
Zwróć uwagę, jak jedno wejście jest umieszczane obok drugiego.
Wejście
- Dane wejściowe będą ciągami znaków i mogą być dwoma oddzielnymi argumentami lub sekwencją ciągów znaków.
- Znaki w sztuce będą miały kody dziesiętne w zakresie 32-126 (włącznie).
- Wspieranie dowolnej sztuki może być wyrównane zamiast tylko dwóch (ale oczywiście musisz wesprzeć co najmniej dwie).
- Możesz założyć, że każda sztuka będzie miała takie same wymiary i będzie zawierać co najmniej jedną linię.
Musisz mieć możliwość obsługi co najmniej 100 x 100 sztuk postaci.
Aby dostosować się do konwencji w witrynie, kolejność argumentów nie ma znaczenia. Nie ma znaczenia, która sztuka znajduje się po lewej lub prawej stronie.
Wynik
Wyjście będzie zgodne ze sztukami, jak wspomniano powyżej, albo zwrócone, albo wyjście na standardowe wyjście.
Dowolne końcowe białe spacje są opcjonalne.
Pomiędzy dopasowanymi sztukami nie może istnieć żaden wizualny separator.
Sztuki wejściowe i wyjściowe muszą być \n
lub \r
ogranicznikami. Byłoby zbyt trywialne zezwolenie na tablice 2D.
Zgłoszenia mogą być funkcjami lub pełnymi programami.
Przypadki testowe:
"abc\ndef", "123\n456" -> "abc123\ndef456".
"qwertyuiop\n asdfghjkl", "Some other\nTextFiller" -> "qwertyuiopSome other\n asdfghjklTextFiller"
" * \n *** \n*****\n *** \n * \n", " + \n + \n+++++\n + \n + \n" -> " * + \n *** + \n*****+++++\n *** + \n * + \n"
"|"
czy" "
?\r
zamiast\n
?Odpowiedzi:
Płótno , 1 bajt
Wypróbuj tutaj!
źródło
Haskell , 37 bajtów
Wypróbuj online!
IO jako listy linii byłyby po prostu
zipWith(++)
. : Pźródło
Python 2 , 59 bajtów
Wypróbuj online!
źródło
05AB1E , 6 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Galaretka , 4 bajty
Wypróbuj online!
źródło
Perl 5
-0F
, 28 bajtówObejmuje
+2
dla\n
argumentu-F
(to „Kod”, więc należy go liczyć)Podaj dane wejściowe bezpośrednio po sobie na STDIN.
Wypróbuj online!
źródło
Bash + coreutils, 14
Dane wejściowe podano jako dwie nazwy plików jako parametry wiersza polecenia.
Wypróbuj online .
źródło
paste -d "" $@
-d ""
, próbowałem-d""
, co oczywiście nie różni się od-d
Perl 6 , 27 bajtów
Wypróbuj online!
Współpracuje z dowolną liczbą sztuk. IO jako lista list byłaby sprawiedliwa
&[Z~]
.źródło
APL (Dyalog Unicode) , 9 bajtów SBCS
Pełny program Monity (STDIN) dla dowolnej długości listy
\r
-delimitowanych ciągów. Sznurki mogą być nierówne i o różnych szerokościach, o ile mają taką samą liczbę linii. Wydruki (STDOUT) wynikające z art ASCII.Wypróbuj online!
⎕
monit o podanie danych wejściowych⎕FMT¨
formatuj (oceniaj wszystkie znaki kontrolne i zwracaj macierz znaków) każdy,/
łącz je poziomo (redukcja catenation)⊃
ujawnij (ponieważ redukcja zmniejszyła rangę z 1 do 0)źródło
Java 8,
1008478 bajtówWychodzi z
ArrayIndexOutOfBoundsException
STDERR po wydrukowaniu wyniku do STDOUT, co jest dozwolone .-6 bajtów dzięki @ OlivierGrégoire .
Wyjaśnienie:
Wypróbuj online.
źródło
a->b->{for(int i=0;;)System.out.println(a.split("\n")[i]+b.split("\n")[i++]);}
78 bajtów. Nic nie mówi się o tym, że nie ma żadnego dodatkowego efektu ubocznego. Możemy więc po prostu liczyć, aż wystąpi wyjątek.Rubinowy , 48 bajtów
Wypróbuj online!
Lambda bierze dwa łańcuchy i zwraca łańcuch. Ustawienie domyślne
split
separatora na nowy wiersz za pomocą$;=$/;
nie zapisuje żadnych bajtów, ale sprawia, że reszta wygląda nieco ładniej.Ruby , 49 bajtów (dowolnie wiele ciągów)
Wypróbuj online!
Dla żartu. Okazuje się, że możemy zaakceptować tablicę ciągów za dodatkową opłatą wynoszącą tylko 1 bajt.
źródło
JavaScript (ES6), 51 bajtów
źródło
Cud , 21 bajtów
Przykład użycia:
#n
jest używany zamiast\n
do oznaczenia nowego wiersza.Wyjaśnienie
Pełna wersja:
Podziel każdy ciąg znaków w tablicy wejściowej wzdłuż znaków nowej linii, skompresuj zip za pomocą konkatenacji łańcucha i wyślij każdy element.
źródło
Kotlin , 73 bajty
Wypróbuj online!
źródło
Dodaj ++ , 24 bajty
Wypróbuj online!
źródło
C, 96 bajtów
Wypróbuj online!
źródło
JavaScript (ES6), 52 bajty
Pobiera dane wejściowe w składni curry
(a)(b)
.Wypróbuj online!
źródło
Julia 0.6 , 41 bajtów
Wypróbuj online!
źródło
PowerShell ,
5149 bajtówWypróbuj online!
Pobiera dane wejściowe jako ciągi literalne z znakami nowej linii. Możesz także użyć
`n
(separatora nowego wiersza w programie PowerShell, a nie\n
).Najpierw
-split
lewy ciąg wejściowy na znakach nowej linii, który tworzy tablicę, i przechodzimy przez niego|%{...}
. W każdej iteracji łączymy ciąg znaków z właściwym ciągiem wejściowym ponownie dzielonym na znaki nowej linii, indeksowanym i zwiększanym.Są one pozostawione w potoku, a domniemane
Write-Output
po zakończeniu daje nam wynik jako tablicę ciągów, które są drukowane z nowymi liniami między nimi.źródło
APL (Dyalog Unicode) , 22 bajty ( Adám's SBCS )
Wypróbuj online!
źródło
Czerwony , 78 bajtów
Wypróbuj online!
źródło
Japt
-R
,87 bajtówSpróbuj
Wyjaśnienie
Alternatywny
Spróbuj
źródło
Bash , 92 bajty
Wypróbuj online!
Nie golfowany:
Przykłady:
Mam też krótszy, ale kończy się niepowodzeniem, jeśli druga
read
instrukcja zwraca wartość niezerową.Bash , 55 bajtów
Uwaga:
<&3
nie działa na tio.runTen używa deskryptorów plików (
1
i3
) zamiast argumentów:źródło
Węgiel drzewny , 8 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Dodaj 2 bajty, aby zaakceptować wiele danych wejściowych:
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
Dodaj 4 bajty, aby zaakceptować niepakowane dane wejściowe:
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
źródło
JavaScript (Node.js) , 79 bajtów
Wypróbuj online!
Obsługuje dowolną liczbę sztuk ASCII łączących się ze sobą, a nie tylko 2 (jak w 2 poprzednich odpowiedziach JS).
źródło
Czysty , 61 bajtów
Wypróbuj online!
źródło
Swift 4 , 119 bajtów
Wyjaśnienie
Wypróbuj online!
źródło