根据此数字亲密视频中提到的“二进制但带二进制”表示法,编写一个函数,该函数将单个数字作为输入并在允许二进制的“二进制”系统中输出该数字的所有变体。
规则
- 代码只能是函数/方法,不能是完整程序
- 输入是作为唯一参数传递给函数的整数
- 输出是输入数字的所有有效变体,转换为“二进制但带二进制”表示法
- 输出是函数的返回值,但可以使用任何方便的格式,只要它很明显即可(例如3个整数,3个字符串,逗号/空格分隔的字符串,整数数组等),顺序不重要
- 万一一种语言碰巧包含一个内置函数来实现结果,这种情况不太可能发生,这是不允许的
- 以字节为单位的最短代码是赢家
输出说明
例如,如果传递了数字9
,则可以将其转换为1001
,将其转换为二进制,但如果2
在每个位置都允许s,则也可以将其写为201
(ie 2*4 + 0*2 + 1*1
)或121
(ie 1*4 + 2*2 + 1*1
),如下表所示:
+----+----+----+----+
| 8s | 4s | 2s | 1s |
+----+----+----+----+
| 1 | 0 | 0 | 1 |
| 0 | 2 | 0 | 1 |
| 0 | 1 | 2 | 1 |
+----+----+----+----+
因此,如果通过9
,则您的函数将需要返回三个数字1001
,201
和121
。
格式和顺序是不相关的,只要它是明显的(即[121,201,1001]
,"0201 0121 1001"
,("1001","121","201")
给出的输入时是有效的结果9
)。
例子
2
=>10, 2
9
=>1001, 201, 121
10
=>1010, 210, 202, 1002, 122
23
=>2111, 10111
37
=>100101, 20101, 100021, 20021, 12101, 12021, 11221