初めてのプログラミングパズルとコードゴルフは、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が表示されないようにすることです。