La file de Pokémons

Partage équitable d'une file

Dans les monts de Kalos, Violette et vous venez de découvrir un lieu contenant de très nombreux Pokémons, rangés en file.

Après négociations avec Violette, vous décidez de vous partager équitablement le groupe de Pokémons. Mais chaque membre de ce groupe est particulièrement lié à ses deux voisins, de droite et de gauche (les Pokémons du bout n'ont qu'un seul voisin).

Vous cherchez donc à vous partager équitablement ces Pokémons, en brisant la chaîne le moins souvent possible.

L'objectif est donc de réaliser moins d'un certain nombre de groupes, de manière à ce qu'en prenant chacun un groupe sur deux, vous ayez chacun les mêmes Pokémons au final.

Le nombre de groupes maximum est donné en entrée, ainsi que la liste des Pokémons.

Pour valider, donnez le nombre de Pokémons par groupe constitué (dans l'ordre).

Exemple

Imaginons que la liste des Pokémons soit :

Ptitard, Ptitard, Ptitard, Ptitard,
Sorboul, Blizzi, Blizzi, Blizzi,
Sorboul, Blizzi, Sorboul, Sorboul

Ce qu'on peut écrire :

P, P, P, P, S, B, B, B, S, B, S, S

Si le nombre de groupes maximum était 4, une solution acceptable serait :

P, P | P, P, S, B, B | B, S, B, S | S

En prenant, alternativement, chacun un groupe, vous auriez finalement les mêmes Pokémons :

P, P | B, S, B, S pour vous,
P, P, S, B, B | S pour Violette.

La solution au problème du partage peut être indiquée en donnant le nombre de Pokémons dans chaque groupe.

Dans cet exemple, seule la solution 2, 5, 4, 1 serait donc acceptable.

Autre exemple.

Si l'énoncé était :

P, P, S, S, P, B, B, B, S, B, S, P

avec la contrainte de faire au plus 4 groupes, il y aurait plusieurs solutions possibles :

  • 1, 6, 5 (il y a moins de 4 groupes),
  • 1, 1, 5, 5
  • 2, 5, 4, 1,
  • 3, 3, 3, 3,
  • 3, 4, 3, 2,
  • 4, 1, 2, 5,
  • 4, 2, 2, 4.
Ce problème est tiré de c0d1ng UP 2017

Type de retour

Séquence de nombres entiers.

Entrée du problème

  • nombre_groupes : 6
  • pokemons : ['Empiflor', 'Limagma', 'Grahyèna', 'Bétochef', 'Limagma', 'Polichombr', 'Limagma', 'Bétochef', 'Grahyèna', 'Bétochef', 'Toudoudou', 'Marcacrin', 'Bétochef', 'Empiflor', 'Grahyèna', 'Grahyèna', 'Gravalanch', 'Gravalanch', 'Empiflor', 'Gravalanch', 'Bétochef', 'Empiflor', 'Drascore', 'Marcacrin', 'Empiflor', 'Marcacrin', 'Marcacrin', 'Drascore', 'Bétochef', 'Gravalanch', 'Empiflor', 'Bétochef', 'Drascore', 'Marcacrin', 'Léopardus', 'Drascore', 'Polichombr', 'Toudoudou', 'Bétochef', 'Limagma', 'Bétochef', 'Gravalanch', 'Limagma', 'Grahyèna', 'Empiflor', 'Léopardus', 'Marcacrin', 'Limagma', 'Marcacrin', 'Empiflor', 'Empiflor', 'Marcacrin', 'Limagma', 'Gravalanch', 'Empiflor', 'Toudoudou', 'Gravalanch', 'Empiflor', 'Drascore', 'Bétochef', 'Polichombr', 'Marcacrin', 'Limagma', 'Drascore', 'Polichombr', 'Toudoudou', 'Toudoudou', 'Gravalanch', 'Drascore', 'Empiflor', 'Léopardus', 'Drascore', 'Empiflor', 'Grahyèna', 'Empiflor', 'Marcacrin', 'Bétochef', 'Marcacrin', 'Gravalanch', 'Marcacrin', 'Toudoudou', 'Léopardus', 'Bétochef', 'Drascore', 'Bétochef', 'Empiflor', 'Bétochef', 'Polichombr', 'Grahyèna', 'Limagma', 'Léopardus', 'Limagma', 'Gravalanch', 'Toudoudou', 'Grahyèna', 'Marcacrin', 'Bétochef', 'Polichombr', 'Toudoudou', 'Léopardus', 'Gravalanch', 'Bétochef', 'Empiflor', 'Polichombr', 'Marcacrin', 'Gravalanch', 'Drascore', 'Polichombr']

Formulaire de réponse

Vous devez être connecté pour pouvoir répondre aux défis

Tags : cup17 combinatoire