输入:
n
范围内的整数2 <= n <= 10
- 正整数列表
输出:
将整数转换为二进制表示形式(不带任何前导零),然后将它们全部连接在一起。
然后使用n
围栏柱的数量确定构成“二进制围栏”的所有二进制子串。每个栅栏柱之间的空间(零)无关紧要(至少为1),但栅栏柱本身的宽度都应相等。
在这里,正则表达式的二进制子字符串应该与每个匹配n
:
n Regex to match to be a 'binary fence' Some examples
2 ^(1+)0+\1$ 101; 1100011; 1110111;
3 ^(1+)0+\10+\1$ 10101; 1000101; 110011011;
4 ^(1+)0+\10+\10+\1$ 1010101; 110110011011; 11110111100001111001111;
etc. etc. You get the point
看n=4
例子:
1010101
^ ^ ^ ^ All fence posts have a width of one 1
^ ^ ^ with one or more 0s in between them
110110011011
^^ ^^ ^^ ^^ All fence posts have a width of two 1s
^ ^^ ^ with one or more 0s in between them
11110111100001111001111
^^^^ ^^^^ ^^^^ ^^^^ All fence posts have a width of four 1s
^ ^^^^ ^^ with one or more 0s in between them
然后,我们输出使用匹配项“二进制围栏”的二进制数字的数字。
例:
输入:n=4
,L=[85,77,71]
这些整数连接在一起的二进制表示形式是:(
1010101 1001101 1000111
注意:仅在示例中添加空格作为说明)。
由于n=4
,我们将寻找与regex匹配的子字符串(1+)0+\10+\10+\1
,在这种情况下,我们可以找到两个:(
1010101
在position (1010101) 1001101 1000111
);和11001101100011
(在位置101010(1 1001101 100011)1
)
第一个二进制围栏仅使用来自的二进制数字85
,第二个二进制围栏使用来自所有三个整数的二进制数字。因此,在这种情况下的输出将是:
[[85],[85,77,71]]
挑战规则:
- 尽管在上面的示例中也提到了这一点,但最后一句话很重要:我们输出在“ binary fence”子字符串中使用二进制数字的数字。
- I / O是灵活的。输入可以是整数的列表/数组/流,空格/逗号/换行符分隔的字符串等。输出可以是2D整数列表,单个定界的字符串,字符串列表,打印到STDOUT的换行符等。由您自己决定,但请说明您在答案中使用的内容。
- 列表本身的输出顺序无关紧要,但是每个内部列表的输出当然与输入列表的顺序相同。因此,在上面的示例中,
[[85,77,71],[85]]
也是有效的输出,但[[85],[77,85,71]]
不是。 - 正如您可能已经从示例(
85
)中注意到的那样,可以多次使用二进制数字。 - 正则表达式应完全匹配子字符串。因此,
110101
或者010101
从来都不是有效的“二进制围栏”(10101
不过是iffn=3
)。 - 输出列表中的项目不是唯一的,只有“二进制围栏”的二进制位置是唯一的。如果可以使用相同的整数创建多个“二进制围栏”,我们将它们多次添加到输出列表中。
例如:n=2
,L=[109, 45]
(binary1101101 101101
)可以形成这些“ binary fence”子字符串:11011
(at position(11011)01 101101
);101
(在位置1(101)101 101101
);11011
(在位置110(1101 1)01101
);101
(在位置1101(101) 101101
);11011
(在位置110110(1 1011)01
);101
(在位置1101101 (101)101
);101
(在位置1101101 101(101)
),因此输出将为[[109],[109],[109,45],[109],[109,45],[45],[45]]
。
另一个示例:n=2
,L=[8127]
(binary1111110111111
)可以形成这些“ binary fence”子字符串:1111110111111
(at position(1111110111111)
);11111011111
(在位置1(11111011111)1
);111101111
(在位置11(111101111)11
);1110111
(在位置111(1110111)111
);11011
(在位置1111(11011)1111
);101
(在位置11111(101)11111
),因此输出将为[[8127],[8127],[8127],[8127],[8127],[8127]]
。 - 如果没有有效的输出是可能的,你可以返回一个空列表或其他某种falsey输出(
null
,false
,抛出一个错误,等等。同样,你的电话)。
通用规则:
- 这是代码高尔夫球,因此最短答案以字节为单位。
不要让代码高尔夫球语言阻止您使用非代码高尔夫球语言发布答案。尝试针对“任何”编程语言提出尽可能简短的答案。 - 标准规则适用于您的答案,因此您可以使用STDIN / STDOUT,具有正确参数的函数/方法和返回类型的完整程序。你的来电。
- 默认漏洞是禁止的。
- 如果可能的话,请添加一个带有测试代码的链接(即TIO)。
- 另外,强烈建议为您的答案添加说明。
测试用例:
Input: Output
(the binary below the output are added as clarification,
where the parenthesis indicate the substring matching the regex):
4, [85,77,71] [[85],[85,77,71]]
(1010101) 1001101 1000111; 101010(1 1001101 100011)1
2, [109,45] [[109],[109],[109,45],[109],[109,45],[45],[45]]
(11011)01 101101; 1(101)101 101101; 110(1101 1)01101; 1101(101) 101101; 110110(1 1011)01; 1101101 (101)101; 1101101 101(101)
3, [990,1,3,3023,15,21] [[990,1,3,3023],[990,1,3,3023],[1,3,3023],[21]]
(1111011110 1 11 1)01111001111 1111 10101; 11110(11110 1 11 101111)001111 1111 10101; 1111011110 (1 11 101111001111) 1111 10101; 1111011110 1 11 101111001111 1111 (10101)
2, [1,2,3,4,5,6,7,8,9,10] [[1,2,3],[2,3],[4,5],[5],[5,6,7],[6,7],[6,7],[8,9],[9],[10]]
(1 10 11) 100 101 110 111 1000 1001 1010; 1 (10 1)1 100 101 110 111 1000 1001 1010; 1 10 11 (100 1)01 110 111 1000 1001 1010; 1 10 11 100 (101) 110 111 1000 1001 1010; 1 10 11 100 10(1 110 111) 1000 1001 1010; 1 10 11 100 101 (110 11)1 1000 1001 1010; 1 10 11 100 101 1(10 1)11 1000 1001 1010; 1 10 11 100 101 110 111 (1000 1)001 1010; 1 10 11 100 101 110 111 1000 (1001) 1010; 1 10 11 100 101 110 111 1000 1001 (101)0
3, [1,2,3,4,5,6,7,8,9,10] [[4,5],[8,9]]
1 10 11 (100 101 )110 111 1000 1001 1010; 1 10 11 100 101 110 111 (1000 1001) 1010
10, [1,2,3,4,5,6,7,8,9,10] []
No binary fences are possible for this input
6, [445873,2075] [[445873,2075],[445873,2075],[445873,2075]]
(1101100110110110001 1)00000011011; 110(1100110110110001 100000011)011; 1101100(110110110001 100000011011)
2, [8127] [[8127],[8127],[8127],[8127],[8127],[8127]]
(1111110111111); 1(11111011111)1; 11(111101111)11; 111(1110111)111; 1111(11011)1111; 11111(101)11111
2, [10,10] [[10],[10,10],[10]]
(101)0 1010; 10(10 1)010; 1010 (101)0
4, [10,10,10] [[10,10],[10,10,10],[10,10]]
(1010 101)0 1010; 10(10 1010 1)010; 1010 (1010 101)0
[1,2,3]
有效的测试用例4?我看到了篱笆(1 10 11)
2, [10, 10]
,[[10],[10,10],[10]]
如果我正确地理解了挑战,应该会导致这种情况