Logia08 – rok szkolny 2007/2008 – etap - III

Zad. 1. Napisz procedurę WYKS :wyraz, która rysuje na środku ekranu wykres słowa w postaci kwadratu o boku długości 400, składającego się z pewnej liczby prostokątów o tych samych wymiarach.

Parametr :wyraz jest niepustym słowem składającym się z małych liter alfabetu łacińskiego, mającym nie więcej niż 40 znaków.

Liczbę prostokątów w poziomie wyliczamy znajdując tę literę słowa :wyraz, która zajmuje najdalszą pozycję w alfabecie (dla litery a jest to 1, dla litery b - 2, dla litery c - 3, ..., dla litery z - 26). Liczba prostokątów w pionie jest równa liczbie wystąpień tej litery słowa :wyraz, która najwięcej razy występuje w tym słowie.

Każde wystąpienie litery jest reprezentowane przez zamalowanie prostokąta. Jeśli litera występuje wielokrotnie, to jest reprezentowana przez ciąg zamalowanych prostokątów w pionie. Skrajny lewy pion odpowiada literze a, skrajny prawy - literze o najdalszej pozycji w alfabecie występującej w słowie :wyraz. W pionie, powyżej pustego prostokąta nie może wystąpić zamalowany.

Rysunki przedstawiają efekt wywołania WYKS "alabama, WYKS "baba oraz WYKS "celnik.

Zad. 2. Liczba palindromiczna - jest to taka liczba, która po odczytaniu zarówno od lewej, jak i prawej strony daje tę samą wartość. Liczbami palindromicznymi są na przykład liczby 7, 121, 5445.

Napisz funkcję LICZPAL :liczby, gdzie parametr :liczby jest listą liczb całkowitych z zakresu od 0 do 88. Wartością funkcji jest lista list składających się z liczby palindromicznej oraz liczby dodawań prowadzących do jej otrzymania.

Liczby palindromiczne dla każdej liczby z listy :liczby otrzymujemy w następujący sposób: znajdujemy zapis wspak danej liczby i dodajemy do niej. Proces dodawania powtarzamy do otrzymania liczby palindromicznej (np. dla liczby 37: 37+73=110, 110+11=121). Zakładamy, że parametr :liczby nie jest pustą listą.

Zad. 3. Napisz funkcję ILEMAX :liczby, gdzie parametr :liczby jest dowolną listą liczbową, zawierającą co najmniej trzy liczby dodatnie. Wynikiem funkcji jest liczba elementów najliczniejszego z podzbiorów danej listy, spełniającego warunek, że z odcinków o długościach określonych przez trzy dowolne elementy tego podzbioru można zbudować trójkąt.

Zad. 4. Rzymski sposób zapisu liczb używa siedmiu znaków, z których każdy reprezentuje pewną wartość:

I oznacza "jeden", V - "pięć", X - "dziesięć", L - "pięćdziesiąt", C - "sto", D - "pięćset", a M oznacza "tysiąc".

Liczbę w zapisie rzymskim tworzymy zestawiając odpowiednie znaki, zapisując po kolei, o ile istnieją: tysiące, setki, dziesiątki i jedności. Nie mogą ze sobą sąsiadować dwa identyczne znaki spośród V, L oraz D. Obok siebie mogą stać co najwyżej trzy identyczne znaki spośród I, X, C, M. Przestrzegając tych zasad, nie moglibyśmy zapisać niektórych liczb - tych, które zawierają dokładnie cztery lub dziewięć - setek, dziesiątek lub jedności. W takich sytuacjach wprowadzony został zapis za pomocą dwuznaku, w którym znak oznaczający większą wartość jest poprzedzony znakiem oznaczającym mniejszą wartość: znak V lub X może być poprzedzony przez I, znak L lub C może być poprzedzony przez X, a znak D lub M może być poprzedzony przez C - jest to interpretowane jako różnica, w której od większej wartości odejmujemy mniejszą. Na przykład I oznacza "jeden", II - "dwa", III - "trzy", IV - "cztery", V - "pięć", VI - "sześć", IX - "dziewięć", CXLIII - "sto czterdzieści trzy", MMDCCCXCIX - "dwa tysiące osiemset dziewięćdziesiąt dziewięć".

Napisz funkcję DODAJR :rzymskie, której parametrem jest niepusta lista zawierająca słowa będące zapisami rzymskimi liczb naturalnych. Wynikiem funkcji jest słowo będące zapisem rzymskim sumy liczb tej listy. Zakładamy, że elementy listy, a także suma, są mniejsze od czterech tysięcy.

Wynikiem