Uwaga: Historia opowiedziana w tym pytaniu jest całkowicie fikcyjna i wymyślona wyłącznie w celu wprowadzenia wstępu.
Mój szef ma nowego robota-zabawkę i chce, żebym pomógł go zaprogramować. Chce mieć możliwość wprowadzania prostych instrukcji strzałek, aby mógł się poruszać. Te instrukcje to: ^ (dla ruchu do przodu) <(dla skrętu w lewo) i> (dla skrętu w prawo). Jednak teraz, gdy zaprogramowałem robota, chce on dodatkowej funkcjonalności. Chce, żebym przekształcił dowolną sekwencję wprowadzanych przez siebie strzał, aby zamiast zmuszać robota do podążenia wskazaną ścieżką, przesuwa się on w pożądane miejsce, wskazane przez miejsce, w którym znalazłby się, gdyby wybrał wprowadzoną ścieżkę, równie skutecznie jak możliwy. Apeluję do was, członków PP&CG, o pomoc w tym zadaniu.
Twoje zadanie:
Napisz program lub funkcję, aby przekonwertować ciąg złożony ze strzałek na ciąg, który dotrze do miejsca wskazanego przez dane wejściowe tak szybko, jak to możliwe. Obracanie zajmuje tyle samo czasu, co cofanie lub przewijanie do przodu.
Wkład:
Ciąg strzałek, jak wskazano powyżej. Jeśli chcesz, różne postacie mogą być zastąpione strzałkami, ale pamiętaj, aby uwzględnić to w swojej odpowiedzi. Wszystkie przypadki testowe używają strzałek normalnie.
Wydajność:
Ciąg strzałek (lub ich odpowiedników), które prowadzą robota do wybranego miejsca docelowego tak skutecznie, jak to możliwe.
Przypadki testowe:
Pamiętaj, że oferowane rozwiązania są tylko możliwościami i że inne rozwiązania mogą być ważne.
>^<<^^>^^ -> ^^<^
^^^^>^^^^ -> ^^^^>^^^^
>>>^^^^^^ -> <^^^^^^
>^>^>^>^ -> (empty string)
^<^^<^^<^^^^ -> >^^>^
Punktacja:
Pamięć robota jest ograniczona, więc twój program musi mieć możliwie najmniejszą liczbę bajtów.
^<^^<^^<^^^^
-> >^^>^
?