介绍:
我收集曲折的难题。大多数曲折的拼图游戏都是由中国公司生产和销售的。大多数知名公司都要求拼图游戏设计师许可,以制作他们的设计并共同开发市场上的产品。在这种情况下,拼图设计师当然为他们的拼图之一上市而感到非常高兴和自豪。
但是,也有一些中国公司制造难题。这些仿冒品是未经原始创作者许可使用的设计,或者是已经存在的拼图的价格便宜的低价副本。
挑战:
我们将确定以特定顺序(从左到右†)“释放”的数字的独创性。
给定整数列表,请按其原始性进行分组和输出。
如何确定数字的独创性?
- 一个数字是否与先前的数字完全相同?组(最不原始),在所有其他组之后是X + 1组。
- 一个数字是不是一个较早数字的重复,而是一个负数(即原始数字是,但是现在是;反之亦然)?组。
- 数字的绝对值可以通过连接一个或多个更早的绝对数来形成,并且它不属于前面提到的组或吗?组X - ñ,其中Ñ是不同数字的在级联(和所使用的量Ñ ≥ 1)。
- 这个数字不适合上述任何一组吗?到目前为止,它是完全唯一的吗?第组(最原始的组),在所有其他组之前领先。
这听起来似乎很模糊,所以这里有一个分步示例:
输入清单: [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
34
是第一个数字,始终是原始数字,在组。到目前为止的输出:[[34]]
9
也是原来的:[[34,9]]
4
也是原来的:[[34,9,4]]
-34
是早期数字的负数34
,因此它在组中:[[34,9,4],[-34]]
19
是原始的:[[34,9,4,19],[-34]]
-199
可以由两个较早的数字19
和组成9
,所以在组中:[[34,9,4,19],[-199],[-34]]
34
是较早数的精确副本,因此它在组:[[34,9,4,19],[-199],[-34],[34]]
-213
是原始的:[[34,9,4,19,-213],[-199],[-34],[34]]
94
可以由两个较早的数字9
和组成4
,所以在组中:[[34,9,4,19,-213],[-199,94],[-34],[34]]
1934499
可以由四个较早的数字形成19
,34
,4
,和两次9
,因此它在组:[[34,9,4,19,-213],[19499],[-199,94],[-34],[34]]
213
是早期数字的负数-213
,因此它在组中:[[34,9,4,19,-213],[1934499],[-199,94],[-34,213],[34]]
3
是原始的:[[34,9,4,19,-213,3],[1934499],[-199,94],[-34,213],[34]]
21
是原始的:[[34,9,4,19,-213,3,21],[1934499],[-199,94],[-34,213],[34]]
-2134
可以由两个较早的数字213
和4
(或三个较早的数字21
,3
和和组成)4
,但是我们总是使用最少数量的串联数字来确定创意),因此它在组中:[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134],[-34,213],[34]]
44449
可以由两个较早的数字四次形成4
和9
,所以它在组:[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[-34,213],[34]]
44
可以由一个更早的数字形成4
,重复两次,所以在组中:[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]
因此对于输入[34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
,输出为[[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]
。
挑战规则:
- I / O是灵活的。您可以输入整数或字符串的列表/数组/流,通过STDIN等一一输入。输出可以是以组为键的映射,嵌套列表为示例和此挑战中的测试用例,已打印换行符分隔等
- 允许您以相反的顺序输入输入列表(这可能对基于堆栈的语言很有用)。†在这种情况下,从左到右提到的当然是从右到左。
- 正如你可以看到的例子为整数
-2134
,我们始终组数字,其他数字与尽可能少的连接(通过形成213
和4
-两个数字;而不是21
,3
和4
-三个数字)。 - 正如您在integer的示例中所看到的
1934499
,您可以多次使用一个更早的数字(9
在这种情况下)(类似于在示例中44449
使用44
s和a9
)。但是,它们只计算一次即可确定组。 - 不允许在输出中为空组提供空的内部列表。所以测试用例
[1,58,85,-8,5,8585,5885,518]
可能不会导致[[1,58,85,8,5],[518],[5885],[8585],[],[]]
代替,其中,所述空的基团是和,和上述可能不会导致在示例[[34,9,4,19,-213,3,21],[1934499],[],[-199,94,-2134,44449],[44],[-34,213],[34]]
代替,其中所述空的基团是。 - 组的顺序是严格的(除非您使用地图,否则可以从键中扣除组),但是组内数字的顺序可以是任意顺序。因此,上面示例中的
[34,9,4,19,-213,3,21]
组的也可以是[21,3,-213,19,4,9,34]
或[-213,4,34,19,9,21,3]
。 - 您可以保证不会有超过九个以前的数字构成的任何数字。所以,你将永远不会有任何组,以及可能的组的最大数量为12:
- 您可以假设整数最大为32位,所以在range内
[−2147483648,2147483647]
。
一般规则:
- 这是代码高尔夫球,因此最短答案以字节为单位。
不要让代码高尔夫球语言阻止您使用非代码高尔夫球语言发布答案。尝试针对“任何”编程语言提出尽可能简短的答案。 - 标准规则适用于具有默认I / O规则的答案,因此您可以使用STDIN / STDOUT,具有正确参数的函数/方法以及返回类型的完整程序。你的来电。
- 默认漏洞是禁止的。
- 如果可能的话,请添加一个带有测试代码的链接(即TIO)。
- 另外,强烈建议为您的答案添加说明。
测试用例:
Input: [34,9,4,-34,19,-199,34,-213,94,1934499,213,3,21,-2134,44449,44]
Output: [[34,9,4,19,-213,3,21],[1934499],[-199,94,-2134,44449],[44],[-34,213],[34]]
Input: [17,21,3,-317,317,2,3,117,14,-4,-232,-43,317]
Output: [[17,21,3,2,117,14,-4],[-317,-232,-43],[317],[3,317]]
Input: [2,4,8,10,12,-12,-102,488,10824]
Output: [[2,4,8,10,12],[10824],[-102,488],[-12]]
Input: [0,100,-100,10000,-100,1001000]
Output: [[0,100],[10000,1001000],[-100],[-100]]
Input: [1,58,85,-8,5,8585,5885,518]
Output: [[1,58,85,-8,5],[518],[5885],[8585]]
Input: [4,-4,44,5,54]
Output: [[4,5],[54],[44],[-4]]
X + 1
是一个用于精确副本的特殊组X
吗?是否是一个可以由单个数字的副本形成的其他数字的组,例如它的取反?