在此挑战中,您将以二进制值的非空列表(可以是范围为0-1的布尔值或整数)作为输入,您应该输出将列表划分为非空部分的所有方法,这样在初始列表中没有两个相邻的相等值被分隔成不同的部分。
例如,如果输入是[1,1,0,0,1],那么[1,1],[0,0,1]是一个有效的分区,但是[1,1,0],[0,1]不是,因为相邻的0s被分割。
这是密码-高尔夫,所以目标是最小化源代码的大小(以字节为单位)。
[1,0] ->
[ [[1,0]]
, [[1],[0]]
]
[1,1,1,1] ->
[ [[1,1,1,1]]
]
[1,1,0,0,1] ->
[ [[1,1,0,0,1]]
, [[1,1],[0,0,1]]
, [[1,1,0,0],[1]]
, [[1,1],[0,0],[1]]
]发布于 2022-09-28 19:45:37
发布于 2022-09-28 20:16:50
发布于 2022-09-28 19:18:19
ITŒP‘œṖ€一种一元链接,它接受1和0的列表,并生成有效分区的列表。
ITŒP‘œṖ€ - Link: list, B e.g. [0, 0, 1, 1, 0, 1]
I - deltas (of B) [ 0, 1, 0,-1, 1]
T - truthy indices [ 2, 4, 5]
ŒP - powerset [[],[2],[4],[5],[2,4],[2,5],[4,5],[2,4,5]]
‘ - increment [[],[3],[5],[6],[3,5],[3,6],[5,6],[3,5,6]]
€ - for each:
œṖ - partition (B) at [[[0,0,1,1,0,1]],[[0,0],[1,1,0,1]],[[0,0,1,1],[0,1]],[[0,0,1,1,0],[1]],[[0,0],[1,1],[0,1]],[[0,0],[1,1,0],[1]],[[0,0,1,1],[0],[1]],[[0,0],[1,1],[0],[1]]]https://codegolf.stackexchange.com/questions/252303
复制相似问题