Moim pierwszym programem do układania puzzli i gry w golfa jest Seven-Slash Display . Oto moje pierwsze wyzwanie, również oparte na 7-segmentowym wyświetlaczu.
Często zastanawiam się, oprócz cyfr, jakie litery mogę wyświetlić za pomocą prostego 7-segmentowego wyświetlacza. Okazuje się, że można wyświetlić wiele liter. W rzeczywistości wszystkie litery oprócz K, M, V, W, X można wyświetlić za pomocą pojedynczego wyświetlacza 7-segmentowego. Wynika to z faktu, że możesz wyświetlać małe lub duże litery. na przykład
„abcdef” może być wyświetlany jako
_ _ _ _
!_!!_ ! _!!_ !_
! !!_!!_ !_!!_ !
Zauważ, że każdy znak to macierz 3x3 złożona z !i _.
Oczywiście 7-segmentowy wyświetlacz może służyć do wyświetlania liczb i symboli:
_ _ _ _ _ _ _
! _ !_ !_ ! _! !!_ !_!! !_!!_!
! _!!_ !_! !_! ! _!! !_ ! ! _!
Niektóre litery mogą mieć zarówno duże, jak i małe litery:
_ _
! _ !_!!_ ! ! ! _ ! !
!_ !_ ! !! ! ! !!_!!_!!_!!_!
Oto pełny zestaw znaków:
_ _ _ _ _ _ _ _ _
! ! ! _! _!!_!!_ !_ !!_!!_! _ !_ _ _ _!
!_! !!_ _! ! _!!_! !!_! _! !_ ! ! !!_!!_! !
_ _ _ _ _ _ _ _ _ _
!_!!_ ! _!!_ !_ ! !_! ! !! _ ! !!_!!_! _ !_ !_ ! !!_! _!
! !!_!!_ !_!!_ ! !_!! ! !!_!!_ ! !!_!! !! _!!_ !_! _!!_
Zwróć uwagę, że istnieją białe spacje ( ), myślnik ( -) i znak zapytania ( ?). Pismo I, Oi Zsą takie same jak numery 1, 0i 2odpowiednio.
W tym wyzwaniu napiszesz program lub funkcję do wyświetlania łańcucha przy użyciu powyższego formatu wyświetlania 7-segmentowego.
Zasady
Możesz napisać program lub funkcję
To jest code-golf, wygrywa najkrótszy kod w bajtach
Twój program lub funkcja powinna pobierać dane wejściowe ze STDIN lub jako parametr. I wysyła ciąg do STDOUT lub jako ciąg w 3 liniach bez spacji wiodących, ale zakończony znakiem nowej linii.
CHIOUPrawidłowo obchodź się z górną / dolną skrzynką .Opcjonalnie możesz wydrukować końcowe białe spacje
Musisz postępować zgodnie z powyższym formatem. Użycie podkreślnika
_i wykrzyknika!do utworzenia wyświetlacza 7-segmentowego.Musisz obsługiwać białe znaki ( )
, myślnik (-) i znak zapytania (?)Jeśli ciąg zawiera nieobsługiwany znak (k, m, v, w, x), wyświetlany jest znak pojedynczego błędu (linia 3 horyzontu, patrz przykład). Oprócz 5 nieobsługiwanych znaków można założyć, że dane wejściowe składają się tylko z obsługiwanego zestawu znaków.
Zdecydowałem się nie mieć litery na małe litery L (
l) ze względu na zamieszanie, ale jeśli masz taką skłonność, możesz wyświetlić ją jak1po prawej lub lewej stronie.
Przykłady
$./a.out Start
_ _
!_ !_ !_! _ !_
_!!_ ! !! !_
$./a.out "7-seg dIsplay"
_ _ _ _ _ _ _
! _ !_ !_ ! _! !!_ !_!! !_!!_!
! _!!_ !_! !_! ! _!! !_ ! ! _!
$./a.out "0123456789 chiou-?"
_ _ _ _ _ _ _ _ _
! ! ! _! _!!_!!_ !_ !!_!!_! _ !_ _ _ _!
!_! !!_ _! ! _!!_! !!_! _! !_ ! ! !!_!!_! !
$./a.out "ABCDEFGHIJLNOPQRSTUZ"
_ _ _ _ _ _ _ _ _ _
!_!!_ ! _!!_ !_ ! !_! ! !! _ ! !!_!!_! _ !_ !_ ! ! _!
! !!_!!_ !_!!_ ! !_!! ! !!_!!_ ! !!_!! !! _!!_ !_!!_
$./a.out "abcdefghijlnopqrstuz"
_ _ _ _ _ _ _ _
!_!!_ _ _!!_ !_ ! !_ !! _ _ !_!!_! _ !_ !_ _!
! !!_!!_ !_!!_ ! !_!! ! !!_!!_ ! !!_!! !! _!!_ !_!!_
$./a.out "Bad Form"
_
_
_
$./a.out "Hello"
_
!_!!_ ! ! _
! !!_ !_ !_ !_!
$./a.out "World"
_
_
_
\r) z przesunięciem linii (LF, \n). * nix używa LF, a Windows używa CRLF. Tylko niektóre starsze systemy same używają CR. Więcej informacji tutaj: en.wikipedia.org/wiki/Newline
k, m, v, w, xnie będą się wyświetlać.