Вам дана купа ваг, і ваше завдання - створити невеликий збалансований мобільний за допомогою цих ваг.
Вихідні дані - це перелік цілих ваг у діапазоні від 1 до 9 включно. Можуть бути дублікати.
Вихід - це зображення ascii мобільного, який, коли його повісять, буде врівноважувати. Мабуть, найкраще показано на прикладі:
вхід
3 8 9 7 5
можливий вихід
|
+-----+---------+
| |
+--+-+ +----+------+
| | | |
8 ++--+ 7 5
| |
9 3
Ви повинні використовувати символи ascii, як показано. Горизонтальний і вертикальний сегменти можуть бути будь-якої довжини. Жодна частина мобільного телефону не може торкатися (горизонтально або вертикально) іншої непоєднаної частини мобільного телефону. Всі ваги повинні бути вивішені з вертикального відрізка довжиною не менше 1, і повинен бути вертикальний відрізок, з якого висить весь мобільний.
Розмір мобільного телефону є загальною кількістю +
, -
і |
символами , необхідним для створення його. Нижчі розміри краще.
Ви можете розмістити стільки з’єднань на сегменті, скільки хочете. Наприклад:
вхід
2 3 3 5 3 9
можливий вихід
|
+---+---+-----------+
| | |
+--+-+ 5 9
| | |
2 | 3
|
+++
| |
3 3
Виграюча програма - це та, яка може генерувати найменший середній розмір мобільних пристроїв для тестового набору входів. Справжній тест є надсекретним для запобігання жорсткого кодування, але він буде приблизно таким:
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
повинна бути однаковою з обох сторін точки зрізу.