Meu primeiro quebra-cabeça de programação e código de golfe é o Seven-Slash Display . Aqui está o meu primeiro desafio, também baseado em 7 segmentos.
Costumo pensar, além dos números, em que tipo de letras posso exibir usando um simples display de 7 segmentos. Acontece que muitas letras podem ser exibidas. De fato, todas as letras, exceto K, M, V, W, X, podem ser exibidas usando uma única tela de 7 segmentos. Isso ocorre porque você pode exibir letras minúsculas ou maiúsculas. por exemplo
"abcdef" pode ser exibido como
_ _ _ _
!_!!_ ! _!!_ !_
! !!_!!_ !_!!_ !
Observe que cada caractere é uma matriz 3x3 composta por !
e _
.
Obviamente, a tela de 7 segmentos pode ser usada para exibir números e símbolos:
_ _ _ _ _ _ _
! _ !_ !_ ! _! !!_ !_!! !_!!_!
! _!!_ !_! !_! ! _!! !_ ! ! _!
Algumas letras podem ter letras maiúsculas e minúsculas:
_ _
! _ !_!!_ ! ! ! _ ! !
!_ !_ ! !! ! ! !!_!!_!!_!!_!
Aqui está o conjunto completo de caracteres:
_ _ _ _ _ _ _ _ _
! ! ! _! _!!_!!_ !_ !!_!!_! _ !_ _ _ _!
!_! !!_ _! ! _!!_! !!_! _! !_ ! ! !!_!!_! !
_ _ _ _ _ _ _ _ _ _
!_!!_ ! _!!_ !_ ! !_! ! !! _ ! !!_!!_! _ !_ !_ ! !!_! _!
! !!_!!_ !_!!_ ! !_!! ! !!_!!_ ! !!_!! !! _!!_ !_! _!!_
Preste atenção que há um espaço em branco ( ), um traço (
-
) e um ponto de interrogação ( ?
). A carta I
, O
e Z
são os mesmos que os números 1
, 0
e 2
, respectivamente.
Neste desafio, você escreverá um programa ou uma função para exibir uma string usando o formato de exibição de 7 segmentos acima.
Regras
Você pode escrever um programa ou uma função
Isso é código-golfe, o código mais curto em bytes vence
Seu programa ou função deve receber a entrada do STDIN ou como parâmetro. E gera uma string para STDOUT ou como uma string em 3 linhas sem espaço à esquerda, mas finalizada com nova linha. Manuseie as letras maiúsculas / minúsculas
CHIOU
corretamente.Opcionalmente, você pode imprimir espaços em branco à direita
Você deve seguir o formato acima. Usando sublinhado
_
e ponto de exclamação!
para formar sua exibição de 7 segmentos.Você deve oferecer espaço em branco (
), traço (
-
) e ponto de interrogação (?
)Se a sequência contiver caracteres não suportados (k, m, v, w, x), um único caractere de erro (3 linhas horizontais, veja o exemplo) será exibido. Além dos 5 caracteres não suportados, você pode assumir que a entrada é composta apenas por um conjunto de caracteres suportado.
Optei por não ter uma letra para L (
l
) em minúsculas devido a confusões, mas se você estiver inclinado, poderá exibi-la como uma1
à direita ou à esquerda.
Exemplos
$./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
) com avanço de linha (LF, \n
). * nix usa LF e Windows usa CRLF. Apenas certos sistemas legados usam o CR por si só. Mais informações aqui: en.wikipedia.org/wiki/Newline
k, m, v, w, x
não sejam exibidas.