挑战:
给定一个正整数,输出至少出现两次的最长的单个数字子序列,并且具有另一个数字的边界(或整数的开始/结尾)。
一个例子:
输入:7888885466662716666
单个数字的最长子序列为88888
(7[88888]5466662716666
),长度为5。但是,该子序列在整数中仅出现一次。
相反,输入的结果7888885466662716666
应为6666
(78888854[6666]271[6666]
),因为它(至少)出现两次。
挑战规则:
- 子序列的长度优先于其发生的次数。(即输入
8888858888866656665666
,我们输出88888
([88888]5[88888]66656665666
;长度5,发生两次),而不是666
(88888588888[666]5[666]5[666]
;长度3,发生三次)。 - 如果多个子序列的长度相等,则输出出现次数最大的子序列。即,具有输入
3331113331119111
,输出我们111
(333[111]333[111]9[111]
;长度为3时,发生三次),而不是333
([333]111[333]1119111
;长度3为好,但发生两次) - 如果多个子序列的出现次数和长度相等,则可以输出其中一个或全部(以任何顺序)。即,具有输入
777333777333
,可能的输出是:777
;333
;[777, 333]
; 或[333, 777]
。 - 子序列必须具有其他数字的边界(或整数的开始/结尾)。即,输入
122222233433
结果为33
(1222222[33]4[33]
;长度2,出现两次)而不是222
(1[222][222]33433
,长度3,两次出现都无效)。- 这适用于所有计入出现次数计数器的数字。即,输入
811774177781382
结果为8
([8]117741777[8]13[8]2
;长度1,发生三次,三次)而不是77
(811[77]41[77]781382
/811[77]417[77]81382
;长度2,发生两次,一次无效)或1
(8[1][1]774[1]7778[1]382
;长度1,发生四次,两次无效。
- 这适用于所有计入出现次数计数器的数字。即,输入
- 您可以假设输入内容不包含任何数字
0
(它将与匹配[1-9]+
)。(这是为了避免不得不处理10002000
应该输出的测试用例,默认情况下000
大多数语言都将输出0
。) - 您可以假定输入将始终包含至少一个有效输出。
- I / O都很灵活。可以是数字/字节/字符的列表/数组/流,也可以是字符串而不是单个整数。
通用规则:
- 这是代码高尔夫球,因此最短答案以字节为单位。
不要让代码高尔夫球语言阻止您发布使用非代码高尔夫球语言的答案。尝试针对“任何”编程语言提出尽可能短的答案。 - 标准规则适用于您的答案,因此您可以使用STDIN / STDOUT,具有正确参数的函数/方法和返回类型的完整程序。你的来电。
- 默认漏洞是禁止的。
- 如果可能的话,请添加一个带有测试代码的链接。
- 另外,强烈建议为您的答案添加说明。
测试用例:
Input: 7888885466662716666 / [7,8,8,8,8,8,5,4,6,6,6,6,2,7,1,6,6,6,6]
Output: 6666 / [6,6,6,6]
Input: 3331113331119111 / [3,3,3,1,1,1,3,3,3,1,1,1,9,1,1,1]
Output: 111 / [1,1,1]
Input: 777333777333 / [7,7,7,3,3,3,7,7,7,3,3,3]
Possible outputs: 777; 333; [777,333]; [333;777] / [7,7,7]; [3,3,3]; [[7,7,7],[3,3,3]]; [[3,3,3],[7,7,7]]
Input: 122222233433 / [1,2,2,2,2,2,2,3,3,4,3,3]
Output: 33 / [3,3]
Input: 811774177781382 / [8,1,1,7,7,4,1,7,7,7,8,1,3,8,2]
Output: 8 / [8]
Input: 555153333551 / [5,5,5,1,5,3,3,3,3,5,5,1]
Output: 1 / [1]
Input: 12321 / [1,2,3,2,1]
Possible outputs: 1; 2; [1,2]; [2,1] / [1]; [2]; [[1],[2]]; [[2],[1]]
Input: 944949949494999494 / [9,4,4,9,4,9,9,4,9,4,9,4,9,9,9,4,9,4]
Output: 4 / [4]
Input: 8888858888866656665666 / [8,8,8,8,8,5,8,8,8,8,8,6,6,6,5,6,6,6,5,6,6,6]
Output: 88888 / [8,8,8,8,8]
Input: 1112221112221111 / [1,1,1,2,2,2,1,1,1,2,2,2,1,1,1,1]
Output: 111; 222; [111,222]; [222,111] / [1,1,1]; [2,2,2]; [[1,1,1],[2,2,2]]; [[2,2,2],[1,1,1]]
Input: 911133111339339339339339 / [9,1,1,1,3,3,1,1,1,3,3,9,3,3,9,3,3,9,3,3,9,3,3,9]
Output: 111 / [1,1,1]
222
被其他整数限定的次数一样多。我猜我们不应该算是的子字符串的出现1111
。实际上,最好等待OP。
1112221112221111
这些都是子序列和他们的罪状:1111 (1)
,111 (2)
,222 (2)
。由于我们只输出序列至少发生两次,则输出可以是以下之一:111
,222
,[111,222]
,[222,111]
。(有关更多信息,请参阅第四条规则。)基本上1111
将永远只计为1111
,而不会计为1
和111
或11
和11
。我将添加您的测试用例,但输出是111
和之一或全部都是222
。
8888858888866656665666
。如果我正确地解释了挑战,那么Brachylog和05AB1E解决方案都会失败。