Introducción
Este es un seguimiento de este desafío en el que estás tomando el papel del gemelo malvado de esa persona. Siendo malvado, no desea maximizar su participación, sino que sea lo más injusto posible y no lo hará demasiado obvio, por eso se le ocurrió el siguiente esquema:
Les dirás a los demás que quieres ser lo más justo posible como tu hermano y, por lo tanto, dividirás el número entero en partes de igual longitud. Entonces, para cada número entero, obtendrá la cantidad correcta de personas, de modo que la diferencia entre la pieza más grande y la más pequeña sea máxima.
Por ejemplo, si le dan el número entero 6567
, puede dejarlo como está, dividirlo en dos 65,67
o cuatro partes 6,5,6,7
. Esto le brinda las siguientes diferencias 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
Dado que sólo quiere ser el mal que no prefieren 67
más 7
y por lo tanto se dará salida a cualquiera 2
o 4
.
Otro (caso menos especial); dado el número entero 121131
, podría dividirlo así:
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
Esta vez solo hay una solución, a saber 3
, ya que con tres personas la diferencia es máxima.
Desafío
Dado un número entero, determine cualquier forma posible de ser el máximo malvado e informe la cantidad de personas necesarias para lograrlo.
Reglas
- La entrada siempre será ≥ 1
- La entrada puede ser un número entero, una lista de dígitos o una cadena
- No tiene que manejar entradas inválidas
Casos de prueba
Solo necesita informar el número resultante de personas necesarias, las particiones posibles son solo para ilustración:
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
fuente
Respuestas:
Jalea ,
1614 bytesUn enlace monádico que toma una lista de enteros (los dígitos) y devuelve un entero.
Pruébalo en línea! o ver un conjunto de pruebas
¿Cómo?
fuente
ŒṖ
y./
ambos son más largosPyth , 20 bytes
Pruébalo aquí!
¡Ya no uso particiones, porque resulta ser más largo! Terminé dividiéndome en sublistas de longitud igual a los divisores de la longitud.
fuente
05AB1E , 12 bytes
Pruébalo en línea!
05AB1E , 12 bytes
Pruébalo en línea!
Cómo funciona
05AB1E es increíblemente conciso para este desafío.
fuente
JavaScript (ES6),
118115bytesGuardado 3 bytes gracias a @ edc65
Toma la entrada como una cadena.
Casos de prueba
Mostrar fragmento de código
fuente
Python 2 ,
138132 bytesPruébalo en línea!
fuente
Haskell , 114 bytes
Pruébalo en línea!
fuente
Perl 5 , 70 bytes
Pruébalo en línea!
fuente
Jalea , 20 bytes
Pruébalo en línea!
fuente