Logia-3 – rok szkolny 1996/1997 – etap - III
Zad. 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
Zad. 2. 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).
Zad. 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 I 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.