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

Zadanie 1.

Sieć metra w mieście Y składa się z wielu linii. Każda z nich biegnie od Centrum do pewnej końcowej stacji na peryferiach. Na każdej linii kursuje jeden pociąg, który w chwili 0 wyrusza z Centrum i pokonuje odcinki między kolejnymi stacjami w czasie 1 minuty. Na stacjach końcowych - na peryferiach i w Centrum pociąg stoi jedną minutę. Czas postoju pociągu na pośrednich stacjach jest zaniedbywalny.
Zdefiniuj funkcję dwuparametrową STACJA :n :linia, której wartością jest nazwa stacji na danej linii, na jakiej powinien znajdować się pociąg po upływie :n minut. Zakładamy, że wartością pierwszego parametru może być dowolna liczba całkowita nieujemna, a drugiego niepusta lista kolejnych stacji - zaczynając od Centrum - na dowolnej linii metra. Oto przykładowe wyniki:

STACJA 0 [Centrum Ratusz Politechnika Uniwersytet Piaski Zalesie Kamraty] ma wartość: Centrum
STACJA 2 [Centrum Ratusz Politechnika Uniwersytet Piaski Zalesie Kamraty] ma wartość: Politechnika
STACJA 15 [Centrum Ratusz Politechnika Uniwersytet Piaski Zalesie Kamraty] ma wartość: Ratusz
STACJA 8483 [Centrum Ratusz Politechnika Uniwersytet Piaski Zalesie Kamraty] ma wartość: Centrum

Zadanie 2.

Poniższy rysunek przedstawia 13 kwadratów rozrzuconych w sposób losowy w polu ograniczonym kwadratową ramką.

Napisz procedurę bez parametrów, o nazwie KWADRATY, która tworzy na ekranie komputera podobny rysunek złożony z losowej liczby od 5 do 15 kwadratów rozrzuconych w sposób losowy w kwadratowym polu ograniczonym ramką:

  • Bok kwadratowej ramki powinien być 8 razy większy od boku każdego z małych kwadratów.
  • Każdy kwadrat musi się mieścić w polu ograniczonym ramką, ale jego bok może dotykać ramki, tak że boki kwadratu i ramki nakładają się (jak kwadrat po prawej stronie powyższego rysunku).
  • Żadne dwa kwadraty nie mogą na siebie nachodzić, ale mogą stykać się ze sobą, tak że ich boki nakładają się (tak jak dwa kwadraty w lewym dolnym rogu na przykładowym rysunku).

Zadanie 3.

W arabskich budowlach można spotkać mozaiki ułożone z kwadratowych - jasnych i ciemnych kafelków, przedstawiające różne napisy. Mozaika na poniższym rysunku, ułożona z 5 wierszy po 9 ciemnych (widocznych na rysunku) i białych (niewidocznych) kwadratowych kafelków przedstawia słowo Allah, zapisane pismem kufickim.

Następny rysunek przedstawia inny napis kuficki z XIV wieku, pochodzący z meczetu w Aleppo.

Przyjmujemy następujący sposób kodowania mozaikowych napisów, takich jak na przedstawionych rysunkach:

  • Każdy wiersz mozaiki kolejno od góry do dołu zapisujemy w postaci odpowiedniego słowa utworzonego z cyfr dwójkowych 0 i 1, reprezentujących odpowiednio jasny i ciemny kafelek. Np. pięć kolejnych wierszy mozaiki przedstawiającej słowo Allah zapisujemy w postaci pięciu 9-cio cyfrowych słów:
  • 111010101
    101010101
    111010101
    001010101
    001111101
  • Następnie każdy taki wiersz odczytujemy jako dwójkowy zapis pewnej liczby naturalnej i znajdujemy odpowiadający mu zapis dziesiętny tej liczby. Lista tych liczb dziesiętnych odpowiadających kolejnym wierszom mozaiki stanowi jej kod.

Na przykład:
kodem słowa Allah jest lista: [469 341 469 85 125],
kodem mozaiki pochodzącej z meczetu w Aleppo jest lista:
[2130564575 1342525760 1568430071 1431655761 1430259159 22925317 1564542677 1411240448 2113357499 274584193 1598035643 1147138601 1459689147 1952313865 122953403 1971142664 1426137023 2004181029 1146441405 2004871808 1073745583 1566007977 1431658495 1440694272 1350571349 1440601429 1431655749 2113797501].

Napisz procedurę z jednym parametrem MOZAIKA :kod, która mając dany :kod mozaiki - w postaci listy liczb naturalnych - tworzy na ekranie możliwie duży jej rysunek. Możesz założyć, że mozaika o danym kodzie będzie prostokątem mającym nie mniej niż 4 i nie więcej niż 32 wiersze złożone z od 6 do 32 kwadratowych kafelków.