On vous donne un tas de poids, et votre tâche est de construire un petit mobile équilibré en utilisant ces poids.
L'entrée est une liste de poids entiers compris entre 1 et 9 inclus. Il peut y avoir des doublons.
La sortie est une image ascii d'un mobile qui, une fois accroché, s'équilibrerait. Peut-être le mieux montré par l'exemple:
contribution
3 8 9 7 5
sortie possible
|
+-----+---------+
| |
+--+-+ +----+------+
| | | |
8 ++--+ 7 5
| |
9 3
Vous devez utiliser les caractères ascii comme indiqué. Les segments horizontaux et verticaux peuvent être de n'importe quelle longueur. Aucune partie du mobile ne doit toucher (horizontalement ou verticalement) une autre partie non connectée du mobile. Tous les poids doivent être suspendus à un segment vertical d'une longueur d'au moins 1, et il doit y avoir un segment vertical à partir duquel tout le mobile est suspendu.
La taille d'un mobile est le nombre total de +
, -
et les |
caractères nécessaires pour le construire. Les tailles inférieures sont meilleures.
Vous pouvez mettre autant de connexions sur un segment que vous le souhaitez. Par exemple:
contribution
2 3 3 5 3 9
sortie possible
|
+---+---+-----------+
| | |
+--+-+ 5 9
| | |
2 | 3
|
+++
| |
3 3
Le programme gagnant est celui qui peut générer la moyenne la plus basse des tailles mobiles pour un ensemble de test d'entrées. Le vrai test est super secret pour empêcher le codage en dur, mais ce sera quelque chose comme ceci:
8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 7
1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 7 7
3 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 7
total_weight_hung_from_point * distance_of_point_from_pivot
doit être la même des deux côtés du point de pivot.