ครั้งแรกของฉันที่เคย Programming ปริศนาและรหัสกอล์ฟเป็นจอแสดงผล Seven-Slash นี่คือความท้าทายครั้งแรกของฉันซึ่งขึ้นอยู่กับการแสดงผล 7 ส่วน
ฉันมักจะคิดถึงตัวอักษรที่ฉันสามารถแสดงได้ด้วยตัวเลข 7 ส่วน ปรากฎตัวอักษรจำนวนมากสามารถแสดงได้ ในความเป็นจริงทั้งหมดสามารถแสดงตัวอักษร K, M, V, W, X โดยใช้จอแสดงผล 7 ส่วนเดียว นี่เป็นเพราะคุณสามารถแสดงตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ของตัวอักษร เช่น
"abcdef" สามารถแสดงเป็น
_ _ _ _
!_!!_ ! _!!_ !_
! !!_!!_ !_!!_ !
โปรดทราบว่าตัวละครแต่ละตัวคือเมทริกซ์ 3x3 ที่สร้างขึ้นจากและ!
_
แน่นอนว่าการแสดงผล 7 ส่วนสามารถใช้เพื่อแสดงตัวเลขและสัญลักษณ์:
_ _ _ _ _ _ _
! _ !_ !_ ! _! !!_ !_!! !_!!_!
! _!!_ !_! !_! ! _!! !_ ! ! _!
ตัวอักษรบางตัวสามารถมีทั้งตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก:
_ _
! _ !_!!_ ! ! ! _ ! !
!_ !_ ! !! ! ! !!_!!_!!_!!_!
นี่คือชุดอักขระเต็มรูปแบบ:
_ _ _ _ _ _ _ _ _
! ! ! _! _!!_!!_ !_ !!_!!_! _ !_ _ _ _!
!_! !!_ _! ! _!!_! !!_! _! !_ ! ! !!_!!_! !
_ _ _ _ _ _ _ _ _ _
!_!!_ ! _!!_ !_ ! !_! ! !! _ ! !!_!!_! _ !_ !_ ! !!_! _!
! !!_!!_ !_!!_ ! !_!! ! !!_!!_ ! !!_!! !! _!!_ !_! _!!_
ระวังว่ามีช่องว่าง ( ), เส้นประ (
-
) และเครื่องหมายคำถาม ( ?
) ตัวอักษรI
, O
และZ
เป็นเช่นเดียวกับตัวเลข1
, 0
และ2
ตามลำดับ
ในความท้าทายนี้คุณจะเขียนโปรแกรมหรือฟังก์ชั่นเพื่อแสดงสตริงโดยใช้รูปแบบการแสดงผล 7 ส่วนด้านบน
กฎระเบียบ
คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่น
นี่คือโค้ดกอล์ฟซึ่งเป็นรหัสที่สั้นที่สุดในหน่วยไบต์
โปรแกรมหรือฟังก์ชั่นของคุณควรรับข้อมูลจาก STDIN หรือเป็นพารามิเตอร์ และส่งออกสตริงไปยัง STDOUT หรือเป็นสตริงใน 3 บรรทัดโดยไม่มีช่องว่างนำหน้า แต่ถูกยกเลิกด้วยการขึ้นบรรทัดใหม่ จัดการกับกรณีบน / ล่างของ
CHIOU
อย่างถูกต้องคุณอาจเลือกพิมพ์ช่องว่างสีขาวต่อท้าย
คุณต้องทำตามรูปแบบด้านบน ใช้เครื่องหมายขีดล่าง
_
และอัศเจรีย์!
เพื่อจัดรูปแบบการแสดงผล 7 ส่วนของคุณคุณต้องสนับสนุน white space (
), dash (
-
) และเครื่องหมายคำถาม (?
)หากสตริงมีอักขระที่ไม่รองรับ (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
) ด้วย line feed (LF, \n
) * nix ใช้ LF และ Windows ใช้ CRLF ระบบดั้งเดิมบางระบบเท่านั้นที่ใช้ CR ด้วยตัวเอง ข้อมูลเพิ่มเติมที่นี่: en.wikipedia.org/wiki/Newline
k, m, v, w, x
ไม่แสดง