Zadania drugiego etapu Konkursu Informatycznego dla gimnazjalistów LOGIA 13

Zadanie 1 (Mozaika).

Nowe budynki w Logianowie będą ozdobione mozaikami układanymi z kwadratowych kafelków w kolorach: czerwonym (c), zielonym (z), czarnym (x), białym (b) i fioletowym (f). Mozaiki są układane na podstawie kolorowych szablonów. Twórca szablonów jest miłośnikiem Juliusza Cezara i postanowił przy ich przygotowywaniu wykorzystać szyfr Cezara, polegający na cyklicznym zastępowaniu każdej kolejnej litery w alfabecie, literą występującą dalej o określoną liczbę pozycji, przy czym jeśli wykraczamy poza alfabet, to kolejne litery bierzemy z początku alfabetu.

Napisz procedurę MOZAIKA :kolory :klucz :wiersz, po wywołaniu której na środku ekranu powstanie rysunek mozaiki, o szerokości 600 lub wysokości 300, opisanej przez parametry:

  • słowo :kolory określa kolory (alfabet) używane w danym szablonie oraz ich kolejność, kolory nie powtarzają się,
  • liczba :klucz definiuje sposób zastępowania kolorów i może przyjmować wartości od 0 do 100,
  • niepuste słowo :wiersz, które opisuje dolny wiersz mozaiki i może zawierać jedynie kolory wymienione w parametrze :kolory.

Każdy kolejny wiersz powstaje przez zaszyfrowanie poprzedniego wiersza. Liczba wierszy jest o jeden większa od długości parametru :kolory. Na przykład dla alfabetu "xfzb i klucza 6, wiersz "xxxfffbbbxxx przechodzi w wiersz "zzzbbbfffzzz.

W tabelce poniżej umieszczono przykłady zastępowania kolorów.

:kolory:kluczprzed zastąpieniempo zastąpieniu
"xfzb6czarnyzielony
fioletowybiały
zielonyczarny
białyfioletowy
:kolory:kluczprzed zastąpieniempo zastąpieniu
"bzx1białyzielony
zielonyczarny
czarnybiały

Rysunki poniżej przedstawiają efekt wywołania MOZAIKA "xfzb 6 "xxxfffbbbxxx, MOZAIKA "bzx 1 "bzxzb

Zadanie 2 (Ślimak).

Napisz funkcję KIEDY :x :y :z, której wynikiem będzie liczba określająca, którego dnia ślimak znajdzie się na szczycie dziesięciometrowego słupa. Ślimak pierwszego dnia startuje u podstawy słupa. Każdego dnia wspina się o :x centymetrów. Każdej nocy osuwa się o :y centymetrów, chyba że natrafi na półkę - wtedy zatrzymuje się na niej. Półki znajdują się co :z centymetrów, licząc od podstawy słupa. Zakładamy, że :x jest większe od :y.

Wynikiem KIEDY 300 100 100 jest 4,
Wynikiem KIEDY 5 3 2 jest 250,

Zadanie 3 (Pascal).

Trójkąt Pascala to trójkątna tablica liczb, skonstruowana w następujący sposób: na dwóch bokach trójkąta znajdują się jedynki, liczby wewnątrz trójkąta są sumą dwóch najbliższych liczb położonych w wierszu powyżej.

Ola podaje Antkowi dwie liczby: numer wiersza oraz pozycję w obrębie wiersza. Zadaniem Antka jest podanie odpowiedniej liczby w trójkącie Pascala. Pomóż Antkowi i napisz funkcję PASCAL :w :p. Parametr :w określa numer wiersza i może przyjmować wartości od 1 do 2000. Parametr :p określa pozycję liczby w wierszu i może przyjmować wartości od 1 do 4, a także od :w-3 do :w, przy czym :w nie jest mniejsze od :p.

Wynikiem PASCAL 5 3 jest 6,
Wynikiem PASCAL 10 7 jest 84.