Wyzwanie polega na wygenerowaniu linijki liczenia znaków ASCII w następującym formacie:
+-------------------------------------------------------------------------+
|| | | | | | | | | | | | | | | |
|0 10 20 30 40 50 60 70 |
| |
+-------------------------------------------------------------------------+
Długość linijki powinna być skalowalna do dowolnej wielokrotności 10.
Zasady:
- Linijka musi być pozioma.
- Powiedzmy, aby uprościć sprawę, że linijka musi działać do znaku 1000, wszystkie cyfry wyrównane do lewej, jedna spacja za ostatnią liczbą .
- Pytanie o linijkę o zerowej długości powinno wypisać NaR
- Liczby ujemne powinny wydrukować odwróconą linijkę (-90, -80, -70, ...) z liczbami wyrównanymi do prawej, w dokładnie takim samym formacie jak powyżej
I samo drukowanie na konsoli jest w porządku
Gotowy, ustaw, golf!
Odpowiedzi:
Python - 227
232Obsługuje całą specyfikację
edycja: ulepszone wyrażenie generatora.
Obsługa wyrównanych do prawej liczb ujemnych dodaje zaskakującą ilość kodu.
Przykładowe wyniki:
-30 30
-30 -30
100 150
-1000 -950
źródło
Nie pokonasz dzisiaj dynamicznych języków, ale w każdym razie ...
Haskell, 341
Pozwoliłem sobie na wymianę rzeczywistych znaków ASCII z lepiej wyglądającymi znakami rysunkowymi w polu Unicode.
źródło
Python 2.7,
342 266260 znakówzwraca
krotkę każdegociąguwiersza, który można następnie wydrukować lub zapisać do pliku (wolę ten drugi dla długości dłuższych niż 70, ponieważ konsola jsut sprawi, że będzie wyglądał na pomieszany z zawijaniem)Zakłada
y
się, żejest łańcuchem (raw_input () n python lub sys.argv [1], jeśli chcesz wywoływać za pomocą cmd)liczbę całkowitą (np. Z input () w 2.x lub int (input ()) w 3.x )Uczyniłem tę funkcję bardziej elastyczną
edycja: zmniejszona do 266 znaków. nie zwraca już krotki, ale ciąg. Teraz jako argument przyjmuje liczbę całkowitą zamiast ciągu
edit2: zmniejszono do 260 znaków, funkcja jednowierszowa
Uwaga: obsługuje liczby ujemne, ale nie usprawiedliwia (tak naprawdę nie sądzę, że uzasadnienie jest zbyt ważne
źródło
PowerShell ,
256253233225222 bajtówWypróbuj online!
Mniej golfa:
źródło
Python,
291241 znakówCałkiem proste podejście. Jestem pewien, że można go znacznie poprawić.
Starałem się postępować zgodnie z wytycznymi w komentarzach, ale nie popieram liczb ujemnych (mam nadzieję, że był to żart).
To jest program, który wypisuje linijkę na standardowe wyjście. Jeśli ekran jest wystarczająco szeroki, powinien obsługiwać dość długie linijki.
źródło
C ++, 392
Jest to programowane za pomocą konsoli Windows, dlatego właśnie wybrałem maksymalny rozmiar linijki to 70, po prostu zawiesi się na coś większego. Liczby ujemne (do -70) i 0 są obsługiwane poprawnie.
źródło
Python - 208
(nie obsługuje wyrównanych do prawej liczb ujemnych)
Myślę, że moją ulubioną sztuczką było wygenerowanie ciągów, które są znacznie dłuższe niż to konieczne, a następnie ich obcięcie, na przykład:
Chciałbym tylko, żeby była bardziej zwięzła opcja formatowania ciągów dla wyrównania do lewej strony (chyba że jest taka, o której po prostu nie wiem)
źródło
Perl 5.14,
198224 znakówPrawdopodobnie można go znacznie skrócić, ale oto
pierwszadruga próba (z wstawionymi podziałami linii dla czytelności):EDYCJA: Edytowane, aby umrzeć z „NaR”, gdy wejście jest
0
celu obsługi zakresu ujemnego.EDYCJA 2: Nie miałem okazji nad tym więcej popracować i dopiero teraz zauważyłem regułę wyrównania do liczby ujemnej, której mój kod nie obsługuje, więc myślę, że inne rozwiązanie powinno zostać oznaczone jako odpowiedź, jeśli termin został osiągnięty.
źródło