Narysuj linie podążając za prostymi wskazówkami. Na wejściu otrzymujemy instrukcje rozdzielone znakiem spacji. Każda instrukcja składa się z litery (U, D, L lub R co oznacza kolejno w górę, w dół, w lewo, w prawo) oraz liczby.
Zadanie polega na narysowaniu linii podążając za wskazówkami. Rysowanie zaczyna się od lewego-górnego rogu. Nieodwiedzone pola należy przedstawić podkreślnikiem \'_\', a odwiedzone \'0\'. Pola mogą być odwiedzona dwukrotnie. Przykładowo dla:
wynikiem powinno być:
Tablica powinna być dynamiczna, aby uniknąć podwójnego przeglądania ciągu instrukcji. Potrzebujemy wyodrębnić instrukcje z pobranej wejściowej linijki tekstu, ponieważ nie mamy podane ile instrukcji łącznie będzie.
W celu optymalizacji wykorzystania pamięci program będzie automatycznie poszerzał tablicę jeśli zaistnieje taka potrzeba. Do tego będzie służyć funkcja poszerz(), która podaną tablicę tab i pozycji (ax, ay) upewni się, że tablica nie jest za mała.
Funkcja pomocnicza porownaj() będzie porównywać dwa znaki i zwracać 1 jeśli są identyczne i 0 jeśli nie. Będzie ona wykorzystywana do określania przesunięcia śladu.
W głównej funkcji następuje deklaracja zmiennych, których będziemy uzywać: tab - będzie przechowywać tablicę pól, które zostały (nie)odwiedzone, ax i ay - współrzędne aktualnego położenia rysowania, r - zmienna pomocnicza mówiąca ile pól należy przesunąć w daną stronę, f - zmienna przechowująca kierunek określony w instrukcji oraz lista, która przechowuje instrukcje zawarte w wprowadzonej linijce tekstu.
Druga część wczytuje dane i rozdziela tak, aby każda komenda była dostępna na liście jako oddzielny element.
Część trzecia to pętla wywoływana dla każdego elementu z listy. Najpierw rozbija instrukcje na zmienne i zapisuje do f określony kierunek i do r ilość kroków. Następnie póki kroki się nie skończą zmieniane są wartości współrzędnych ax i ay. Przed przypisywaniem w danym polu wartości odwiedzenia wywołujemy funkcję rozszerz(), aby uniknąć problemów z wyjściem poza zakres tablicy.
Czwarta część jest to wypisywanie wyniku. To właśnie tu określamy jak dana wartość pola ma być interpretowana.
Kończymy pracę programu wpierw zatrzymując wykonywanie programu, aby użytkownik mógł przeczytać wyjście, a po naciśnięciu dowolnego przycisku program jest zamykany.