Zadanie 3. Robot przenoszący krążki

Inżynier Nowak jest członkiem zespołu odpowiedzialnego za zaprojektowanie i konstrukcję robota przenoszącego krążki między palami, w celu prezentacji problemu Wież Hanoi. Robot ma przenosić wybraną liczbę krążków ze słupka początkowego, na słupek końcowy z wykorzystaniem słupka pomocniczego.

Zespół konstruujący robota dysponuje pewną liczbą krążków i słupkami oznaczonymi literami A, B i C. W celu urozmaicenia planowanej prezentacji zespół postanowił, że robot powinien poradzić sobie z różną liczbą krążków i różnym przypisaniem ról słupkom (dowolny słupek może być słupkiem początkowym, końcowym i pomocniczym, ale może na raz pełnić tylko jedną rolę).

Inżynier Nowak, po spotkaniu z zespołem, wypisał planowane prezentacje w postaci listy. Dane te są zapisane w pliku dane.txt. W pliku znajduje się 10 wierszy, w których znajdują się kolejno: liczba krążków, słupek początkowy, słupek końcowy i słupek pomocniczy. Każdy wiersz zapisany jest w nowej linii, a poszczególne informacje oddzielone są od siebie pojedynczym znakiem odstępu.

R1UIHYkO0mQ1j

Przycisk do pobrania pliku TXT z treścią zadania.

Plik TXT o rozmiarze 91.00 B w języku polskim

Napisz program, który wypisze sekwencje ruchów, jakie będzie musiał wykonać robot dla podanych ustawień, by poprawnie przenieść wszystkie krążki ze słupka początkowego na słupek końcowy

Przykładowe dane:

Linia 1. 1 C B A. Linia 2. 2 A C B.

Wyniki uzyskane dla przykładowych danych:

Linia 1. C minus zamknij nawias ostrokątny B. Linia 2. A minus zamknij nawias ostrokątny B A minus zamknij nawias ostrokątny C B minus zamknij nawias ostrokątny C.

Uzyskane sekwencje zapisz w pliku wyniki.txt. Każda sekwencja powinna być zapisana w nowej linii. Sekwencje powinny być zapisane w takiej kolejności, w jakiej zapisane są dane wejściowe użyte do ich wygenerowania. Poszczególne kroki w sekwencji oddzielone są od siebie pojedynczym znakiem odstępu.

Ważne!

Pojedynczy ruch zapisz za pomocą znaku -> i symboli słupków. Np. A -> B oznacza przeniesienie krążka ze słupka A na słupek B.

Do oceny oddajesz:

  • plik wyniki.txt zawierający odpowiedź (wygenerowane sekwencje w kolejności takiej, w jakiej zapisane były w pliku z danymi wejściowymi, dane do ich wygenerowania),

  • plik(i) z komputerową realizacją zadania (kodem programu).

Praca domowa

Napisz implementację zadania lokalnie na swoim komputerze, w wybranym języku: C++, Java, Python. Zadbaj o prawidłowe wczytanie danych z pliku tekstowego do swojego programu. Odpowiedź do zadania dla danych z pliku znajdziesz na samym końcu zadania.

Napisz program, który wypisze listę kroków potrzebnych do rozwiązania problemu dla podanej liczby krążków przy przenoszeniu krążków ze słupka początkowego na słupek końcowy dla podanych dwóch przykładowych ustawień.

Liczba krążków, słupek początkowy, słupek końcowy i słupek pomocniczy dla danych ustawień podane są w odpowiednio nazwanych tablicach.

Jako znak przesunięcia krążka z jednego słupka na drugi użyj symbolu: ->

Zakończ listę kroków pojedynczym znakiem średnika.

Wynikowa sekwencja dla każdego ustawienia powinna być wyświetlana w nowej linii.

11
Pokaż ćwiczenia:
21
Ćwiczenie 1
R16FVtB1Uivk41
Wymyśl pytanie na kartkówkę związane z tematem materiału.
21
Ćwiczenie 2
RWxVJvJJNH1hs1
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.
21
Ćwiczenie 3
RY06vDoTDwbCQ1
Wymyśl pytanie na kartkówkę związane z tematem materiału.

Odpowiedź dla danych z pliku dane.txt:

R1KplUNazBuTP

Przycisk do pobrania pliku TXT z wynikiem zadania.

Plik TXT o rozmiarze 24.79 KB w języku polskim