Pracujesz w wirtualnej, staromodnej maszynie drukarskiej. Aby pomóc Ci szybciej rozmieszczać litery o stałej szerokości, decydujesz się na jak najkrótszy program, który może ci pomóc. Biorąc pod uwagę ciąg tekstu i rozmiar strony, wygeneruj i wydrukuj każdą stronę tekstu.
Przykłady
Na przykład, przy szerokości strony 14, wysokości 7 i pewnym tekście, oto twoja książka:
14, 7, "Fruits make an extremely good snack due to their utterly scrumptious sweetness. They are also very healthy for you."
+------------+
| Fruits |
| make an |
| extremely |
| good snack |
| due to |
+------------+
+------------+
| their |
| utterly |
| scrumptio- |
| -us |
| sweetness. |
+------------+
+------------+
| They are |
| also very |
| healthy |
| for you. |
| |
+------------+
Oto podstawowe ustawienia strony:
|---i.e.14---|
+------------+ -
| Xxxxxxxxxx | |
| Xxxxxxxxxx | i.
| Xxxxxxxxxx | e.
| Xxxxxxxxxx | 7
| Xxxxxxxxxx | |
+------------+ -
Parę rzeczy
- Pomiędzy krawędziami strony a tekstem jest jeden margines.
- Szerokość i wysokość obejmują krawędzie pudełka, jeśli nie było to jasne.
- Owijanie występuje tylko wtedy, gdy słowo nie mieści się w jednej linii.
- Program musi być w stanie wydrukować tyle stron, ile potrzeba, i tylko tyle.
- Twój program musi obsługiwać dowolny rozmiar strony, nie tylko 14 na 7.
- To jest golf golfowy, więc wygrywa najmniejsze rozwiązanie w bajtach (w dowolnym języku).
- Nie rujnuj zabawy. Standardowe luki są oczywiście niedozwolone.
Aha, a przy okazji:
+------------+
| May the |
| best book |
| publisher |
| win. Good |
| Luck! |
+------------+
+------------+
| Best |
| program |
| so far: |
| Charcoal |
| |
+------------+
for example 14
że toe.g.
scru-/-mpt-/-ious
)Odpowiedzi:
Python 2 ,
306304283279 bajtówWypróbuj online!
źródło
L=len
do zapisania 2 bajtów łącznie ...7, 3, "Three Is The Magic Number!"
), daje wiodącą pustą stronę.Węgiel drzewny ,
10583 bajtówWypróbuj online! Łącze jest gadatliwy wersja kodu
deverbosifier nie może obsłużyć. Jeśli wiodące puste wiersze byłyby dopuszczalne, mógłbym sprowadzić je do 76 bajtów:ⅈ
iⅉ
nilary operatorówWyjaśnienie:
Wprowadź szerokość do
q
i wysokość doh
.Przejdź do pozycji, która uruchomi pierwsze pole do narysowania, ale bez generowania górnego marginesu.
Zapętl wszystkie słowa w ciągu wejściowym.
Powtarzaj, gdy słowo jest zbyt szerokie, aby zmieściło się w pudełku.
Wciśnij tyle słowa, które będzie pasować, a łącznikiem.
Prefiks łącznika do reszty słowa.
Naciśnij resztę słowa.
Pętla nad wszystkimi dzielonymi wyrazami.
Sprawdź, czy słowo pasuje do bieżącej linii.
Jeśli tak, wydrukuj spację.
W przeciwnym razie przejdź do początku następnego wiersza.
Sprawdź, czy potrzebujemy nowego pudełka.
Jeśli tak, narysuj pole.
Na koniec wydrukuj słowo.
źródło
Perl 5 ,
203182 + 1 (-a
) = 183 bajtówWypróbuj online!
źródło
SOGL V0.12 , 92 bajty
Wypróbuj tutaj!
źródło
JavaScript (ES8), 242 bajty
Dziękujemy @ Tvde1 za zgłoszenie błędu
Wypróbuj online!
Skomentował
źródło
12
i7
, niektóre wiersze / słowa są odwrócone.Galaretka , 93 bajty
Pełen program, biorąc trzy argumenty (
text
,width
,height
), który drukuje stron.Wypróbuj online! NB Zbyt mało wydajny, aby uruchomić przykład z PO w granicach 60 sekund.
( 97 bajtów, jeśli pusta linia między stronami jest faktycznie wymaganiem)
W jaki sposób?
źródło
PHP, 299 bajtów
Uruchom z
php -nr '<code>' <width> <height> '<text>'
lub lub wypróbuj online .źródło