Zadania drugiego etapu Konkursu Informatycznego dla gimnazjalistów LOGIA 06

Zadanie 1.

Zdefiniuj procedurę SIATKA :wzorzec, której daną może być dowolne słowo złożone z cyfr 1, 2, 3 oraz 4. Procedura tworzy rysunek prostokątnej siatki o danym wzorcu, zgodnie z następującymi zasadami:

  • cały rysunek otacza ramka o grubości jednego piksela,
  • wysokość ramki jest równa czterem jednostkom, szerokość zależy od liczby cyfr w anej :wzorzec,
  • każda cyfra wzorca określa liczbę zamalowanych kwadratów ustawionych w losowy sposób w odpowiedniej kolumnie siatki, cyfra 1 oznacza jeden zamalowany kwadrat, cyfra 4 - całą zamalowaną kolumnę.

Zwróć uwagę, że jednemu wzorcowi może odpowiadać wiele siatek. Rysunek powinien mieścić się na ekranie i wykorzystywać co najmniej pół szerokości bądź wysokości ekranu. Dana :wzorzec może składać się maksymalnie ze stu cyfr.

Poniższe rysunki przedstawiają przykładowe efekty wywołania SIATKA "1121324112, SIATKA "1 oraz SIATKA "1.

Zadanie 2.

Poniższe rysunki przedstawiają graficzną ilustrację kolejnych liczb trójkątnych. Zastanów się, dlaczego liczby 1, 3, 6, 10, 15, ..., nazywane są liczbami trójkątnymi.

Zdefiniuj procedurę MAXTR :x, której daną może być liczba całkowita dodatnia nie większa od 400. Procedura przedstawia w postaci graficznej, za pomocą sześciokątnych elementów, największą liczbę trójkątną nieprzekraczającą wartości danej :x. Odległości pomiędzy środkami sześciokątów są równe potrójnej długości boku sześciokąta. Rysunek powinien mieścić się na ekranie i jego wysokość nie może być mniejsza niż połowa wysokości ekranu.

Poniżej efekty wywołania MAXTR 45 oraz MAXTR 8.

Zadanie 3.

Zdefiniuj funkcję SZYFR :słowo :klucz, której danymi są :słowo - słowo do zaszyfrowania o parzystej długości składające się z małych liter alfabetu łacińskiego (bez polskich znaków diakrytycznych) oraz :klucz - liczba z zakresu od 1 do 675 określająca klucz szyfrowania.

Wynikiem funkcji jest zakodowane słowo. System szyfrowania polega na zastępowaniu par kolejnych liter (tzw. digrafów). Każdej literze przypisujemy numer od 0 do 25 (26 - liczba liter), a każdej parze numer od 0 do 675 (26*26=676 - liczba możliwych par liter), w ten sposób, że numer pierwszej litery w parze mnożymy przez 26 i dodajemy numer drugiej litery pary: aa - 0, ab - 1, ..., az - 25, ba - 26, ..., zz - 675. Następnie do numeru pary dodajemy klucz szyfrowania i jako kod pary bierzemy parę o otrzymanym numerze (cyklicznie, tj. jeśli numer pary przekroczy 675 to bierzemy odpowiednią parę od początku).

Wynikiem SZYFR "ab 1 jest "ac.
Wynikiem SZYFR "abrakadabraa 500 jest "thkgdgwguxtg.
Wynikiem SZYFR "dzisiajjestkonkurs 487 jest "wsblatccxlmdhgdnkl.