介绍
这是此挑战的后续活动,在此过程中,您将扮演那个人的邪恶双胞胎角色。邪恶时,您不想最大化自己的份额,而希望尽可能地不公平,并且不会太明显,这就是为什么您提出以下方案的原因:
您将告诉其他人,您希望自己像兄弟姐妹一样公平,因此您将把整数分成相等长度的片段。因此,对于每个整数,您都会想出合适的人数,以使最大和最小的部分之间的差异最大。
例如,如果给定整数6567
,则可以将其保留为原样,将其分为两部分65,67
或四部分6,5,6,7
。这为您带来以下最大差异:
6567 -> max() = 0
65,67 -> max(|65-67|) = 2
6,5,6,7 -> max(|6-5|,|6-5|,|6-6|,|6-7|,|5-6|,|5-7|,|6-7|) = 2
由于您只想做恶人,所以您不喜欢67
它7
,因此您将输出2
或4
。
另一个(不太特殊的情况);给定整数,121131
您可以像这样拆分它:
121131 -> max() = 0
121,131 -> max(|121-131|) = 10
12,11,31 -> max(|12-11|,|12-31|,|11-31|) = 20
1,2,1,1,3,1 -> max(…) = 2
这次只有一个解决方案-即3
-由于三个人的差异最大。
挑战
给定一个整数,确定最大程度地邪恶的任何可能方式,并报告实现此目标所需的人数。
规则
- 输入将始终≥1
- 输入可以是整数,数字列表或字符串
- 您不必处理无效的输入
测试用例
您只需要报告所需的结果人数,可能的分区仅用于说明:
In -> splits (difference) -> Out
1 -> [1] (0) -> 1
10 -> [1,0] (1) -> 2
11 -> [11] or [1,1] (0) -> 1 or 2
12 -> [1,2] (1) -> 2
42 -> [4,2] (2) -> 2
101 -> [1,0,1] (1) -> 3
2222 -> [2222] or [22,22] or [2,2,2,2] (0) -> 1 or 2 or 4
6567 -> [65,67] or [6,5,6,7] (2) -> 2 or 4
123000 -> [123,000] (123) -> 2
123001 -> [123,001] (122) -> 2
121131 -> [12,11,31] (20) -> 3
294884 -> [294,884] (590) -> 2
192884729 -> [192,884,729] (692) -> 3
123456189012 -> [123456,189012] (65556) -> 2
123457117346 -> [1234,5711,7346] (6112) -> 3
1
我想知道是否有人会以邪恶的编程语言提交解决方案?:D
—
SK19