感谢PPCG社区,圣诞老人成功地将礼物分类到正确的顺序,以便搬进运输码头。不幸的是,运输码头的标志坏了,所以他不知道把所有礼物放在哪里!礼物全部归为一组,而不是按照范围分组,Santa承认这是一个更好的主意。
现在,给定礼物的排序顺序,确定所有可能的最小范围配置,以使礼物的顺序正确。也就是说,找到所有最小范围的配置,以使根据挑战#5中的算法对礼物进行排序不会改变顺序。
挑战
最小范围配置是范围的列表,以使范围各自尽可能小。也就是说,如果指定范围覆盖礼物的特定子集,则该范围的最小值和最大值必须与该子集的最小值和最大值相同。换句话说,缩小封面的任何范围将导致它不再是封面。
挑战在于找到适用于当前尺寸的所有可能的最小范围配置。让我们举个例子:[3, 1, 2, 5, 4, 7, 6]
有一个简单的情况,那就是要占据整个当前配置的范围。在这种情况下,[[1, 7]]
将是一个解决方案。
对于具有唯一元素的示例,另一种琐碎的情况是[[3], [1], [2], [5], [4], [7], [6]]
(因为不需要对范围进行排序)。
在此示例中,我们还看到[[1, 3], [4, 7]]
和[[1, 3], [4, 5], [6, 7]]
以及与[[1, 3], [5], [4], [6, 7]]
和也可以[[1, 3], [4, 5], [7], [6]]
。
的最终答案[3, 1, 2, 5, 4, 7, 6]
是[[[3], [1], [2], [5], [4], [7], [6]], [[3], [1], [2], [5], [4], [6, 7]], [[3], [1], [2], [4, 5], [7], [6]], [[3], [1], [2], [4, 5], [6, 7]], [[3], [1], [2], [4, 7]], [[3], [1, 2], [5], [4], [7], [6]], [[3], [1, 2], [5], [4], [6, 7]], [[3], [1, 2], [4, 5], [7], [6]], [[3], [1, 2], [4, 5], [6, 7]], [[3], [1, 2], [4, 7]], [[1, 3], [5], [4], [7], [6]], [[1, 3], [5], [4], [6, 7]], [[1, 3], [4, 5], [7], [6]], [[1, 3], [4, 5], [6, 7]], [[1, 3], [4, 7]], [[1, 5], [7], [6]], [[1, 5], [6, 7]], [[1, 7]]]
。
格式化规格
输入将以您的语言在合理支持的数字范围内以任何合理格式的正整数平面列表形式给出。输入内容可能包含重复元素。输出应该以任何合理格式的正整数3D列表形式给出。
输出中的每个范围(在第二层)都可以表示为[min, max]
,[num]
如果它是单值范围,则可以表示为整个范围本身,但是输出格式必须一致。请指定您是否希望使用稍微不同的合理输出格式。
重复的值必须在输出中覆盖单个范围;也就是说,输出中的两个范围都不能有任何重叠。
您的解决方案可以按任何顺序返回范围,而不必确定。
规则
- 适用标准漏洞
- 这是 代码高尔夫球 所以最短的答案以字节为单位
- 没有答案将被接受
包含重复元素的列表的测试用例:
2 3 2 4 -> [[[2, 3], [4]], [[2, 4]]]
参考实施
标头是链接。
注意:我从Advent Of Code汲取灵感来挑战这个系列。我没有与此网站的隶属关系
通过查看此处第一个挑战的“链接”部分,您可以查看该系列中所有挑战的列表。
打高尔夫球快乐!