Trochę tła
Pręty liczące to małe słupki (o długości 3-14 cm), które były używane przez matematyków z wielu kultur azjatyckich przez ponad 2000 lat do reprezentowania dowolnej liczby całkowitej lub ułamka. (W tym zadaniu skupimy się jednak na liczbach całkowitych bez znaku). Była też wersja napisana, zwana liczbami prętowymi.
Oto jak to działa:
(Jeśli w którymkolwiek momencie się pomylisz, sprawdź reprezentację ascii każdej cyfry i kilka przykładów, które zamieściłem na dole)
Liczby prętowe to prawdziwy system liczb pozycyjnych z cyframi dla 1-9 i pustymi dla 0. Cyfry składają się z linii poziomych i pionowych; im więcej linii, tym wyższa cyfra. Po przekroczeniu piątej umieścisz poziomą linię na górze, aby dodać 5 do liczby linii poniżej. Jedna pionowa linia to 1, dwie pionowe linie 2, pięć pionowych linii to 5, jedna pionowa linia z poziomą linią na górze to 6, cztery pionowe linie z poziomą linią na górze to 9 (najwyższa cyfra).
3-cyfrowa pionowa:
|||
|||
|||
|||
|||
Aby ułatwić odczytanie liczb prętów, zastosowano inną notację dla każdej cyfry na przemian. Drugi zapis zamienia rolę linii poziomych i pionowych. tak że 3 jest reprezentowane przez trzy poziome linie, a 8 przez trzy poziome linie z pionową linią na górze.
Pozioma 8 cyfr:
|
|
__|__
_____
_____
Wiedząc, która notacja jest łatwa, jak wspomniano wcześniej, tehy są używane na przemian, a Sun Tzu napisał, że „jeden jest pionowy, a dziesięć jest poziomy”. Tak więc najbardziej wysunięta na prawo cyfra jest pionowa i od tego momentu zmieniamy naprzemiennie.
Wyzwanie
Pręty te były używane do reprezentowania liczb ujemnych i ułamków (jak wyjaśniono w artykule na ich temat w Wikipedii . Na potrzeby tego wyzwania skupimy się tylko na dodatnich liczbach całkowitych. Cel jest prosty:
Napisz funkcję lub pełny program, który pobiera wartość całkowitą jako dane wejściowe w dowolny sposób i wypisuje liczbową reprezentację tej liczby całkowitej na STDOUT (możesz również zapisać do pliku, jeśli to się lepiej sprawdzi). Najkrótszy kod w bajtach wygrywa.
Każda cyfra będzie reprezentowana przez 5x5 znaków ascii i oddzielona dwoma kolumnami po 5 spacji. Dokładna reprezentacja, której użyjesz dla każdej cyfry, jest następująca:
space between two digits (two colums):
0 digit, both vertical and horizontal (five columns):
1 digit, vertical:
|
|
|
|
|
2 digit, vertical:
| |
| |
| |
| |
| |
3 digit, vertical:
|||
|||
|||
|||
|||
4 digit, vertical:
|| ||
|| ||
|| ||
|| ||
|| ||
5 digit, vertical:
|||||
|||||
|||||
|||||
|||||
6 digit, vertical:
_____
|
|
|
|
7 digit, vertical:
_____
| |
| |
| |
| |
8 digit, vertical:
_____
|||
|||
|||
|||
9 digit, vertical:
_____
|| ||
|| ||
|| ||
|| ||
1 digit, horizontal:
_____
2 digit, horizontal:
_____
_____
3 digit, horizontal:
_____
_____
_____
4 digit, horizontal:
_____
_____
_____
_____
5 digit, horizontal:
_____
_____
_____
_____
_____
6 digit, horizontal:
|
|
|
|
__|__
7 digit, horizontal:
|
|
|
__|__
_____
8 digit, horizontal:
|
|
__|__
_____
_____
9 digit, horizontal:
|
__|__
_____
_____
_____
Cyfry należy wydrukować obok siebie. Końcowe spacje poza obwiednią ostatniej cyfry są niedozwolone. Wymagane są końcowe spacje do wypełnienia ramki granicznej ostatnich cyfr. Powinieneś zakończyć wynik pojedynczym znakiem nowej linii. Spacje wiodące, które nie należą do ramki granicznej pierwszej cyfry, są również zabronione.
Przykładowe dane wyjściowe
Linie zaczynające >
się od należy interpretować jako dane wejściowe.
>12
| |
| |
| |
| |
_____ | |
>8037
| _____
| | |
__|__ _____ | |
_____ _____ | |
_____ _____ | |
>950
_____ _____
|| || _____
|| || _____
|| || _____
|| || _____
źródło
Odpowiedzi:
Python 2 - 216
Mój pierwszy strzał może być czymś do wyjęcia, ale mój mózg boli, więc na razie jest wystarczająco dobry
źródło
JavaScript (ES6) 223
Funkcja z parametrem numerycznym, wyjście na konsolę. Uwaga: Jeśli parametr wejściowy może być łańcuchem, kod będzie o 5 znaków krótszy i bez ograniczenia 17 cyfr znaczących liczb JS.
Test
Przetestuj w konsoli Firefox.
F(12)
Wynik
F(8037)
Wynik
F(950)
Wynik
Nie golfił
źródło
PowerShell , 229 bajtów
Wypróbuj online!
Gdzie ciąg zawiera cyfry:
pręty pionowe:
pręty poziome:
Rozwinięty skrypt:
źródło