Vous préparez une fête et comptez répartir vos 30 invités en 3 tables de 10 personnes.
Vos invités sont toutefois difficiles et ne s'entendent pas tous très bien. Pour éviter les coups d'éclat, vous disposez d'une liste de couples de personnes qui ne peuvent en aucun cas être placés à la même table.
Voici déjà la liste de tous les convives :
['ANNE', 'BERNARD', 'CELINE', 'CHRISTINE', 'CHRISTOPHE', 'DANIEL', 'ERIC', 'FREDERIC', 'JEANNE', 'JULIEN', 'LAURENT', 'MARIE', 'MARTINE', 'MICHEL', 'MONIQUE', 'NATHALIE', 'NICOLAS', 'NICOLE', 'PASCAL', 'PATRICK', 'PHILIPPE', 'PIERRE', 'SANDRINE', 'SEBASTIEN', 'SOPHIE', 'STEPHANE', 'STEPHANIE', 'SYLVIE', 'VALERIE', 'VERONIQUE']
L'entrée du problème est la liste des couples de personnes qui ne peuvent être placés à la même table. Vous devez fournir comme réponse au problème une séquence de 3 séquences de prénoms indiquant une répartition par table qui satisfait toutes les contraintes.
Voici un exemple, avec seulement 9 personnes (donc 3 par tables) :
Avec ces entrées, un placement correct est :
Pour cet exemple, une réponse valide serait donc :
('ALBERT', 'LAURENT', 'JEANNE'), ('JEAN', 'STEPHANIE', 'MICHEL'), ('MARIUS', 'NICOLE', 'STEPHANE')Naturellement, il y a plusieurs façons de coder la même répartition par table (on peut intervertir les noms dans une séquence, et les séquences entre elles), et il peut y avoir plusieurs répartitions différentes qui satisfont toutes les contraintes données.