Zadania drugiego etapu III Warszawskiego Konkursu Informatycznego
rok szkolny 1996/97

Zadanie 1.

Te cztery rysunki wyglądają podobnie, ale różnią się stopniem złożoności. Napisz procedurę RYS :n z jednym parametrem, która dla danej wartości parametru :n - określającej stopień złożoności rysunku - równej: 1, 2, 3, 4, ... tworzy na środku ekranu możliwie duży rysunek, odpowiednio taki jak na rysunkach powyżej.

Zadanie 2.

Wynik serii rzutów monety można zapisać w postaci słowa utworzonego z małych liter alfabetu: o - orzeł oraz r - reszka. Np. zapisem serii pięciu rzutów: (orzeł, reszka, reszka, orzeł, reszka) jest pięcioliterowe słowo - orror.
Zdefiniuj funkcję MLKO :zsr, której wartością dla danego słowa będącego zapisem serii rzutów, jest maksymalna liczba kolejnych orłów w tej serii. Poniżej przedstawiamy przykładowe wyniki:

MLKO "rorrooooorrrroooorrr ma wartość 5
MLKO "rrrrr ma wartość 0
MLKO " ma wartość 0
MLKO "rorororo ma wartość 1

Możesz założyć, że dana wartość parametru funkcji będzie zawsze poprawnym zapisem serii rzutów monetą, tzn. słowem utworzonym z małych liter alfabetu o lub r. W innych przypadkach wartość Twojej funkcji może być dowolna.

Zadanie 3.

Przesunięciem cyklicznym w prawo - w skrócie PCP - nazywamy funkcję, której wartością jest dane (niepuste) słowo z przestawionym ostatnim znakiem na początek. Jeśli dane słowo jest puste, to wartość PCP jest nieokreślona. Oto przykłady wyników:

PCP "abcd ma wartość "dabc
PCP "a ma wartość "a

Przesunięciem cyklicznym w lewo - w skrócie PCL - nazywamy funkcję, której wartością jest dane (niepuste) słowo z przestawionym pierwszym znakiem na koniec. Jeśli dane słowo jest puste, to wartość PCL jest nieokreślona. Oto przykłady wyników:

PCL "abcd ma wartość "bcda
PCL "a ma wartość "a

Ustalamy następujący system kodowania niepustych słów - dla danego klucza k= ..., -2, -1, 0, 1, 2, 3, ... kodem danego słowa jest:

  • wynik k-krotnego przesunięcia danego słowa w lewo, jeśli k<0,
  • wynik k-krotnego przesunięcia danego słowa w prawo, jeśli k>0,
  • dane słowo, jeśli k=0.

Zdefiniuj funkcję z dwoma parametrami KOD :k :s, której wartością dla danego klucza :k jest kod danego słowa :s zgodny z ustalonymi wyżej regułami. Poniżej przedstawiamy przykładowe wyniki:

KOD 2 "abcde ma wartość "deabc
KOD -2 "abcde ma wartość "cdeab
KOD 0 "abcde ma wartość "abcde
KOD 7 "abcde ma wartość "deabc

Uwaga: Nie musisz definiować funkcji PCL i PCP, tylko funkcję KOD i ewentualnie jakie sam(a) zechcesz funkcje pomocnicze.