내 최초의 프로그래밍 퍼즐 및 코드 골프는 Seven-Slash Display 입니다. 여기 7 세그먼트 디스플레이를 기반으로 한 첫 번째 도전 과제가 있습니다.
나는 종종 숫자 외에도 간단한 7 세그먼트 디스플레이를 사용하여 어떤 종류의 문자를 표시 할 수 있는지 생각합니다. 많은 글자를 표시 할 수 있습니다. 실제로, 문자 K, M, V, W, X를 제외한 모든 문자는 단일 7 세그먼트 디스플레이를 사용하여 표시 할 수 있습니다. 소문자 또는 대문자를 표시 할 수 있기 때문입니다. 예 :
"abcdef"는 다음과 같이 표시 될 수 있습니다
_ _ _ _
!_!!_ ! _!!_ !_
! !!_!!_ !_!!_ !
참고 각 문자로 구성된 3 × 3 행렬이라고 !
하고 _
.
물론, 7- 세그먼트 디스플레이는 숫자와 기호를 표시하는 데 사용될 수 있습니다 :
_ _ _ _ _ _ _
! _ !_ !_ ! _! !!_ !_!! !_!!_!
! _!!_ !_! !_! ! _!! !_ ! ! _!
일부 문자는 대문자와 소문자를 모두 사용할 수 있습니다.
_ _
! _ !_!!_ ! ! ! _ ! !
!_ !_ ! !! ! ! !!_!!_!!_!!_!
전체 문자 세트는 다음과 같습니다.
_ _ _ _ _ _ _ _ _
! ! ! _! _!!_!!_ !_ !!_!!_! _ !_ _ _ _!
!_! !!_ _! ! _!!_! !!_! _! !_ ! ! !!_!!_! !
_ _ _ _ _ _ _ _ _ _
!_!!_ ! _!!_ !_ ! !_! ! !! _ ! !!_!!_! _ !_ !_ ! !!_! _!
! !!_!!_ !_!!_ ! !_!! ! !!_!!_ ! !!_!! !! _!!_ !_! _!!_
공백 ( ), 대시 (
-
) 및 물음표 ( ?
)가 있음에주의하십시오. 편지 I
, O
그리고 Z
숫자와 동일합니다 1
, 0
그리고 2
각각.
이 과제에서는 위의 7 세그먼트 표시 형식을 사용하여 문자열을 표시하는 프로그램이나 함수를 작성합니다.
규칙
프로그램이나 함수를 작성할 수 있습니다
이것은 바이트 단위의 가장 짧은 코드 인 코드 골프입니다.
프로그램 또는 기능은 STDIN 또는 매개 변수로 입력해야합니다. 그리고 문자열을 STDOUT에 출력하거나 선행 공백없이 3 줄의 문자열로 출력하지만 줄 바꿈으로 종료합니다. 대소 문자를
CHIOU
올바르게 처리하십시오.선택적으로 후행 공백을 인쇄 할 수 있습니다
위 형식을 따라야합니다. 밑줄
_
과 느낌표를 사용!
하여 7 세그먼트 디스플레이를 구성하십시오.공백 (
), 대시 (
-
) 및 물음표 (?
)를 지원해야합니다.문자열에 지원되지 않는 문자 (k, m, v, w, x)가 포함 된 경우 단일 오류 문자 (3 수평선, 예 참조)가 표시됩니다. 지원되지 않는 5 개의 문자 외에도 입력이 지원되는 문자 세트로만 구성된 것으로 가정 할 수 있습니다.
l
혼란으로 인해 소문자 L ( )로 된 편지를 선택하지 않았지만 기울어 진1
경우 오른쪽이나 왼쪽에 표시 할 수 있습니다 .
예
$./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
)과 줄 바꿈 (LF, \n
) 을 혼동했다고 생각합니다 . * nix는 LF를 사용하고 Windows는 CRLF를 사용합니다. 특정 레거시 시스템 만 CR을 사용합니다. 자세한 정보는 여기 : en.wikipedia.org/wiki/Newline
k, m, v, w, x
이 표시되지 않도록 하는 것입니다.