Você recebe vários pesos e sua tarefa é construir um pequeno celular balanceado usando esses pesos.
A entrada é uma lista de pesos inteiros no intervalo de 1 a 9, inclusive. Pode haver duplicatas.
A saída é uma imagem ascii de um celular que, quando pendurado, seria equilibrado. Talvez seja melhor mostrado pelo exemplo:
entrada
3 8 9 7 5
saída possível
|
+-----+---------+
| |
+--+-+ +----+------+
| | | |
8 ++--+ 7 5
| |
9 3
Você deve usar os caracteres ascii, como mostrado. Os segmentos horizontais e verticais podem ter qualquer comprimento. Nenhuma parte do celular pode tocar (horizontal ou verticalmente) outra parte não conectada do celular. Todos os pesos devem ser pendurados em um segmento vertical de comprimento pelo menos 1 e deve haver um segmento vertical no qual todo o móvel está pendurado.
O tamanho de um celular é o número total de +
, -
e |
caracteres necessários para construí-lo. Tamanhos mais baixos são melhores.
Você pode colocar quantas conexões desejar em um segmento. Por exemplo:
entrada
2 3 3 5 3 9
saída possível
|
+---+---+-----------+
| | |
+--+-+ 5 9
| | |
2 | 3
|
+++
| |
3 3
O programa vencedor é aquele que pode gerar a menor média de tamanhos de celular para um conjunto de entradas de teste. O teste real é super secreto para impedir a codificação, mas será algo como isto:
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
deve ser a mesma nos dois lados do ponto de articulação.