Wyzwanie:
Niektóre ascii-art są trudne do zrobienia, ale ułatwiają czytanie komentarzy do kodu, szczególnie gdy kod jest gęsty. Wyzwanie polega na stworzeniu prostego narzędzia, które zamienia komentarze w proste ascii-art za pomocą strzałek. Komentarze do modyfikacji są rozdzielone pustymi komentarzami.
Na przykład, załóżmy, że składnia komentarza Haskell przekształca to:
--
-- Here's a thing
-- Here's another thing
-- The most important thing
-- * * *
--
f x=x+1*x*1*1*0
Do tego:
-- /------------< Here's a thing
-- | /-------< Here's another thing
-- | | /-< The most important thing
-- | | |
-- v v v
f x=x+1*x*1*1*0
Zasady:
- Twoja odpowiedź może być funkcją lub pełnym programem
- Możesz wybrać język, z którym jest przeznaczony, zastępując „-” dwoma lub więcej znakami ograniczającymi komentarz w pewnym języku
- Jeśli używasz innego formatu komentarza, który wymaga początkowych i końcowych ograniczników, każda linia przeformatowanych sekcji musi być poprawnym komentarzem
- Sekcje, które należy sformatować, są oznaczone pustym komentarzem „\ n - \ n”
- Oprócz dodawania nowych wierszy program nie może zmieniać żadnych danych wejściowych poza sekcjami ograniczonymi
- Komentarz wypełniony dowolną liczbą spacji może pojawić się bezpośrednio przed odpowiednio sformatowaną sekcją wyniku
- Standardowe luki są niedozwolone
Dodatkowe przykłady:
(input)
--
--
(output)
nothing
(input)
[Code Here]
--
-- important
-- *
--
(output)
[Code Here]
-- /-< important
-- |
-- v
(input)
--
-- Do
-- Re
-- Mi
-- Fa
-- So
-- *****
--
(output)
-- /-----< Do
-- |/----< Re
-- ||/---< Mi
-- |||/--< Fa
-- ||||/-< So
-- |||||
-- vvvvv
Punktacja:
- Wygrywa najmniej bajtów
- Zgłoszenia bez wyjaśnień lub nietrywialne przykładowe dane wejściowe / wyjściowe nie będą brane pod uwagę (chociaż pozostawiam okres karencji, aby dać czas na dodanie takich informacji)
Odpowiedzi:
Ruby, 160 znaków
Przykładowy przebieg:
Krótki opis:
źródło
JavaScript (ES6),
418,237,233, 236 bajtówUff, to moje pierwsze zgłoszenie do CG.
Wydaje mi się, że zajęło to coś zupełnie innego niż Washington Guedes. Skończył 54 bajty krótsze niż jego pierwsze przejście. Ręczne rozwiązywanie tego wszystkiego było wyczerpujące. Żałuję, że nie jestem jeszcze w stanie wyeliminować pętli while, co pozwoliłoby mi również ograniczyć zwrot.Całkowicie przepisz, czerpiąc częściowo inspirację z kilku innych odpowiedzi. Muszę zamknąć wszystko na mapach, dzięki czemu powrót jest znacznie lepszy. Fragment kodu zawiera skomentowaną wersję.
Wziął jeszcze kilka bajtów i sprawił, że przykład działał na sobie. (Będziesz potrzebował większego monitora.) :)
Zapomniałem całej litery w specyfikacji! Na szczęście dodanie wiodącego „<” było drobną, trywialną poprawką.
Pokaż fragment kodu
źródło
Python 2, 299 bajtów
Oczekuje końca nowej linii w danych wejściowych
Wyjaśnienie / przykład
Wejście:
Dzieli dane wejściowe według
--\n
. Co drugi ciąg jest ograniczonym blokiem komentarzy.Przebiega przez każdy ciąg. Jeśli ciąg nie jest komentarzem, po prostu drukuje ciąg. Inaczej:
Dzieli każdą linię w bloku komentarza.
Tworzy dolne dwie linie, zastępując linie
*
s przy pomocyv
i|
.Dla każdego wiersza komentarzy (do tyłu) usuń kolumnę z prawej strony, dodaj
/
,-
uzupełnij i dodaj komentarz.Drukuj wszystko
Mniej golfa:
źródło
JavaScript (ES6), 253
Jako funkcja anonimowa, z kodem do sformatowania jako parametrem ciągu i zwracającym sformatowany kod.
Notatki
Mniej golfa
Test
Pokaż fragment kodu
źródło