Eu vim com esse desafio de forma independente, mas acaba sendo o inverso a esse desafio da Maçaneta da porta . Como eu realmente gosto das especificações dele, decidi roubá-las em vez de inventar minhas próprias explicações.
O desafio
Dada a abreviação de um dos 32 pontos na bússola, imprima os graus correspondentes. Sinta-se à vontade para pular a tabela abaixo se não estiver interessado em obter uma explicação dos 32 pontos.
Aqui está a bússola completa:
Por Denelson83 (Trabalho próprio) [ GFDL ou CC-BY-SA-3.0 ], via Wikimedia Commons
Cada direção tem 11,25 (360/32) graus a mais que a anterior. Por exemplo, N (norte) é 0 graus, NbE (norte a leste) é 11,25 graus, NNE (norte-nordeste) é 22,5 graus, etc.
Em detalhes, os nomes são atribuídos da seguinte forma:
- 0 graus é N, 90 graus é E, 180 graus é S e 270 graus é W. Essas são chamadas direções cardinais.
- Os pontos intermediários entre as direções cardeais são simplesmente as direções cardinais entre as concatenadas. N ou S sempre vão primeiro e W ou E sempre são os segundos. Essas são chamadas direções ordinais. As direções ordinal e cardinal juntas formam os ventos principais.
- Os pontos intermediários entre os ventos principais são as direções entre as quais são concatenadas. As direções cardeais vão primeiro, segundo ordinal. Estes são chamados de meio vento.
- Os pontos intermediários entre o vento principal e o meio vento são o vento principal adjacente "por" a direção cardinal mais próxima do vento principal. Isso é indicado com a
b
. Estes são chamados quartos de vento.
Isso resulta no seguinte gráfico:
# Degrees Abbrv. Name
1 0 N North
2 11.25 NbE North by east
3 22.5 NNE North-northeast
4 33.75 NEbN Northeast by north
5 45 NE Northeast
6 56.25 NEbE Northeast by east
7 67.5 ENE East-northeast
8 78.75 EbN East by north
9 90 E East
10 101.25 EbS East by south
11 112.5 ESE East-southeast
12 123.75 SEbE Southeast by east
13 135 SE Southeast
14 146.25 SEbS Southeast by south
15 157.5 SSE South-southeast
16 168.75 SbE South by east
17 180 S South
18 191.25 SbW South by west
19 202.5 SSW South-southwest
20 213.75 SWbS Southwest by south
21 225 SW Southwest
22 236.25 SWbW Southwest by west
23 247.5 WSW West-southwest
24 258.75 WbS West by south
25 270 W West
26 281.25 WbN West by north
27 292.5 WNW West-northwest
28 303.75 NWbW Northwest by west
29 315 NW Northwest
30 326.25 NWbN Northwest by north
31 337.5 NNW North-northwest
32 348.75 NbW North by west
Aqui está um gráfico mais detalhado e, possivelmente, uma melhor explicação dos pontos da bússola.
Sua tarefa é tomar como entrada uma das 32 abreviações da terceira coluna e gerar os graus correspondentes na segunda coluna.
Você pode presumir que a entrada sempre será exatamente uma dessas 32 strings (e, opcionalmente, mas de maneira consistente, poderá esperar uma única nova linha à direita). A saída também deve ser fornecida exatamente como listado acima, embora os zeros à direita sejam permitidos. Opcionalmente, você pode gerar uma única nova linha à direita.
Você pode escrever um programa ou função, recebendo entrada via STDIN (ou alternativa mais próxima), argumento da linha de comando ou argumento da função e emitindo o resultado via STDOUT (ou alternativa mais próxima), valor de retorno da função ou parâmetro da função (saída).
Isso é código de golfe, então a resposta mais curta (em bytes) vence.