introduction
Il s'agit d'un suivi de ce défi où vous incarnez le mauvais jumeau de cette personne. Étant maléfique, vous ne voulez pas maximiser votre part, mais soyez aussi injuste que possible et vous n'allez pas le rendre trop évident, c'est pourquoi vous avez proposé le schéma suivant:
Vous allez dire aux autres que vous voulez être aussi juste que possible comme votre frère et donc vous allez diviser l'entier en morceaux de longueur égale. Ainsi, pour chaque entier, vous obtiendrez le bon nombre de personnes de sorte que la différence entre la plus grande et la plus petite pièce soit maximale.
Par exemple, si l'on vous donne l'entier, 6567
vous pouvez le laisser tel quel, le diviser en deux 65,67
ou quatre 6,5,6,7
. Cela vous donne les différences maximales suivantes:
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
Puisque vous voulez seulement être le mal que vous ne préférez pas 67
plus 7
et ainsi vous sortie soit 2
ou 4
.
Un autre (cas moins spécial); étant donné l'entier, 121131
vous pouvez le diviser comme ceci:
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
Cette fois, il n'y a qu'une seule solution - à savoir 3
- car avec trois personnes, la différence est maximale.
Défi
Étant donné un nombre entier, déterminez tout moyen possible d'être au maximum mauvais et signalez le nombre de personnes nécessaires pour y parvenir.
Règles
- L'entrée sera toujours ≥ 1
- L'entrée peut être soit un entier, une liste de chiffres ou une chaîne
- Vous n'avez pas à gérer les entrées non valides
Cas de test
Il vous suffit de signaler le nombre de personnes nécessaires résultant, les partitions possibles sont uniquement à titre d'illustration:
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
la source
Réponses:
Gelée ,
1614 octetsUn lien monadique prenant une liste d'entiers (les chiffres) et renvoyant un entier.
Essayez-le en ligne! ou voir une suite de tests
Comment?
la source
ŒṖ
et./
sont tous les deux plus longsPyth , 20 octets
Essayez-le ici!
Je n'utilise plus de partitions, car cela s'avère plus long !!! J'ai fini par me diviser en sous-listes de longueur égales aux diviseurs de la longueur.
la source
05AB1E , 12 octets
Essayez-le en ligne!
05AB1E , 12 octets
Essayez-le en ligne!
Comment ça fonctionne
05AB1E est juste incroyablement concis pour ce défi.
la source
JavaScript (ES6),
118115 octetsEnregistré 3 octets grâce à @ edc65
Prend l'entrée sous forme de chaîne.
Cas de test
Afficher l'extrait de code
la source
Python 2 ,
138132 octetsEssayez-le en ligne!
la source
Haskell , 114 octets
Essayez-le en ligne!
la source
Perl 5 , 70 octets
Essayez-le en ligne!
la source
Gelée , 20 octets
Essayez-le en ligne!
la source