Oh não, estou perdido no caminho de encontrar os grandes tesouros de Marakov! E tudo o que tenho são essas instruções inúteis que parecem S10R10D30
... Não faço ideia do que elas significam! Pode me ajudar?
Desafio
Dadas as direções consistindo em N E S W U D L R 1 2 3 4 5 6 7 8 9 0
, indica a que distância estarei de onde comecei quando sigo essas instruções (ou seja, Distância Euclidiana).
N E S W
refira-me a virar para o norte, leste, sul e oeste;
U D L R
refira-me a girar para cima, para baixo, para a esquerda e para a direita (assim NR
é o mesmo que E
e assim é SL
; SLL
é o mesmo que N
). Up significa seguir em frente; Para baixo significa virar.
Após cada direção da letra, haverá um número, que é o quão longe eu irei nessa direção. N10E20
significa ir para o norte 10 unidades, depois virar para o leste e ir para o leste 20 unidades.
Detalhes da entrada
- A entrada sempre começará com uma das
NESW
opções (portanto, as entradas em branco não precisam ser contabilizadas). - São permitidas instruções de duas letras seguidas.
NE
deve ser interpretado: "Vire para o norte e depois imediatamente para o leste". É o mesmo que apenasE
.SLL
é "Vire para o sul e, imediatamente, vire à esquerda duas vezes". É o mesmo queN
. - Todos os números serão inteiros (observe como
.
não está no conjunto de caracteres) - A entrada será composta apenas por
NESWUDLR1234567890
(se precisar de algo mais, como '\ 0' em C; ou se as funções de entrada do seu idioma tiverem uma nova linha à direita, ou algo assim, tudo bem.)
Resultado
- A norma.
- Se estiver usando uma função, deve gerar um tipo de dados numérico ou uma string.
- Deve ter precisão de 3 casas decimais.
Casos de teste
N10
:10
N10E10
:14.1421
N10S10
:0
NSEWUDLR10
:10
N100RR20E300D40L12
:268.7452
ERR10LL20UN30D100
:70.71067
O programa Python sem imaginação que eu costumava fazer isso.
Ganhando
Isso é codegolf, então os bytes mais baixos depois de uma semana vencem!
NESWUDLR1234567890
?