Wiele osób na tej stronie używa języków ezoterycznych , a ponieważ języki te są niezwykłe i trudne do zrozumienia, często piszą wyjaśnienia w określonym formacie. Na przykład, jeśli kod był
abcdefghijklmnop
I te języki używają #
komentarzy, napisaliby takie wyjaśnienie:
a #Explanation of what 'a' does
bc #Bc
d #d
e #Explanation of e
fgh #foobar
ij #hello world
k #etc.
l #so on
mn #and
op #so forth
Często też to robię, ale za każdym razem, gdy to robię, czuję, że tworzenie układu tekstu jest naprawdę nieznośne i czasochłonne. Więc chcę, żebyś stworzył dla mnie „Esolang-Comment-Template-Generator”. Na przykład, jeśli zignorujemy komentarze, poprzedni kod ma ten szablon:
a #
bc #
d #
e #
fgh #
ij #
k #
l #
mn #
op #
Wyzwanie:
Musisz napisać program lub funkcję, która pobiera dwa ciągi wejściowe i wysyła ten „Szablon komentarza Esolang”. Pierwszym wejściem będzie kod, ale z paskami ( |
) wstawionymi tam, gdzie idą nowe linie. Drugie dane wejściowe wykorzystamy w komentarzach. Więc nasz ostatni przykład miałby to dla danych wejściowych:
"a|bc|d|e|fgh|ij|k|l|mn|op", "#"
Niestety wyklucza to umieszczanie słupków w danych wejściowych kodu, ale to jest OK. Możesz założyć, że komentarzem będzie pojedynczy znak. Dla uproszczenia znak komentarza nie będzie paskiem. Wprowadzony kod będzie zawierał tylko ASCII do wydruku i nie będzie zawierał żadnych nowych wierszy.
Mam nadzieję, że możesz wyciągnąć wnioski z przypadków testowych, ale postaram się wyjaśnić kilka rzeczy.
Musisz podzielić wejście kodu na „sekcje kodu” na każdym pasku. Następnie każda sekcja kodu jest wyprowadzana w osobnym wierszu i dopełniana lewą długością całego poprzedniego kodu (bez pasków). Następnie każdy wiersz jest dopełniany z odpowiednią ilością spacji, tak aby ostatnie dwa znaki w każdym wierszu to „Jedna dodatkowa spacja” + „Znak komentarza”.
Dozwolony jest jeden znak nowej linii.
Oto inny przykład. Dla danych wejściowych
"Hello|World", "/"
Pierwsza sekcja kodu to „Hello”, a druga to „World”. Powinien więc dać wynik:
Hello /
World /
Oto kilka innych próbek:
Input:
"a|b|c|d|e|f|g", ","
Output:
a ,
b ,
c ,
d ,
e ,
f ,
g ,
Input:
"abcdefg", ":"
Output:
abcdefg :
Input:
"4|8|15|16|23|42", "%"
Output:
4 %
8 %
15 %
16 %
23 %
42 %
Input:
"E|ac|h s|ecti|on is| one c|haracte|r longer| than the| last!", "!"
Output:
E !
ac !
h s !
ecti !
on is !
one c !
haracte !
r longer !
than the !
last! !
Input:
"This|Code|has||empty||sections", "@"
Output:
This @
Code @
has @
@
empty @
@
sections @
Zasady:
Możesz wziąć te dane wejściowe i wyjściowe w dowolnym rozsądnym formacie. Na przykład, czytanie / zapisywanie pliku, STDIN / STOUT, argumenty funkcji / wartość zwracana itp. Jak zwykle jest to golf-golf , więc staraj się, aby Twój kod był jak najkrótszy, a wygrasz, jeśli uda ci się znaleźć najkrótsze rozwiązanie w Twoim języku! Wybiorę również najkrótsze rozwiązanie jako zwycięzcę ogólnego. Standardowe luki są zabronione.
|
postaci, byłby miły, więc możesz się wyjaśnić
|
)?