Отказ от ответственности: история, рассказанная в этом вопросе, является полностью вымышленной и придумана исключительно с целью ознакомления.
Мой босс получил нового игрушечного робота, и он хочет, чтобы я помог ему запрограммировать. Он хочет иметь возможность вводить простые инструкции стрелки, чтобы заставить его двигаться. Эти инструкции: ^ (для движения вперед) <(для поворота влево) и> (для поворота вправо). Однако теперь, когда я запрограммировал робота, ему нужны дополнительные функциональные возможности. Он хочет, чтобы я преобразовал любую последовательность стрелок, которые он вводит, так, чтобы вместо того, чтобы робот взял выбранный путь, он перемещался в желаемое место, обозначенное местом, в котором он оказался бы, если бы он взял введенный путь, так же эффективно, как возможный. Я призываю вас, членов PP & CG, помочь мне с этой задачей.
Твое задание:
Напишите программу или функцию для преобразования строки, составленной из стрелок, в строку, которая как можно быстрее попадет в местоположение, указанное входными данными. Поворот занимает ровно столько же времени, сколько движение вперед или назад.
Входные данные:
Строка стрелок, как указано выше. Если вы хотите, стрелки могут заменить другие символы, но не забудьте указать, что вы делаете это в своем ответе. Все тестовые случаи используют стрелки как обычно.
Выход:
Строка стрелок (или ваших эквивалентных символов), которые доставят робота к желаемому месту назначения максимально эффективно.
Тестовые случаи:
Обратите внимание, что предлагаемые решения являются только возможностями, и что другие решения могут быть действительными.
>^<<^^>^^ -> ^^<^
^^^^>^^^^ -> ^^^^>^^^^
>>>^^^^^^ -> <^^^^^^
>^>^>^>^ -> (empty string)
^<^^<^^<^^^^ -> >^^>^
Подсчет очков:
Память робота ограничена, поэтому ваша программа должна иметь минимально возможное количество байтов.
^<^^<^^<^^^^
-> >^^>^
?