Вы пытаетесь поместить сферу в 5-стороннюю коробку, но иногда она не помещается полностью. Напишите функцию, чтобы вычислить, сколько сферы находится за пределами (выше края) коробки.
Есть 3 возможных ситуации:
- Сфера полностью помещается в коробку. Ответ будет 0.
- Сфера сидит на краю коробки. Ответ будет более половины от общего объема.
- Сфера сидит на дне коробки.
Вы можете увидеть каждую ситуацию здесь:
Вы должны написать программу или функцию, чтобы вычислить это значение как минимум до 4 значащих цифр.
Ввод: 4 неотрицательных действительных числа в любом удобном для вас формате * - ширина, длина, глубина рамки (внутренние измерения) и диаметр сферы.
Вывод: 1 неотрицательное действительное число в удобном для использования формате * - общий объем (не в процентах) сферы за пределами рамки.
* должен быть преобразован в / из десятичной строки
Вам рекомендуется максимально ограничить использование тригонометрии.
Это конкурс популярности, так что думайте нестандартно!
источник
Ответы:
вперед
Пожалуйста, найдите ниже сферу за пределами коробки.
«Сфера» - это функция вычисления объема
f
. Контрольные примеры составляют «коробку».Выход:
источник
Java - целочисленный
Эта программа не использует pi и не вызывает никаких внешних функций - даже sqrt. Она использует только простые арифметические действия -
+
,-
,*
и/
. Кроме того, кроме шага масштабирования, он работает исключительно с целыми числами. Он в основном делит сферу на маленькие кубики и считает те, которые находятся за пределами коробки.Выход:
В этом виде программа требует более 2 ГБ памяти (работает
-Xmx2300m
здесь) и работает довольно медленно. Он использует память, чтобы предварительно рассчитать кучу квадратных корней (арифметически); это на самом деле не нужно, но без этого это будет намного медленнее. Чтобы улучшить как потребности в памяти, так и скорость, уменьшите значениеMIN
константы (однако это снизит точность).источник
Python 2 (подход на основе массива)
Он создает массив массивов со значениями истинности, если конкретный квадрат в этой сетке находится внутри круга или вне круга. Чем точнее будет нарисованный круг, тем точнее. Затем он выбирает область ниже или выше определенной строки и подсчитывает количество квадратов, принадлежащих кругу, и делит это на количество квадратов во всем круге.
источник
Python 2.7, формула сферического колпачка
Эта версия в некоторых случаях выдаст предупреждение о времени выполнения, но все равно выдаст правильный ответ.
Еще на 11 символов я могу избавиться от предупреждения.
Вот тестовые примеры, запущенные в версии 1:
источник
import numpy as n
доfrom numpy import*
и забрать все изn.
вашего кода.Mathematica
Использование численного интегрирования с надлежащими ограничениями.
источник
Ссылочная реализация - C #
Выход:
источник
Рубин
Посмотрим ...
Если коробка полностью внутри, то ширина> диаметр; длина> диаметр и высота> диаметр.
Это должна быть первая проверка для запуска.
Если он сидит внизу, то w> d; l> d и h
V=(pi*h^2 /3)*(3r-h)
Так что в этом случае, мы просто получим высоту и проведем ее через это.Если он застрял, мы используем аналогичную формулу (
V=(pi*h/6)*(3a^2 + h^2)
). На самом деле наша ранняя формула основана на этом! По сути, мы используем это, и a просто меньше, чем w и l. (подсказка, мы можем получить высоту, делаяh=r-a
)Теперь код!
Примечание ** Я не слишком тестировал его, поэтому, возможно, закралась ошибка, если кто-то ее заметит, скажите!
Математика твердая, хотя.
Укороченная версия:
(Теперь я точно знаю, что получение h для v2 происходит иначе, но я исправлю это позже.
источник
h=r-a
», я только что прочитал формулы сферического колпачка , и диаграмма не предлагает такие простые отношения. Я прочту еще раз.a = wi > le ? le : wi
должен работать. В противном случае у вас есть ошибка.a = wi>le?le:wi
не работал. Я предполагаю, что это из-за того, что я использую git ruby (разработчик 2.2), возможно, это говорит о дисбалансе.C ++
Мой код находит объем тела поворота графика некоторой части полукруга.
pdbd
удерживает линейное расстояние проекции точки на поверхности сферы, которая касается кромки прямоугольника, до диаметра сферы, который, если его расширить, будет нормальным к нижней части прямоугольника. Два выражения , которые содержатM_PI
в основном анти-производная интегралаpi * -(x^2)+2rx
по й (где х является мерой длины вдоль упомянутого выше диаметра через сферу и где г-радиус сферы) оценивал на любомpdbd
или разница диаметра сферы и глубины коробки в зависимости от конкретного случая, который происходит с различными размерами.источник