Encontrando o Ângulo Interno
Este desafio trata de polígonos não convexos, como os dois polígonos representados abaixo.

Uma propriedade especial dos polígonos não convexos é que, para alguns de seus vértices, o ângulo ao redor desse vértice que está contido dentro do polígono é um ângulo reflexo, ou seja, um ângulo maior que 180 graus. Por esse motivo:
- No polígono à esquerda, dizemos que
(1, 1), (3, 1)são vértices reflexos (pois o ângulo dentro do polígono é um ângulo reflexo), enquanto(0, 0), (4, 0), (2, 5)são vértices regulares. - No polígono à direita, dizemos que
(1, 1)é um vértice reflexo, enquanto todos os outros vértices são vértices regulares.
Escreva uma função que receba:
- Um polígono descrito como uma lista de vértices, em que cada vértice se conecta ao próximo e o último se conecta ao primeiro (por exemplo, os polígonos acima são descritos por
[(0, 0), (4, 0), (3, 1), (2, 5), (1, 1)]e[(0, 0), (4, 0), (3, 1), (1, 1), (2, 5)]) e ... - Um dos vértices do polígono.
Determina se o vértice fornecido é um vértice "regular" ou um vértice "reflex".
Exemplos (usando os polígonos representados acima)
which_side([(0, 0), (4, 0), (3, 1), (2, 5), (1, 1)], (3, 1)) ➞ "reflex"
which_side([(0, 0), (4, 0), (3, 1), (2, 5), (1, 1)], (0, 0)) ➞ "regular"
which_side([(0, 0), (4, 0), (3, 1), (1, 1), (2, 5)], (3, 1)) ➞ "regular"
which_side([(0, 0), (4, 0), (3, 1), (1, 1), (2, 5)], (1, 1)) ➞ "reflex"Observações
- A ordem dos vértices é importante ao especificar o polígono e, portanto, afeta se cada vértice é reflexo ou não (por exemplo, os dois polígonos acima têm exatamente os mesmos vértices, mas
(3,1)é reflexo no polígono à esquerda e regular no polígono à direita). - Em ambos os exemplos acima, os vértices dos polígonos estão listados em ordem anti-horária, mas os testes incluirão casos em ordem horária e anti-horária.