Introdução
Este é um acompanhamento desse desafio em que você assume o papel de gêmeo maligno dessa pessoa. Sendo mau, você não deseja maximizar sua parte, mas seja o mais injusto possível e não tornará isso muito óbvio, por isso surgiu o seguinte esquema:
Você dirá aos outros que deseja ser o mais justo possível, como seu irmão, e assim dividirá o número inteiro em partes de igual comprimento. Portanto, para cada número inteiro, você terá a quantidade certa de pessoas, de modo que a diferença entre a maior e a menor peça seja máxima.
Por exemplo, se você receber o número inteiro, 6567
poderá deixá-lo como está, divida-o em duas partes 65,67
ou quatro 6,5,6,7
. Isso fornece as seguintes diferenças máximas:
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
Como você só quer ser mau, você não prefere 67
mais, 7
e assim você produzirá um 2
ou outro 4
.
Outro (caso menos especial); dado o número inteiro, 121131
você pode dividi-lo assim:
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
Desta vez, existe apenas uma solução - ou seja 3
-, já que com três pessoas a diferença é máxima.
Desafio
Dado um número inteiro, determine qualquer maneira possível de ser maximamente maligna e relate o número de pessoas necessárias para conseguir isso.
Regras
- A entrada será sempre ≥ 1
- A entrada pode ser um número inteiro, lista de dígitos ou sequência
- Você não precisa lidar com entradas inválidas
Casos de teste
Você só precisa relatar o número resultante de pessoas necessárias, as partições possíveis são apenas para ilustração:
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
fonte
Respostas:
Geléia ,
1614 bytesUm link monádico que obtém uma lista de números inteiros (os dígitos) e retorna um número inteiro.
Experimente online! ou veja uma suíte de testes
Quão?
fonte
ŒṖ
e./
são ambos maisPitão , 20 bytes
Experimente aqui!
Eu não uso mais partições, porque acaba sendo mais !!! Acabei me dividindo em sublistas de comprimento iguais aos divisores do comprimento.
fonte
05AB1E , 12 bytes
Experimente online!
05AB1E , 12 bytes
Experimente online!
Como funciona
05AB1E é incrivelmente conciso para este desafio.
fonte
JavaScript (ES6),
118115 bytesGuardado 3 bytes graças a @ edc65
Recebe a entrada como uma sequência.
Casos de teste
Mostrar snippet de código
fonte
Python 2 ,
138132 bytesExperimente online!
fonte
Haskell , 114 bytes
Experimente online!
fonte
Perl 5 , 70 bytes
Experimente online!
fonte
Gelatina , 20 bytes
Experimente online!
fonte