Soit une liste d'entiers positifs sans ordre particulier et pouvant contenir des doublons. Écrivez un programme ou une fonction qui génère une liste d'entiers positifs (dont l'ordre n'est pas important) de telle sorte que la fusion de et aboutit à la plus petite liste qui peut être entièrement divisée en plages identiques d'entiers , où est le plus grand élément deM L M [ 1 .. i ] i L
Exemple
Soit L = [5,3,3,2,7]
. L'élément maximal de L
est 7
. Le plus grand nombre de fois qu'un entier spécifique se produit est 2
( 3
apparaît 2 fois). Par conséquent, nous devons afficher la liste M
qui permettra de terminer L
afin que nous puissions construire des 2
plages d'entiers de 1
à 7
.
Par conséquent, nous devons sortir M = [1,1,2,4,4,5,6,6,7]
, de sorte que chaque entier de 1
à 7
apparaisse 2
fois.
Entrées et sorties
- Utilisez quelque chose dans votre langue qui ressemble aux listes. La structure de données utilisée pour l'entrée et la sortie doit être la même.
- La liste d'entrée ne contiendra que des entiers positifs.
- La liste d'entrée ne sera pas vide.
- Vous ne pouvez pas supposer que la liste d'entrée est triée.
- L'ordre dans la liste de sortie est sans importance.
Cas de test
Input Output
[1] []
[7] [1, 2, 3, 4, 5, 6]
[1, 1, 1] []
[1, 8] [2, 3, 4, 5, 6, 7]
[3, 3, 3, 3] [1, 1, 1, 1, 2, 2, 2, 2]
[5, 2, 4, 5, 2] [1, 1, 3, 3, 4]
[5, 2, 4, 5, 5] [1, 1, 1, 2, 2, 3, 3, 3, 4, 4]
[5, 3, 3, 2, 7] [1, 1, 2, 4, 4, 5, 6, 6, 7]
Notation
Il s'agit de code-golf , donc la réponse la plus courte en octets l'emporte.
i
est le plus gros élément L
, c'était une faute de frappe dans les spécifications.
M=[1,1,2,2,3]
pendant L=[3]
que "la fusion de L et M aboutit à une liste qui peut entièrement se diviser en plages identiques d'entiers [1..i]"?
[1,2]
. Je vais le clarifier afin qu'il soit clair que cela devrait aboutir au nombre minimum de plages.
i
l'élément le plus important deL
ouM
?