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 Rrefira-me a girar para cima, para baixo, para a esquerda e para a direita (assim NRé o mesmo que Ee 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. N10E20significa 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
NESWopções (portanto, as entradas em branco não precisam ser contabilizadas). - São permitidas instruções de duas letras seguidas.
NEdeve 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:10N10E10:14.1421N10S10:0NSEWUDLR10:10N100RR20E300D40L12:268.7452ERR10LL20UN30D100: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?