Сложность совместного использования пиццы с друзьями заключается в том, что трудно убедиться, что каждый получает одинаковое количество пепперони на свой ломтик. Итак, ваша задача - решить, как правильно нарезать пиццу, чтобы все остались довольны.
Направления
Напишите программу, которая, учитывая список положений пепперониса на круглой пицце и количества готовых ломтиков, выводит список углов, под которыми пицца должна быть нарезана, чтобы на каждом ломтике было одинаковое количество пепперони. Это.
- Пицца имеет только один топпинг: пепперони.
- Ваши друзья не заботятся о размере своего среза, просто они не обмануты из пепперони.
- Пицца представляет собой круг с центром в начале координат
(0, 0)
и радиусом1
. - Pepperonis - это круги, которые центрированы там, где на входе написано, что они центрированы и имеют радиус
0.1
- Возьмите входные данные как целое число, которое представляет количество срезов, которые должны быть сделаны, и список упорядоченных пар, которые представляют позиции пепперониса в декартовой системе координат. (В любом разумном формате)
- Выходными данными должен быть список углов, приведенных в радианах, который представляет положение «порезов» для пиццы (в диапазоне
0 <= a < 2pi
). (В любом разумном формате) (Точность должна быть как минимум+/- 1e-5
.) - Вы можете иметь частичные кусочки пепперони на ломтике (например, если пицца имеет одну пепперони на ней, и ее нужно разделить на 10 человек, нарежьте пиццу десять раз, все нарезки прорезают пепперони. Но убедитесь, что это справедливо !)
- Разрез может (возможно, придется) прорезать несколько пепперони.
- Pepperonis может перекрываться.
Примеры
Входные данные:
8 people, pepperonis: (0.4, 0.2), (-0.3, 0.1), (-0.022, -0.5), (0.3, -0.32)
Возможный действительный вывод:
slices at:
0, 0.46365, 0.68916, 2.81984, 3.14159, 4.66842, 4.86957, 5.46554
Вот визуализация этого примера (каждый получает половину пепперони):
Больше примеров:
Input: 9 people, 1 pepperoni at: (0.03, 0.01)
Output: 0, 0.4065, 0.8222, 1.29988, 1.94749, 3.03869, 4.42503, 5.28428, 5.83985
Input: 5, (0.4, 0.3), (0.45, 0.43), (-0.5, -0.04)
Output: 0, 0.64751, 0.73928, 0.84206, 3.18997
счет
Это код-гольф , поэтому выигрывает наименьшее количество байтов.