Il mio primo Puzzle di programmazione e Code Golf è il display a sette barre . Ecco la mia prima sfida, anch'essa basata sul display a 7 segmenti.
Spesso penso, oltre ai numeri, che tipo di lettere posso visualizzare usando un semplice display a 7 segmenti. Si scopre che possono essere visualizzate molte lettere. In effetti, tutti tranne le lettere K, M, V, W, X possono essere visualizzati utilizzando un singolo display a 7 segmenti. Questo perché è possibile visualizzare lettere minuscole o maiuscole di una lettera. per esempio
"abcdef" può essere visualizzato come
_ _ _ _
!_!!_ ! _!!_ !_
! !!_!!_ !_!!_ !
Nota che ogni personaggio è una matrice 3x3 composta da !e _.
Naturalmente, il display a 7 segmenti può essere utilizzato per visualizzare numeri e simboli:
_ _ _ _ _ _ _
! _ !_ !_ ! _! !!_ !_!! !_!!_!
! _!!_ !_! !_! ! _!! !_ ! ! _!
Alcune lettere possono contenere lettere maiuscole e minuscole:
_ _
! _ !_!!_ ! ! ! _ ! !
!_ !_ ! !! ! ! !!_!!_!!_!!_!
Ecco la serie completa di personaggi:
_ _ _ _ _ _ _ _ _
! ! ! _! _!!_!!_ !_ !!_!!_! _ !_ _ _ _!
!_! !!_ _! ! _!!_! !!_! _! !_ ! ! !!_!!_! !
_ _ _ _ _ _ _ _ _ _
!_!!_ ! _!!_ !_ ! !_! ! !! _ ! !!_!!_! _ !_ !_ ! !!_! _!
! !!_!!_ !_!!_ ! !_!! ! !!_!!_ ! !!_!! !! _!!_ !_! _!!_
Fai attenzione che ci sono uno spazio bianco ( ), un trattino ( -) e un punto interrogativo ( ?). La lettera I, Oe Zsono gli stessi numeri 1, 0e 2rispettivamente.
In questa sfida, si scriverà un programma o una funzione per visualizzare una stringa utilizzando il formato di visualizzazione a 7 segmenti sopra.
Regole
È possibile scrivere un programma o una funzione
Questo è code-golf, vince il codice più breve in byte
Il programma o la funzione dovrebbe ricevere input da STDIN o come parametro. E genera una stringa su STDOUT o come stringa su 3 righe senza spazio iniziale ma terminata con newline. Maneggiare
CHIOUcorrettamente le maiuscole / minuscole .Se lo si desidera, è possibile stampare spazi bianchi finali
È necessario seguire il formato sopra. Utilizzo del trattino basso
_e del punto esclamativo!per formare il display a 7 segmenti.È necessario supportare spazi bianchi (
), trattino (-) e punto interrogativo (?)Se la stringa contiene caratteri non supportati (k, m, v, w, x), viene visualizzato un singolo carattere di errore (3 linee dell'orizzonte, vedi esempio). Oltre ai 5 caratteri non supportati, puoi supporre che l'input sia composto solo da un set di caratteri supportato.
Ho scelto di non avere una lettera per L minuscola (
l) a causa di confusioni ma se sei così incline, puoi visualizzarla come una1a destra o a sinistra.
Esempi
$./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 avanzamento riga (LF, \n). * nix utilizza LF e Windows utilizza CRLF. Solo alcuni sistemi legacy utilizzano CR da solo. Maggiori informazioni qui: en.wikipedia.org/wiki/Newline
k, m, v, w, xnon vengano visualizzate.