前書き
これは、あなたがその人の邪悪な双子の役割を担っているこの挑戦のフォローアップです。悪であるため、シェアを最大化するのではなく、可能な限り不公平になり、それをあまりにも明白にしないため、次のスキームを思いつきました。
兄弟のようにできるだけ公平になりたいことを他の人に伝え、整数を等しい長さの断片に分割します。したがって、整数ごとに、適切な人数の人々を見つけて、最大のピースと最小のピースの差が最大になるようにします。
たとえば、整数6567を指定した場合、そのままにして、2つ65,67または4 つに分割できます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
今回は1つの解決策しかありません。つまり3、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