Вам будет предоставлен список радиусов, вы должны вывести область наименьшего прямоугольника, в которую они все поместятся.
Например, учитывая список, который [5,3,1.5]
вы бы вывели 157.460
.
Это изображение:
Ширина 15.7460, а высота 10, поэтому площадь 157.460.
Правила:
Вы получаете список через стандартный ввод или аргумент функции, выводите ответ через стандартный вывод или функцию возврата.
Радиусы будут иметь не более 2 знаков после запятой.
Список будет иметь длину от 2 до 6.
Вывод должен быть точным с точностью до 3 знаков после запятой.
Если вам нужно, я = 3.1416.
Тестовые случаи:
[5,3,1.5] = 157.460
[9,4,8,2] = 733.431
- работаю здесь .[18,3,1] = 1296.000
Самый короткий код в байтах побеждает.
Ответы:
Python 2 + PySCIPOpt , 267 байт
Как это работает
Запишем задачу следующим образом: минимизировать c над переменными a , b , c , x 1 , y 1 ,…, x n , y n , где
Очевидно, что мы используем внешнюю библиотеку оптимизации для этих ограничений, но вы не можете просто передать их любому старому оптимизатору - даже Mathematica
NMinimize
застревает в локальных минимумах для этих крошечных тестовых случаев. Если вы внимательно посмотрите на ограничения, вы увидите, что они представляют собой квадратично ограниченную квадратичную программу , и найти глобальный оптимум для невыпуклого QCQP сложно с точки зрения NP. Поэтому нам нужна невероятно мощная магия. Я выбрал промышленный анализатор SCIP , который является единственным глобальным решателем QCQP, который я смог найти с такой бесплатной лицензией для академического использования. К счастью, у него есть очень хорошие привязки Python.Вход и выход
Передайте список радиусов в stdin, как
[5,3,1.5]
. Вывод показываетobjective value:
прямоугольник область,x1
,x2
прямоугольник, размерыx3
прямоугольника площадь снова,x4
,x5
первый круг Координаты центра,x6
,x7
вторые координаты центра окружности и т.д.Контрольные примеры
[5,3,1.5]
↦157.459666673757
[9,4,8,2]
↦709.061485909243
Это лучше, чем решение ОП. Точные размеры 18 на 29 + 6√3.
[18,3,1]
↦1295.999999999
Бонусные случаи
[1,2,3,4,5]
↦230.244214912998
[3,4,5,6,7]
↦553.918025310597
[3,4,5,6,7,8]
↦777.87455544487
источник