4-stanowe kody kreskowe
Wiele usług pocztowych (Royal Mail UK, Canada Post, US Mail itp.) Używa 4-stanowego kodu kreskowego do kodowania informacji o swojej poczcie. Renderowane w ASCII może wyglądać mniej więcej tak:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
4-stanowy kod kreskowy to rząd pasków. Każdy słupek może być przedłużony w górę, w dół lub oba, co daje 4 możliwości. Oznacza to, że każdy słupek zasadniczo reprezentuje podstawową 4 cyfrę:
| | Bar: | | | | | | Cyfra: 0 1 2 3
Problem z tą symboliką polega na tym, że każdy kod kreskowy jest prawidłowym, innym kodem kreskowym do góry nogami: drastycznie zmienia znaczenie, jeśli orientacja jest nieprawidłowa. Dlatego rozruch i zatrzymanie sekwencji są zwykle realizowane tak, że skaner można obliczyć, w jaki sposób jest on powinien być odczytany.
Do celów tego wyzwania wykorzystamy sekwencję start / stop określoną przez Australia Post: każdy kod kreskowy zaczyna się i kończy 1 0
sekwencją.
Wyzwanie
Twoim zadaniem jest napisanie programu lub funkcji, która przy dodatniej liczbie całkowitej N
przekształci go w 4-stanowy kod kreskowy ASCII, w którym każdy słupek (z wyjątkiem sekwencji start / stop) reprezentuje cyfrę w reprezentacji base-4 N
.
Przykład:
Biorąc pod uwagę całkowitą 19623
, chcielibyśmy najpierw przekonwertować go do swojej bazy-4 reprezentacji 10302213
.
Następnie zamapowalibyśmy każdą cyfrę na odpowiednim pasku:
1 0 3 0 2 2 1 3 | | | | | | | | | | | | | | | |
Na koniec dodamy sekwencje start / stop:
Początek Koniec: 1 0 1 0 | | | | | | | | | | | | | | | | | | | | | |
Wynikowy kod kreskowy powinien stanowić wynik programu.
Zasady:
- Dane wejściowe będą dodatnią liczbą całkowitą w zakresie standardowej wielkości całkowitej twojego języka.
- Wyjście:
- Może być albo listą linii, albo łańcuchem zawierającym nowe linie.
- Może zawierać wiodące lub końcowe znaki nowej linii / spacje, o ile kształt pozostaje nienaruszony.
- Powinien wyświetlać kod kreskowy o powyższym formacie - musi używać znaku kreski (
|
) i znaku spacji () podczas rysowania pasków, a między każdym pionowym paskiem powinna znajdować się 1 spacja.
- To jest golf golfowy , więc wygrywa najkrótszy program (w bajtach)!
Przypadki testowe
4095:
| | | | | | | | | | | | | | | | | | | | | | | |
4096:
| | | | | | | | | | | | | |
7313145:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |