Dada uma sequência que representa uma série de sinais manuais da aeronave , escreva uma função ou programa para calcular a posição final de uma aeronave seguindo esses sinais.
NB: A co-ordenadas em este desafio são representados como um par de coordenadas cartesianas, além de uma posição compasso: (x, y, h)onde xé a coordenada x, yé a coordenada y, e hé um de N, E, S, ou W.
Você começa com uma aeronave (0, 0, N)em uma grade imaginária, com os motores desligados. Sua entrada é uma sequência que contém pares de caracteres delimitados por vírgula, em que cada par representa um sinal de empacotamento. Você deve seguir cada sinal de empacotamento, por sua vez, e emitir as coordenadas na (x, y, h)forma da posição final da aeronave.
Se um sinal exigir que sua aeronave se mova, assuma que ele move uma unidade na direção requerida para cada sinal daquele tipo que recebe. Se um sinal exigir que sua aeronave gire, assuma que ele gire 90 graus na direção necessária para cada sinal daquele tipo que ele receber.
Uma aeronave não pode se mover se seus motores estiverem desligados. Se os motores da sua aeronave estiverem desligados e você receber um sinal de movimento / virada, não aplique o movimento / virada.
Signals
Cada sinal de empacotamento é representado por um par de caracteres. O primeiro do par representa a posição do braço esquerdo do oficial de justiça, do ponto de vista da aeronave , e o segundo o braço direito do mesmo ponto de vista . Este gráfico acessível de sinais pode ajudar.
o/ — START ENGINES (no movement, no turn)
-/ — CUT ENGINES (no movement, no turn)
-~ — TURN LEFT (no movement, left turn)
~- — TURN RIGHT (no movement, right turn)
~~ — COME FORWARD (forward movement, no turn)
:: — MOVE BACK (backward movement, no turn)
/\ — NORMAL STOP (no movement, no turn)
Esta não é a lista completa de sinais de organização, mas é tudo que você precisa para apoiar.
Entrada
Entrada é uma sequência delimitada por vírgula contendo pares de caracteres. Essa cadeia sempre será válida - você não precisa validar a entrada.
Resultado
Saída é um conjunto de coordenadas como descrito acima. Você pode retornar isso em qualquer formato conveniente - se o seu idioma suportar vários valores de retorno, você poderá usá-lo; Como alternativa, você pode usar uma string (os colchetes ao redor das coordenadas não são obrigatórios), matriz, tupla, lista ou qualquer outra coisa que achar conveniente. A única regra é que ele deve conter x, ye hvalores, nessa ordem.
Casos de teste
Input — Output
o/,~~,~~,~-,:: — (-1, 2, E)
::,~-,o/,/\,~~,-~,~~,~~,~~ — (-3, 1, W)
o/,::,-/,~~,o/,~-,~~,~~,~- — (2, -1, S)
o/,~-,~-,::,::,~-,~~,-~ — (-1, 2, S)
~-,~-,o/,::,::,-/,~~,-~ — (0, -2, N)