Mi primer Puzzles de programación y Golf de código es la pantalla Seven-Slash . Aquí está mi primer desafío, también basado en una pantalla de 7 segmentos.
A menudo pienso, además de los números, en qué tipo de letras puedo mostrar usando una pantalla simple de 7 segmentos. Resulta que se pueden mostrar muchas letras. De hecho, todas menos las letras K, M, V, W, X se pueden mostrar usando una sola pantalla de 7 segmentos. Esto se debe a que puede mostrar minúsculas o mayúsculas de una letra. p.ej
"abcdef" se puede mostrar como
_ _ _ _
!_!!_ ! _!!_ !_
! !!_!!_ !_!!_ !
Tenga en cuenta que cada carácter es una matriz 3x3 compuesta por !y _.
Por supuesto, la pantalla de 7 segmentos se puede usar para mostrar números y símbolos:
_ _ _ _ _ _ _
! _ !_ !_ ! _! !!_ !_!! !_!!_!
! _!!_ !_! !_! ! _!! !_ ! ! _!
Algunas letras pueden tener mayúsculas y minúsculas:
_ _
! _ !_!!_ ! ! ! _ ! !
!_ !_ ! !! ! ! !!_!!_!!_!!_!
Aquí está el conjunto completo de personajes:
_ _ _ _ _ _ _ _ _
! ! ! _! _!!_!!_ !_ !!_!!_! _ !_ _ _ _!
!_! !!_ _! ! _!!_! !!_! _! !_ ! ! !!_!!_! !
_ _ _ _ _ _ _ _ _ _
!_!!_ ! _!!_ !_ ! !_! ! !! _ ! !!_!!_! _ !_ !_ ! !!_! _!
! !!_!!_ !_!!_ ! !_!! ! !!_!!_ ! !!_!! !! _!!_ !_! _!!_
Tenga en cuenta que hay un espacio en blanco ( ), un guión ( -) y un signo de interrogación ( ?). La carta I, OyZ son los mismos que los números 1, 0y 2respectivamente.
En este desafío, escribirá un programa o una función para mostrar una cadena usando el formato de visualización de 7 segmentos anterior.
Reglas
Puedes escribir un programa o una función
Este es el código de golf, gana el código más corto en bytes
Su programa o función debe recibir información de STDIN o como parámetro. Y genera una cadena en STDOUT o como una cadena en 3 líneas sin espacios iniciales pero terminada con nueva línea. Manejar mayúsculas / minúsculas de
CHIOUcorrectamente.Opcionalmente, puede imprimir espacios en blanco al final
Debe seguir el formato anterior. Usando guión bajo
_y signo de exclamación!para formar su pantalla de 7 segmentos.Debe admitir espacios en blanco (
), guión (-) y signo de interrogación (?)Si la cadena contiene caracteres no admitidos (k, m, v, w, x), se muestra un solo carácter de error (línea de 3 horizontes, ver ejemplo). Además de los 5 caracteres no admitidos, puede suponer que la entrada está compuesta solo por un conjunto de caracteres admitidos.
Opté por no tener una letra para L minúscula (
l) debido a confusiones, pero si está tan inclinado, puede mostrarla como1a la derecha o a la izquierda.
Ejemplos
$./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) con el avance de línea (LF, \n). * nix usa LF y Windows usa CRLF. Solo ciertos sistemas heredados usan CR por sí mismo. Más información aquí: en.wikipedia.org/wiki/Newline
k, m, v, w, xno se muestren.