Câu đố lập trình & Code Golf đầu tiên của tôi là Màn hình Bảy chém . Đây là Thử thách đầu tiên của tôi, cũng dựa trên màn hình 7 đoạn.
Tôi thường nghĩ về, bên cạnh những con số, loại chữ nào tôi có thể hiển thị bằng màn hình 7 đoạn đơn giản. Hóa ra rất nhiều chữ cái có thể được hiển thị. Trên thực tế, tất cả các chữ K, M, V, W, X đều có thể được hiển thị bằng một màn hình 7 đoạn duy nhất. Điều này là do bạn có thể hiển thị chữ thường hoặc chữ hoa của chữ cái. ví dụ
"abcdef" có thể được hiển thị dưới dạng
_ _ _ _
!_!!_ ! _!!_ !_
! !!_!!_ !_!!_ !
Lưu ý rằng mỗi ký tự là một ma trận 3x3 được tạo thành từ !
và _
.
Tất nhiên, màn hình 7 đoạn có thể được sử dụng để hiển thị số và ký hiệu:
_ _ _ _ _ _ _
! _ !_ !_ ! _! !!_ !_!! !_!!_!
! _!!_ !_! !_! ! _!! !_ ! ! _!
Một số chữ cái có thể có cả chữ hoa và chữ thường:
_ _
! _ !_!!_ ! ! ! _ ! !
!_ !_ ! !! ! ! !!_!!_!!_!!_!
Dưới đây là bộ đầy đủ các ký tự:
_ _ _ _ _ _ _ _ _
! ! ! _! _!!_!!_ !_ !!_!!_! _ !_ _ _ _!
!_! !!_ _! ! _!!_! !!_! _! !_ ! ! !!_!!_! !
_ _ _ _ _ _ _ _ _ _
!_!!_ ! _!!_ !_ ! !_! ! !! _ ! !!_!!_! _ !_ !_ ! !!_! _!
! !!_!!_ !_!!_ ! !_!! ! !!_!!_ ! !!_!! !! _!!_ !_! _!!_
Hãy chú ý rằng có một khoảng trắng ( ), dấu gạch ngang (
-
) và dấu hỏi ( ?
). Chữ cái I
, O
và Z
giống như số 1
, 0
và 2
tương ứng.
Trong thử thách này, bạn sẽ viết chương trình hoặc hàm để hiển thị chuỗi bằng định dạng hiển thị 7 đoạn ở trên.
Quy tắc
Bạn có thể viết một chương trình hoặc một chức năng
Đây là code-golf, mã ngắn nhất tính bằng byte thắng
Chương trình hoặc chức năng của bạn nên lấy đầu vào từ STDIN hoặc làm tham số. Và xuất một chuỗi thành STDOUT hoặc dưới dạng một chuỗi trong 3 dòng mà không có khoảng trắng hàng đầu nhưng được kết thúc bằng dòng mới. Xử lý trường hợp trên / dưới của
CHIOU
đúng.Bạn có thể tùy ý in dấu trắng
Bạn phải làm theo định dạng trên. Sử dụng dấu gạch dưới
_
và dấu chấm than!
để tạo thành màn hình 7 đoạn của bạn.Bạn phải hỗ trợ khoảng trắng (
), dấu gạch ngang (
-
) và dấu hỏi (?
)Nếu chuỗi chứa ký tự không được hỗ trợ (k, m, v, w, x), một ký tự lỗi đơn (3 đường chân trời, xem ví dụ) được hiển thị. Ngoài 5 ký tự không được hỗ trợ, bạn có thể giả sử đầu vào được tạo thành từ chỉ bộ ký tự được hỗ trợ.
Tôi đã chọn không có chữ cái viết thường L (
l
) do nhầm lẫn nhưng nếu bạn quá nghiêng, bạn có thể hiển thị nó như một1
bên phải hoặc bên trái.
Ví dụ
$./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
) với nguồn cấp dữ liệu (LF, \n
). * nix sử dụng LF và Windows sử dụng CRLF. Chỉ một số hệ thống di sản nhất định sử dụng CR của chính nó. Thêm thông tin tại đây: vi.wikipedia.org/wiki/Newline
k, m, v, w, x
không được hiển thị.