Mã vạch 4 trạng thái
Nhiều dịch vụ bưu chính (Royal Mail UK, Canada Post, US Mail, v.v.) sử dụng mã vạch 4 trạng thái để mã hóa thông tin về thư của họ. Được hiển thị trong ASCII, nó có thể trông giống như thế này:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Mã vạch 4 trạng thái là một hàng thanh. Mỗi thanh có thể được mở rộng lên trên, xuống dưới hoặc cả hai, cho phép 4 khả năng. Điều này có nghĩa là mỗi thanh cơ bản đại diện cho một chữ số 4 cơ sở:
| | Thanh: | | | | | | Chữ số: 0 1 2 3
Vấn đề với hệ thống ký hiệu này là mỗi mã vạch là một mã vạch hợp lệ, khác nhau lộn ngược: thay đổi mạnh mẽ ý nghĩa nếu định hướng không chính xác. Do đó, một chuỗi bắt đầu và dừng thường được triển khai để máy quét có thể tính toán được đọc theo cách nào.
Với mục đích của thử thách này, chúng tôi sẽ sử dụng chuỗi bắt đầu / dừng được chỉ định bởi Australia Post: mỗi mã vạch bắt đầu và kết thúc bằng một 1 0
chuỗi.
Các thách thức
Nhiệm vụ của bạn là viết một chương trình hoặc hàm, với một số nguyên dương N
, chuyển đổi nó thành mã vạch 4 trạng thái ASCII, trong đó mỗi thanh (ngoại trừ các chuỗi bắt đầu / dừng) biểu thị một chữ số trong biểu diễn cơ sở-4 của N
.
Thí dụ:
Với số nguyên 19623
, trước tiên chúng ta sẽ chuyển đổi nó thành biểu diễn cơ sở 4 của nó , 10302213
.
Sau đó chúng tôi sẽ ánh xạ từng chữ số vào thanh tương ứng:
1 0 3 0 2 2 1 3 | | | | | | | | | | | | | | | |
Cuối cùng, chúng tôi sẽ thêm các chuỗi bắt đầu / dừng:
Bắt đầu: Kết thúc: 1 0 1 0 | | | | | | | | | | | | | | | | | | | | | |
Mã vạch kết quả phải là đầu ra của chương trình.
Quy tắc:
- Đầu vào sẽ là một số nguyên dương, trong phạm vi kích thước số nguyên tiêu chuẩn của ngôn ngữ của bạn.
- Đầu ra:
- Có thể là một danh sách các dòng hoặc một chuỗi chứa các dòng mới.
- Có thể chứa dòng mới / dấu cách hàng đầu hoặc dấu, miễn là hình dạng vẫn còn nguyên.
- Phải hiển thị mã vạch với định dạng trên - nó phải sử dụng ký tự ống (
|
) và ký tự khoảng trắng () khi vẽ các thanh và phải có 1 khoảng trắng ở giữa mỗi thanh thẳng đứng.
- Đây là môn đánh gôn , vì vậy chương trình ngắn nhất (tính bằng byte) sẽ thắng!
Các trường hợp thử nghiệm
4095:
| | | | | | | | | | | | | | | | | | | | | | | |
4096:
| | | | | | | | | | | | | |
7313145:
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |