一些背景
计数棒是小棒(3-14厘米长),许多亚洲文化的数学家使用该棒已有2000多年的历史了,它代表任何整数或分数。(尽管在本次挑战中,我们将重点放在无符号整数上)还有一个书面版本,称为标杆数字。
运作方式如下:
(如果您在任何时候感到困惑,请查看每个数字的ascii表示形式以及我在底部提供的一些示例)
杆号是一个真实的位置数字系统,数字为1-9,空格为0。行数越多,数字越高。一旦超过5,则在顶部放置一条水平线,以将5加到下面的行数中。一条垂直线是1,两条垂直线2,五条垂直线是5,一条垂直线的顶部有一条水平线是6,四条垂直线的顶部有一条水平线是9(最高位数)。
垂直三位数:
|||
|||
|||
|||
|||
为了使读杆数字更容易,他们为每个交替的数字使用了不同的符号。第二种表示法互换了水平线和垂直线的作用。因此3用三条水平线表示,8用三条水平线表示,顶部有一条垂直线。
水平8位数字:
|
|
__|__
_____
_____
如前所述,知道使用哪种表示法很容易,这是交替使用的,孙子写道“一个是垂直的,十个是水平的”。所以最右边的数字是垂直的,我们从那里开始交替。
挑战
这些标尺用于表示负数和分数(如关于它们的Wikipedia文章中所述。出于此挑战的目的,我们仅关注正整数。目标很简单:
编写一个函数或完整程序,该函数或完整程序以任何方式将整数值作为输入,并将该整数的标尺数字表示形式打印到STDOUT(如果效果更好,也可以写入文件)。以字节为单位的最短代码获胜。
每个数字将由5x5的ASCII字符表示,并由5个空格的两个列分隔。您将使用的每个数字的确切表示形式如下:
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:
|
__|__
_____
_____
_____
这些数字应彼此相邻打印。不允许在最后一位数字的边界框之后尾随空格。需要末尾空格来完成最后一位数字的边界框。您应该在输出末尾添加一个换行符。也禁止不属于第一位数字边界框的前导空格。
输出示例
以开头的行将>
被解释为输入。
>12
| |
| |
| |
| |
_____ | |
>8037
| _____
| | |
__|__ _____ | |
_____ _____ | |
_____ _____ | |
>950
_____ _____
|| || _____
|| || _____
|| || _____
|| || _____