Ti vengono dati un sacco di pesi e il tuo compito è quello di costruire un piccolo cellulare bilanciato usando quei pesi.
L'input è un elenco di pesi interi compresi tra 1 e 9, inclusi. Potrebbero esserci dei duplicati.
L'output è un'immagine ascii di un cellulare che, una volta appeso, si bilancerebbe. Forse meglio mostrato dall'esempio:
ingresso
3 8 9 7 5
uscita possibile
|
+-----+---------+
| |
+--+-+ +----+------+
| | | |
8 ++--+ 7 5
| |
9 3
È necessario utilizzare i caratteri ASCII come mostrato. I segmenti orizzontali e verticali possono essere di qualsiasi lunghezza. Nessuna parte del cellulare può toccare (orizzontalmente o verticalmente) un'altra parte non connessa del cellulare. Tutti i pesi devono essere appesi a un segmento verticale di lunghezza almeno 1 e deve esserci un segmento verticale da cui è appeso l'intero cellulare.
La dimensione di un mobile è il numero totale di +, -e |caratteri necessari per costruirlo. Le taglie più basse sono migliori.
Puoi inserire su un segmento tutte le connessioni che desideri. Per esempio:
ingresso
2 3 3 5 3 9
uscita possibile
|
+---+---+-----------+
| | |
+--+-+ 5 9
| | |
2 | 3
|
+++
| |
3 3
Il programma vincente è quello che può generare la media più bassa di dimensioni mobili per un set di test di input. Il vero test è super-segreto per prevenire l'hard-coding, ma sarà qualcosa del genere:
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_pivotdeve essere la stessa su entrambi i lati del punto di articolazione.