Introdução
Escreva um programa ou função que, dadas as coordenadas de onde um dardo pousa em um alvo, retorne a pontuação desse dardo. As coordenadas do dardo são dadas como dois números inteiros, x,y
medidos a partir do centro do alvo, com precisão milimétrica.
Como marcar um dardo
Dardos é um jogo jogado jogando um dardo em um tabuleiro circular. O jogo de dardos é dividido em 20 "cunhas" de tamanho igual. Começando do topo e indo no sentido horário, as seções têm valores de 20,1,18,4,13,6,10,15,2,17,3,19,7,16,8,11,14,9,12 5. Se o seu dardo cair nas partes preta ou branca de qualquer uma das cunhas, você marcará o valor indicado na parte externa dessa cunha.
.
No entanto, se o seu dardo cair no anel externo verde / vermelho do alvo, você pontuará o dobro dos pontos indicados na parte externa da cunha que acertou. Da mesma forma, ao tocar no anel verde / vermelho interno (aquele entre as duas seções branco / preto), você obtém o triplo do número indicado na parte externa da cunha. Se o seu dardo atinge o círculo mais interno (o olho de boi vermelho), você ganha 50 pontos e, finalmente, se o seu dardo atinge o segundo círculo mais interno (o anel verde ao redor do olho de boi), você ganha 25 pontos.
As dimensões dos anéis, medidas a partir do centro do alvo, são as seguintes:
Bullseye (50): [0mm-6mm)
25: [6mm-16mm)
Inner Single: [16mm-99mm)
Triple: [99mm-107mm)
Outer Single: [107mm-162mm)
Double: [162mm-170mm)
Miss (0): 170mm+
Nota 1: As imagens fornecidas são apenas para fins ilustrativos e não estão em escala.
Nota 2: As medidas fornecidas são aproximadas e podem não ser precisas para um alvo de dardos real.
Nota 3: Todas as medidas fornecidas são [inclusive-exclusive)
. Para os propósitos deste desafio, não vamos nos preocupar com dardos acertando o arame e quicando. Se o dardo cair "no fio" com uma das linhas radiais, cabe ao respondente decidir se quer quebrar o empate no sentido horário ou anti-horário. A direção de desempate deve ser consistente e indicada.
Nota 4: O alvo é pendurado da maneira padrão, com o meio da seção 20 diretamente acima do alvo e a seção 3 diretamente abaixo do alvo.
Entrada
Dois números inteiros representando as x,y
coordenadas de onde o dardo pousou, medido em milímetros, em relação ao centro do alvo.
Saída
Um único inteiro, para o número de pontos que seriam concedidos a um dardo que aterrissasse nas coordenadas fornecidas.
Amostra
0,0 -> 50
2,101 -> 60
-163,-1 -> 22
6,18 -> 1
-6,18 -> 5
45,-169 -> 0
22, 22 -> 4 (if tie-broken clock-wise)
18(if tie-broken counter-clockwise)
-150,0 -> 11
-150,-1 -> 11
Pontuação
código-golfe . O menor número de bytes no seu código-fonte vence.
-150,-1
e -150,0
que devem dar 11
e podem ser um caso de vantagem em algumas implementações, pois essa é a transição entre theta convergindo para -pi e theta = + pi nas coordenadas polares. (Minha resposta inicial falhou no 2º um.)