TL; DR: Biorąc pod uwagę tablicę znaków i robota w początkowej pozycji tablicy, napisz algorytm niż można odczytać ciąg znaków z ruchami (
Fdla „idź do przodu”,Rdla „obróć o 90 stopni w prawo” iLdla „obróć o 90 stopni left ”) i obliczyć pozycję końcową robota. Więcej szczegółów w pełnym tekście.
Mamy w domu bardzo proste programowalne urządzenie dla dzieci: mały pojazd z przyciskami do jazdy do przodu, skrętu o 90 stopni w lewo lub o 90 stopni w prawo. Coś podobnego do tego:
Mamy również piankową matę z takimi literami:
Wszystko to ma na celu nauczyć dzieci alfabetu i podstaw programowania jednocześnie.
Wyzwanie
Załóżmy, że losowo ułożyliśmy naszą matę piankową w następujący sposób:
+---+---+---+---+---+---+---+
| E | R | L | B | I | X | N |
+---+---+---+---+---+---+---+
| O | A | Q | Y | C | T | G |
+---+---+---+---+---+---+---+
| F | W | H | P | D | Z | S |
+---+---+---+---+---+---+---+
| K | V | U | M | J |
+---+---+---+---+---+
| |
+---+
Załóżmy również, że zmodyfikowaliśmy pojazd, aby podczas programowania polecenia „iść do przodu” pojazd poruszał się do przodu dokładnie o rozmiar jednego kwadratu na macie. Tak więc, jeśli pojazd znajduje się na Uplacu i jedzie na północ, zatrzymuje się dokładnie na Pplacu.
Wszystkie instrukcje są przekazywane pojazdowi, zanim zacznie się on poruszać, a są to:
F: Pojazd jedzie do następnego kwadratu.R: Pojazd obraca się o 90 stopni w prawo na swoim miejscu (bez dalszego ruchu).L: Pojazd obraca się o 90 stopni w lewo na swoim miejscu (bez dalszego ruchu).
Po wydaniu instrukcji można nacisnąć przycisk „GO” i wysłać pojazd na określoną pozycję, ponieważ będzie on postępować zgodnie z każdą instrukcją w podanej kolejności. Możesz więc powiedzieć dziecku, aby wstawiło potrzebne instrukcje dla pojazdu, aby przejść do danej litery.
Musisz napisać najkrótszy program / funkcję, która przetwarza string(parametr wejściowy) z zestawem instrukcji i oblicza literę zatrzymania pojazdu (wynik string).
Detale:
- Pojazd zawsze zaczyna się od pustego kwadratu na dole i jest skierowany na północ (w kierunku
Ukwadratu). - Ciąg wejściowy będzie zawierać tylko litery
F,R,LorazG(za pomocą przycisku „Go”). Możesz użyć małych liter dla maty i instrukcji, jeśli wolisz. - Algorytm musi być zgodny z każdą instrukcją w ciągu przed pierwszą
G(każda następna instrukcja jest ignorowana, gdy pojazd ruszy). - Jeśli pojazd wyjdzie z maty w danym momencie (nawet jeśli łańcuch wejściowy nie został całkowicie przetworzony), algorytm musi zwrócić łańcuch
Out of mat. - Jeśli nie, algorytm musi zwrócić literę, w której zatrzymał się pojazd. Punkt początkowy liczy się jako
znak (lub pusty ciąg).
Przykłady:
Input: FFG
Output: P
Input: FRFRFG
Output: Out of mat
Input: RRFFG
Output: Out of mat
Input: FFFRFFLFG
Output: X
Input: FFFRFFLF
Output: <-- Nothing or a whitespace (the robot has not started moving)
Input: FFFRRFFFG
Output: <-- Nothing or a whitespace (the robot has returned to the starting point)
Input: RRRRRLFFFLFFRFRFGFFRRGRFF
Output: L (Everything after the first G is ignored)
To jest golf golfowy , więc może wygrać najkrótszy program dla każdego języka!


@pozycją początkową i spacjami poza matą, więc ta konfiguracja byłabyERLBIXN\nOAQYCTG\nFWHPDZS\n KVUMJ \n @(przy różnych odstępach, SE pomieszała)