Czas na nowe wyzwanie typograficzne ! Jest to powszechny problem podczas wklejania kopii między różnymi formatami dokumentów: dzieleniem wyrazów. Chociaż zmniejsza nierówność układu wyrównanego do lewej lub wyrównuje odstępy w uzasadnionym układzie, jest to kompletny problem, gdy plik PDF nie jest poprawnie skonstruowany i zachowuje łączniki w układzie, co utrudnia edytowanie lub ponowne wczytywanie tekstu.
Na szczęście, jeśli mamy wierzyć niezliczonym poradnikom, nic nie stanowi problemu, jeśli postrzegasz to jako wyzwanie. Uważam, że te poradniki bez wyjątku odnoszą się do PPCG, gdzie każdy problem zostanie rozwiązany, jeśli zostanie przedstawiony jako wyzwanie. Twoim zadaniem jest usunięcie obrażającego dzielenia wyrazów i łamania linii z tekstu, aby był gotowy do wklejenia w dowolnym edytorze tekstu.
Opis problemu
Napisz program lub funkcję, która w razie potrzeby usunie dzielenie wyrazów i łamanie linii. Dane wejściowe będą ciągiem znaków stdin
(lub najbliższą alternatywą) lub jako wejście funkcji. Wyjście (na stdout
lub najbliższym wyjściem alternatywnym lub funkcja) będzie „poprawione” text. Ten tekst powinien być możliwy do bezpośredniego skopiowania. Oznacza to, że wyjściowe lub końcowe wyjście jest OK, ale dodatkowe wyjście w połowie poprawionego tekstu (np. Początkowe spacje w każdym wierszu) nie jest .
Najbardziej podstawowy przypadek jest następujący (uwaga: brak spacji końcowych)
Lorem ipsum dolor sit amet, con-
sectetur adipiscing elit. Morbi
lacinia nisi sed mauris rhoncus.
Obrażający łącznik i łamanie wierszy powinny zostać usunięte, aby uzyskać
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi lacinia nisi sed mauris rhoncus.
Należy jednak przestrzegać kilku wyjątków.
- Podwójne znaki nowej linii oznaczają podział akapitu i powinny zostać zachowane.
- Właściwe rzeczowniki i nazwy nigdy nie są dzielone na dwie linie, chyba że zawierają już myślnik (np. Równania Naviera-Stokesa). Przerwanie linii powinno zostać usunięte, ale myślnik zachowany. Przypadki te można zidentyfikować, wpisując tylko wielką literę.
- Czasami myślnik wskazuje grupę słów (np. XIX i XX wiek). Kiedy dzieje się to w dwóch liniach, jest to oznaczone wiodącym odstępem w następnym wierszu.
Przykład: (poglądy wyrażone w tym przykładzie są fikcyjne i niekoniecznie odzwierciedlają pogląd autora; przeciwnicy metody Runge-Kutta-Fehlberg są równie mile widziani, aby wziąć udział w tym wyzwaniu)
Differential equations can
be solved with the Runge-Kutta-
Fehlberg method.
Developed in the nineteenth-
or twentieth century, this
method is completely FANTAS-
TIC.
stanie się
Differential equations can be solved with the Runge-Kutta-Fehlberg method.
Developed in the nineteenth- or twentieth century, this method is completely FANTASTIC.
Podziały wiersza mogą być punktami kodowymi ASCII \n
lub \r\n
ASCII, w zależności od preferencji, a łącznik jest prostym ASCII -
(znakiem minus). Obsługa UTF-8 nie jest wymagana. To wyzwanie polega na grze w golfa , więc wygrywa najkrótszy kod.
źródło
GNU Sed, 68
Wynik obejmuje +2 za
-zr
opcje przekazane dosed
.Zakłada, że strumień wejściowy nie zawiera żadnych
:
znaków. Jeśli nie jest to do przyjęcia, wówczas wszystkie:
w kodzie mogą zostać zastąpione innymi znakami ASCII, których nie można wydrukować, np. 0x7 BEL.źródło
TeaScript , 76 bajtów
Bardzo „brutalna siła”.
Wypróbuj online
źródło