Wprowadzenie
Większość golfistów tutaj dodaje wyjaśnienia do swoich zgłoszeń, dzięki czemu łatwiej zrozumieć, co się dzieje. Zazwyczaj linie kodowe idą po lewej stronie, a odpowiednie objaśnienie po prawej stronie z pewnego rodzaju separatorem. Aby wyglądać ładnie, separatory znajdują się w tej samej kolumnie. Również długi tekst wyjaśniający jest zwykle zawijany do następnego wiersza, więc czytelnicy nie muszą przewijać w poziomie, aby przeczytać wszystko.
Jednak, gdy chcesz edytować to wyjaśnienie, ponieważ stworzyłeś szalone gry w golfa, często spędzasz czas, aby wyjaśnić coś ładniej. Ponieważ jest to bardzo powtarzalne zadanie, chcesz do tego napisać program.
Wyzwanie
Biorąc pod uwagę kilka linii kodu z objaśnieniem i separator, wypisz ładnie sformatowany kod z objaśnieniem.
Przykład
Wejście
shM-crz1dc4. "ANDBYOROF # z = wejście
rz1 # przekonwertować wejście na wielkie litery
cd # podziel wejście na spacje
c4. "ANDBYOROF # tworzy listę słów z zapakowanego ciągu, które należy zignorować
- # odfiltruj te słowa
hM # bierze tylko pierwszą literę wszystkich słów
s # połącz je w jeden ciąg
Wynik
shM-crz1dc4. "ANDBYOROF # z = wejście
rz1 # przekonwertować wejście na wielkie litery
cd # podziel wejście na spacje
c4. "ANDBYOROF # tworzy listę słów z zapakowanego łańcucha, który będzie
# zignorowano
- # odfiltruj te słowa
hM # bierze tylko pierwszą literę wszystkich słów
s # połącz je w jeden ciąg
Jeden plik cookie dla pierwszego, który może dowiedzieć się, co robi ten kod.
Algorytm formatowania
- Znajdź najdłuższą linię kodu (bez objaśnienia i spacji między kodem a separatorem).
- Dodaj 5 spacji po tym wierszu kodu i dołącz odpowiedni separator z objaśnieniem. To jest teraz linia odniesienia.
- Dopasuj co drugą linię do tej linii odniesienia, aby separatory znajdowały się w tej samej kolumnie.
- Zawiń wszystkie linie dłuższe niż 93 znaki w nowy wiersz w następujący sposób:
- Znajdź ostatnie słowo, którego koniec znajduje się w kolumnie 93 lub niższej.
- Weź wszystkie słowa po tym i zawiń je do nowego wiersza z wiodącym separatorem i prawidłowymi odstępami. Spację między tymi dwoma słowami należy usunąć, więc pierwszy wiersz kończy się słowem, a drugi wiersz zaczyna się od jednego po separatorze.
- Jeśli wynikowa linia jest nadal dłuższa niż 93 znaki, zrób to samo, aż każda linia będzie miała poniżej 94 znaków.
Notatki
- Słowo składa się ze znaków spacji. Słowa są oddzielone pojedynczą spacją.
- Zawijanie słów jest zawsze możliwe. Oznacza to, że żadne słowo nie jest tak długie, że uniemożliwiłoby to zawijanie.
- Dane wejściowe będą zawierały tylko ASCII do wydrukowania i nie będą miały żadnych białych spacji
- Separator pojawi się tylko raz na linię.
- Chociaż wyjaśnienie może mieć nieograniczoną długość, separator i kod mogą mieć tylko łączną maksymalną długość
93 - 5 = 87znaków. 5 znaków to spacje między kodem a separatorem. Kod i separator zawsze będą miały co najmniej jeden znak. - Dane wejściowe mogą zawierać puste linie. Nie będą one nigdy zawierać żadnych znaków (z wyjątkiem nowego wiersza, jeśli weźmiesz dane jako ciąg wielowierszowy). Te puste wiersze również muszą być obecne na wyjściu.
- Każda linia będzie zawierała kod, separator i wyjaśnienie. Wyjątkiem są puste linie.
- Możesz wziąć dane wejściowe w dowolnym rozsądnym formacie, o ile nie są one wstępnie przetworzone. Podaj w odpowiedzi jasno, którego używasz.
- Dane wyjściowe mogą być ciągiem wieloliniowym lub listą ciągów.
Zasady
- Dozwolona funkcja lub pełny program.
- Domyślne reguły wejścia / wyjścia.
- Obowiązują standardowe luki .
- To jest golf golfowy , więc wygrywa najmniej bajtów. Tiebreaker to wcześniejsze zgłoszenie.
Przypadki testowe
Format wejściowy tutaj to lista ciągów reprezentujących linie i pojedynczy ciąg dla separatora. Oba są oddzielone przecinkiem. Dane wyjściowe to lista ciągów znaków.
['shM-crz1dc4. "ANDBYOROF # z = input', '', 'rz1 # przekonwertować dane na wielkie litery', 'cd # podzielić wejście na spacje', 'c4." ANDBYOROF # stworzyć listę słów z zapakowanego ciąg, który należy zignorować ',' - # odfiltruj te słowa ',' hM # weź tylko pierwszą literę wszystkich słów ',' s # połącz je w jeden ciąg '], "#" -> [' shM-crz1dc4 . "ANDBYOROF # z = input ',' ',' rz1 # przekonwertować wejście na wielkie litery ',' cd # podzielić wejście na spacje ',' c4." ANDBYOROF # utwórz listę słów z zapakowanego ciągu znaków, który będzie " , „# ignored”, „- # odfiltruj te słowa ',' hM # weź tylko pierwszą literę wszystkich słów ',' s # połącz je w jeden ciąg '] ['codecodecode e # Explanation', 'sdf dsf sdf e # A Bardzo, bardzo, bardzo, bardzo, bardzo, bardzo, bardzo, bardzo długo, długo, długo, długo, długo, długo, długo, długo, długo, długie wyjaśnienie i to staje się coraz dłuższe ”,„ ”,„ niektóre więcej codee # i trochę więcej wyjaśnień ”],„ e # ”-> ['codecodecode e # Explanation', 'sdf dsf sdf e # A Bardzo bardzo bardzo bardzo bardzo bardzo bardzo bardzo bardzo bardzo długo długo długo długo', 'e # długo długie długie długie długie długie objaśnienia i ciągle się wydłużają ”,„ e # i dłużej ”,„ ”,„ trochę więcej kodu e # i trochę więcej wyjaśnień ”]
Happy Coding!
length of the longest code-line + 5. Dotyczyło to również wierszy, które zawierają tylko wyjaśnienie, ponieważ zostały zawinięte.