输入值
一个非空的正整数数组。
任务
将每个整数转换为二进制,八进制,十进制或十六进制,以使每个数字(0至F)最多使用一次。
输出量
用于解决难题的基础列表。
详细的例子
对于预期的输出[16,17]是[八进制,十进制]。
原因如下:
- 我们不能简单地对两个数字都使用十进制,因为它们都包含1。
- 16无法转换为二进制,因为它在此基数(10000)中的表示包含多个0。
- 17也不能转换为二进制,因为它在此基数(10001)中的表示包含几个0和几个1。
- 17不能转换为十六进制,因为它在此基数(11)中的表示由两个1组成。
让我们考虑所有剩余的可能性:
+---------+---------+--------+ | oct(16) | dec(16) | hex(16)| | = 20 | = 16 | = 10 | +--------------+---------+---------+--------+ | oct(17) = 21 | 20,21 | 16,21 | 10,21 | | dec(17) = 17 | 20,17 | 16,17 | 10,17 | +--------------+---------+---------+--------+
唯一可能的解决方案是将16转换为八进制(20),将17保留为十进制(17)。这种方式,数字0,1,2和7被精确地使用一次。
澄清和规则
- 输入保证可以导致独特的解决方案。您的代码不应支持提供多个解决方案或根本没有解决方案的阵列。
- 您可以以任何合理的格式输出基数,例如[“ bin”,“ oct”,“ dec”,“ hex”],['b','o','d','h'],“ BODH “,[2,8,10,16],[0,1,2,3]等。但是您的答案中应明确说明。
- 输出中基数的顺序必须与输入整数的顺序匹配。
- 如果有帮助,您可以假设输入从最低到最高,或者从最高到最低排序。
- 这是代码高尔夫球,因此最短答案以字节为单位!
测试用例
您不必输出下面列出的转换结果。它们纯粹是信息性的。
Input | Output | Conversion result
---------------------------------------+-----------------+------------------------
[ 119 ] | O | 167
[ 170 ] | D | 170
[ 64222 ] | H | FADE
[ 16, 17 ] | O/D | 20/17
[ 14, 64, 96 ] | H/H/D | E/40/96
[ 34, 37, 94 ] | O/D/H | 42/37/5E
[ 2, 68, 82 ] | B/D/H | 10/68/52
[ 22, 43, 96 ] | O/O/O | 26/53/140
[ 3639, 19086, 57162 ] | H/D/H | E37/19086/DF4A
[ 190, 229, 771 ] | O/H/O | 276/E5/1403
[ 2, 44, 69, 99 ] | B/H/H/H | 10/2C/45/63
[ 75, 207, 218, 357, 385 ] | H/H/H/D/O | 4B/CF/DA/357/601
[ 12, 28, 46, 78, 154, 188, 222, 240 ] | D/O/O/D/H/H/H/H | 12/34/56/78/9A/BC/DE/F0
原始输入列表在此处可用。