Logia03 – rok szkolny 2002/2003 – etap - III
Zad. 1. Zdefiniuj polecenie RYSDR :dr, którego skutkiem będzie utworzenie na środku ekranu możliwie dużego rysunku danej drogi, na tle jej zakresu z zaznaczonym za pomocą słowa start punktem początkowym.
Zad. 2. Zdefiniuj funkcję DŁMP :kd (długość maksymalnego łańcucha pionków), która mając dany kod dziesiętny układu pionków daje w wyniku długość maksymalnego łańcucha pionków, tzn. nieprzerwanej sekwencji pionków, w tym układzie.
Oto przykładowe wyniki:
- DŁMP 31 - powinno dać wynik 5,
- DŁMP 128239 - powinno dać wynik 5,
- DŁMP 219 powinno dać wynik 2.
Zad. 3. Wolno nam dostawić 1 pionek w dowolnym pustym polu na taśmie. Musimy go wstawić tak, aby utworzyć możliwie najdłuższy łańcuch pionków. Zdefiniuj funkcję PLOMBA :kd, która daje w wyniku kod nowego ustawienia, jakie można utworzyć z danego ustawienia przez dodanie 1 pionka, w taki sposób, aby otrzymać maksymalnie długi łańcuch pionków.
W przypadku jeśli takie nowe ustawienie o maksymalnym łańcuchu pionków można otrzymać na wiele sposobów, wynikiem funkcji powinien być kod ustawienia, reprezentowanego przez najmniejszą liczbę.
Oto przykładowe wyniki:
- PLOMBA 31 - powinno dać wynik 63,
- PLOMBA 128239 - powinno dać wynik 128255,
- PLOMBA 219 - powinno dać wynik 223.
Zad. 4. Układ pionków na taśmie można też zakodować w postaci listy liczb całkowitych. Możemy przyjąć, że każdy łańcuch pionków na taśmie będzie reprezentowany przez jego długość, a każda sekwencja pustych pól przez liczbę przeciwną do jej długości. W tym systemie kodem układu 11101001111 będzie lista [3 -1 1 -2 4].
Zdefiniuj funkcję KL :kd która dla danego kodu dziesiętnego układu daje w wyniku jego kod listowy.
- KL 31 - powinno dać wynik [5],
- KL 128239 - powinno dać wynik [5 -1 1 -2 3 -1 4],
- KL 219 - powinno dać wynik [2 -1 2 -1 2].