A dificuldade em compartilhar pizza com os amigos é que é difícil garantir que todos recebam a mesma quantidade de pepperoni na fatia. Portanto, sua tarefa é decidir como fatiar uma pizza de maneira justa para que todos fiquem felizes.
instruções
Escreva um programa que, dada uma lista das posições dos pepperonis em uma pizza circular e o número de fatias a serem produzidas, produza uma lista dos ângulos em que a pizza deve ser cortada para que cada fatia tenha a mesma quantidade de pepperoni isto.
- A pizza tem apenas uma cobertura: calabresa.
- Seus amigos não se importam com o tamanho de sua fatia, apenas porque eles não são enganados por nenhum pepperoni.
- A pizza é um círculo centrado na origem
(0, 0)
e com um raio de1
. - Os pepperonis são círculos centralizados onde quer que a entrada diga que estão centralizados e têm um raio de
0.1
- Tome a entrada como um número inteiro que representa o número de fatias a serem feitas e uma lista de pares ordenados que representam as posições dos pepperonis em um sistema de coordenadas cartesianas. (Em qualquer formato razoável)
- A saída deve ser uma lista de ângulos dados em radianos que representam as posições dos "cortes" na pizza (no intervalo
0 <= a < 2pi
). (Em qualquer formato razoável) (a precisão deve ser no mínimo+/- 1e-5
.) - Você pode colocar pedaços parciais de calabresa em uma fatia (por exemplo, se uma pizza tem uma calabresa e ela precisa ser compartilhada por 10 pessoas, corte a pizza dez vezes, todos os cortes cortando a calabresa. !)
- Um corte pode (pode ser necessário) cortar vários pepperonis.
- Pepperonis pode se sobrepor.
Exemplos
Entrada:
8 people, pepperonis: (0.4, 0.2), (-0.3, 0.1), (-0.022, -0.5), (0.3, -0.32)
Possível saída válida:
slices at:
0, 0.46365, 0.68916, 2.81984, 3.14159, 4.66842, 4.86957, 5.46554
Aqui está uma visualização deste exemplo (todos recebem meia calabresa):
Mais exemplos:
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
Pontuação
Isso é código-golfe , portanto, o menor número de bytes vence.