Isenção de responsabilidade: a história contada nesta pergunta é inteiramente fictícia e inventada apenas com o objetivo de fornecer uma introdução.
Meu chefe comprou um novo robô de brinquedo e quer que eu ajude a programá-lo. Ele deseja inserir instruções simples de flecha para que ela se mova. Estas instruções são: ^ (para avançar) <(para virar à esquerda) e> (para virar à direita). No entanto, agora que programei o robô, ele deseja funcionalidades adicionais. Ele quer que eu transforme qualquer sequência de setas que ele insere, para que, em vez de fazer com que o robô siga o caminho indicado, ele se mova para o local desejado, indicado pelo local em que terminaria se seguisse o caminho inserido com a mesma eficiência. possível. Peço a vocês, membros do PP&CG, que me ajudem nessa tarefa.
Sua tarefa:
Escreva um programa ou função para converter uma sequência composta por setas em uma sequência que chegue ao local indicado pela entrada o mais rápido possível. Virar leva exatamente o tempo que se move para trás ou para frente.
Entrada:
Uma sequência de setas, como indicado acima. Se desejar, caracteres diferentes podem ser substituídos pelas setas, mas certifique-se de incluir o fato de fazê-lo em sua resposta. Todos os casos de teste usam as setas normalmente.
Saída:
Uma sequência de setas (ou caracteres equivalentes) que levam o robô ao destino desejado da maneira mais eficiente possível.
Casos de teste:
Observe que as soluções oferecidas são apenas possibilidades e que outras soluções podem ser válidas.
>^<<^^>^^ -> ^^<^
^^^^>^^^^ -> ^^^^>^^^^
>>>^^^^^^ -> <^^^^^^
>^>^>^>^ -> (empty string)
^<^^<^^<^^^^ -> >^^>^
Pontuação:
A memória do robô é limitada, portanto, seu programa deve ter a menor contagem de bytes possível.
^<^^<^^<^^^^
-> >^^>^
?