Te dan un montón de pesos, y tu tarea es construir un pequeño móvil equilibrado usando esos pesos.
La entrada es una lista de pesos enteros en el rango de 1 a 9, inclusive. Puede haber duplicados.
La salida es una imagen ascii de un móvil que, cuando se cuelga, se equilibraría. Quizás mejor se muestra con el ejemplo:
entrada
3 8 9 7 5
salida posible
|
+-----+---------+
| |
+--+-+ +----+------+
| | | |
8 ++--+ 7 5
| |
9 3
Debe usar los caracteres ascii como se muestra. Los segmentos horizontal y vertical pueden ser de cualquier longitud. Ninguna parte del móvil puede tocar (horizontal o verticalmente) otra parte no conectada del móvil. Todos los pesos deben colgarse de un segmento vertical de longitud de al menos 1, y debe haber un segmento vertical del que se cuelga todo el móvil.
El tamaño de un móvil es el número total de +
, -
y |
caracteres necesarios para su construcción. Los tamaños más bajos son mejores.
Puede poner tantas conexiones en un segmento como desee. Por ejemplo:
entrada
2 3 3 5 3 9
salida posible
|
+---+---+-----------+
| | |
+--+-+ 5 9
| | |
2 | 3
|
+++
| |
3 3
El programa ganador es el que puede generar el promedio más bajo de tamaños móviles para un conjunto de prueba de entradas. La prueba real es súper secreta para evitar la codificación rígida, pero será algo como esto:
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
debe ser la misma en ambos lados del punto de pivote.