Viết hàm hoặc chương trình mã hóa một chuỗi thành mã vạch định dạng Mã 39 , trong đó mỗi ký tự được mã hóa thành năm thanh cách nhau bởi bốn khoảng trống. Một trong hai thanh và một trong các khoảng trống là rộng và các khoảng trống khác là hẹp (10 * 4 mã) hoặc ba trong số các khoảng trống rộng và không có thanh nào là (4 mã). Điều này cung cấp 44 mã khác nhau, từ đó một mã là mã dành riêng được sử dụng để biểu thị điểm bắt đầu và kết thúc của chuỗi được mã hóa.
Các thách thức
Đầu vào là một chuỗi chỉ chứa các ký tự từ tập hợp
1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ-. +/$%
Đầu ra là chuỗi được mã hóa dưới dạng chuỗi mã vạch. Khoảng cách hẹp và khoảng cách giữa các vi khuẩn là một không gian duy nhất và một khoảng cách rộng là ba không gian. Thanh hẹp là chuỗi byte UTF-8 cho ký tự Unicode "Khối đầy đủ",, 0xE2 0x96 0x88và thanh rộng là ba chuỗi / ký tự byte như vậy ( ███). Danh sách đầy đủ các mã là:
Spaces
0100 0010 0001 1000 1011 1101 1110 0111
Bars
00000 + / $ %
10001 1 A K U
01001 2 B L V
11000 3 C M W
00101 4 D N X
10100 5 E O Y
01100 6 F P Z
00011 7 G Q -
10010 8 H R .
01010 9 I S space 1=wide
00110 0 J T start/end 0=narrow
Các thanh và không gian được xen kẽ, bắt đầu từ một thanh, vì vậy, ví dụ Q là
bar 0 0 0 1 1
code █ █ █ ███ ███
space 0 0 0 1
Sau khi mã hóa tất cả các ký tự, chuỗi được phân tách ở cả hai đầu bằng █ █ ███ ███ █. Khoảng cách giữa các vi khuẩn, một khoảng trống, được chèn vào giữa mỗi chữ cái. Giải pháp của bạn có thể xuất ra các khoảng trắng ở cuối và một dòng mới (theo thứ tự đó).
Ví dụ
"" → "█ █ ███ ███ █ █ █ ███ ███ █"
"A" → "█ █ ███ ███ █ ███ █ █ █ ███ █ █ ███ ███ █"
"C++" → "█ █ ███ ███ █ ███ ███ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ███ ███ █"
"GOLF" → "█ █ ███ ███ █ █ █ █ ███ ███ ███ █ ███ █ █ █ ███ █ █ ███ █ ███ ███ █ █ █ █ ███ ███ █"
Các định dạng đầu vào / đầu ra tiêu chuẩn được cho phép và các sơ hở tiêu chuẩn không được phép. Đây là mã golf , vì vậy mã ngắn nhất được đo bằng byte sẽ thắng!
#nhân vật, vì, chẳng hạn, "#"không phải là lý do duy nhất nó có thể được sử dụng trong ngôn ngữ.