Một số nền tảng
Thanh đếm là những thanh nhỏ (dài 3-14 cm) được sử dụng bởi các nhà toán học từ nhiều nền văn hóa châu Á trong hơn 2000 năm để đại diện cho bất kỳ số lượng hoặc phân số nào. (Trong chqllenge này, chúng tôi tập trung vào các số nguyên không dấu) Ngoài ra còn có một phiên bản bằng văn bản, được gọi là số que.
Đây là cách nó hoạt động:
(Nếu tại bất kỳ thời điểm nào bạn cảm thấy bối rối, hãy kiểm tra biểu diễn ascii của từng chữ số và một số ví dụ tôi đã đưa vào ở dưới cùng)
Số thanh là một hệ thống số vị trí thực sự với các chữ số cho 1-9 và trống cho 0. Các chữ số bao gồm các đường ngang và dọc; Càng nhiều dòng, chữ số càng cao. Khi bạn vượt qua năm, bạn đặt một đường ngang trên đầu để thêm 5 vào số dòng bên dưới. Một đường thẳng đứng là 1, hai đường thẳng đứng 2, năm đường thẳng đứng là 5, một đường thẳng đứng với một đường ngang trên cùng là 6, bốn đường thẳng đứng với một đường ngang trên cùng là 9 (chữ số cao nhất).
3 chữ số dọc:
|||
|||
|||
|||
|||
Để làm cho việc đọc số que dễ dàng hơn, họ đã sử dụng các ký hiệu khác nhau cho mỗi chữ số xen kẽ. Ký hiệu thứ hai hoán đổi vai trò của các đường ngang và dọc. sao cho 3 được biểu thị bằng ba đường ngang và 8 bởi ba đường ngang với đường thẳng đứng trên đầu.
Một chữ số 8 ngang:
|
|
__|__
_____
_____
Biết sử dụng ký hiệu nào là dễ dàng, như đã nói trước đây, tehy được sử dụng xen kẽ và Tôn Tử đã viết rằng "một là dọc, mười là ngang". Vì vậy, chữ số ngoài cùng bên phải là dọc và chúng tôi thay thế từ đó về sau.
Các thách thức
Các thanh này được sử dụng để biểu thị các số và phân số âm (như được giải thích trong bài viết trên wikipedia về chúng . Vì mục đích của thử thách này, chúng tôi sẽ chỉ tập trung vào các số nguyên dương.
Viết hàm hoặc chương trình đầy đủ lấy giá trị nguyên làm đầu vào theo bất kỳ cách nào và in biểu diễn số que của số nguyên này sang STDOUT (bạn cũng có thể ghi vào tệp nếu hoạt động tốt hơn). Mã ngắn nhất trong byte thắng.
Mỗi chữ số sẽ được biểu thị bằng các ký tự 5x5 ascii và được phân tách bằng hai ký tự gồm 5 dấu cách. Đại diện chính xác bạn sẽ sử dụng cho mỗi chữ số như sau:
space between two digits (two colums):
0 digit, both vertical and horizontal (five columns):
1 digit, vertical:
|
|
|
|
|
2 digit, vertical:
| |
| |
| |
| |
| |
3 digit, vertical:
|||
|||
|||
|||
|||
4 digit, vertical:
|| ||
|| ||
|| ||
|| ||
|| ||
5 digit, vertical:
|||||
|||||
|||||
|||||
|||||
6 digit, vertical:
_____
|
|
|
|
7 digit, vertical:
_____
| |
| |
| |
| |
8 digit, vertical:
_____
|||
|||
|||
|||
9 digit, vertical:
_____
|| ||
|| ||
|| ||
|| ||
1 digit, horizontal:
_____
2 digit, horizontal:
_____
_____
3 digit, horizontal:
_____
_____
_____
4 digit, horizontal:
_____
_____
_____
_____
5 digit, horizontal:
_____
_____
_____
_____
_____
6 digit, horizontal:
|
|
|
|
__|__
7 digit, horizontal:
|
|
|
__|__
_____
8 digit, horizontal:
|
|
__|__
_____
_____
9 digit, horizontal:
|
__|__
_____
_____
_____
Các chữ số sẽ được in cạnh nhau. Không được phép lưu các khoảng trống ngoài hộp giới hạn của chữ số cuối cùng. Không gian lưu trữ để hoàn thành hộp giới hạn của (các) chữ số cuối cùng được yêu cầu. Bạn nên kết thúc đầu ra với một dòng mới duy nhất. Không gian hàng đầu không thuộc hộp giới hạn của chữ số đầu tiên cũng bị cấm.
Ví dụ đầu ra
Các dòng bắt đầu bằng >
được hiểu là đầu vào.
>12
| |
| |
| |
| |
_____ | |
>8037
| _____
| | |
__|__ _____ | |
_____ _____ | |
_____ _____ | |
>950
_____ _____
|| || _____
|| || _____
|| || _____
|| || _____