用椭圆和棍棒打印二进制值不是一件容易的事...为了帮助实现这一点,您必须编写一个以自定义二进制表示形式打印数字的函数(或程序)。
因此,我想取一个数字,例如3(00000011
),并以用户定义的格式输出位,例如以空格分隔的对:
00 00 00 11
或者说,以相反的顺序并带有一些装饰器,例如:
11_00_00_00
此外,必须有可能将“ 0”和“ 1”显示为自定义字符,以更好地区分它们,例如:
XX oo oo oo
因此,面临的挑战是编写在以下规范中做到这一点的代码。
规格
该函数接受如下输入: f(A,mask,zeros,one)
参数:
A-输入数字-0-255范围内的任何(无符号)整数。
mask-一个字符串参数,用于定义输出的结构。
零 -长度相同的字符串,为每个输出插槽定义``零''字形。
那些 -的长度相同的字符串,对于每个输出时隙定义“一”字形。
输出构造规则:
仔细查看该图像,并结合示例了解如何生成输出:
因此,仅解析掩码中的单个数字,并用A的相应位代替,其他字符则保持原样。此外,如果采用位的值为1,则在最终输出中显示为“ X”,如果为0,则显示为“ o”。在上面的示例中,所有四个位均为“ 1”,因此我们在所有时隙中看到“ X”。
如果输入数字为128,则在逻辑上输出为X foo bar ooo
。参数“零”和“一”中的字符:任何可打印的ASCII字符,假定它们始终与掩码字符对齐。
注意事项:
- 位从0开始索引:第0位是MSB。
- 假定掩码字符串中不允许使用数字8,9。
- 输入字符串包括任何可打印的ASCII字符。
- “零”和“一个”与遮罩对齐。
- 对于您语言中的特殊字符/修饰符:我们可以假定它们不会出现在输入字符串中。
为了清楚起见,请参见更多示例。
输入->输出示例
用空格定界符以通用顺序输出所有8位,并以普通的椭圆和棍子符号表示:
mask = "0123 4567"
zeros = "0000 0000"
ones = "1111 1111"
A=1 -> 0000 0001
以颠倒的顺序输出,以破折号和字形表示法:
mask = "| 7654 3210 |"
zeros= " ---- ---- "
ones = " ssss ssss "
A=1 -> | s--- ---- |
A=3 -> | ss-- ---- |
A=128-> | ---- ---s |
一个输出中的各种符号,例如打包数据:
mask = "0 | 123 4567"
zeros= " --- ----"
ones = "X kkk ssss"
A= 15 -> | --- ssss
A= 16 -> | --k ----
A= 32 -> | -k- ----
A= 128 -> X | --- ----
A= 255 -> X | kkk ssss
重复模式:
mask = "| 7 66 555 4444 |"
zeros= " . .. ... .... "
ones = " 0 00 000 0000 "
A= 0 -> | . .. ... .... |
A= 1 -> | 0 .. ... .... |
A= 2 -> | . 00 ... .... |
A= 3 -> | 0 00 ... .... |
A= 4 -> | . .. 000 .... |
更新资料
规则已稍作简化-程序只能打印一个数字(而不是最初建议的数字数组/数字列表)。
A
做,因为在所有测试用例中都是一样的