Napisz bezparametrową procedurę GWIAZDA, która tworzy na środku ekranu rysunek przedstawiony poniżej.
Rysunek składa się z sześciokątów oraz trójkątów zamalowanych różnymi kolorami. Pierwszym etapem rozwiązania będzie napisania dwóch procedur rysujących sześciokąt i trójkąt foremny o zadanym boku :a i zamalowanym na dany kolor :kolor. W celu uniknięcia zbędnego przesuwania w głównej procedurze obydwie procedury za środek figury przyjmują miejsce gdzie stoi żółw podczas rozpoczęcia procedury. Po narysowaniu żółw wraca do miejsca z którego rozpoczął rysowanie.
Dwie funkcje pomocnicze pozwalają skupić się na wybraniu pozycji rysowania, a następnie dobraniu odpowiedniej wartości paramatru :a.
(2.) Na początek warto ustalić pewną wartość względem której będą wyliczone pozostałe. W ten sposób zdecydowanie łatwiej będzie sterować wielkością obrazka. Określony bok :a dotyczy białego sześciokąta na boku którego zostały narysowane mniejsze trójkąty. (4.) Wylicz wysokość trójkata opisanego na boku. (5. - 23.) Narysuj sześć trójkątów na bokach: (6. - 8.) przejdź do środka trójkąta i (9.) narysuj duży czarny trójkąt. Następnie (10. - 12.) wpisz w niego biały sześciokąt, a w niego (13.) czarny sześciokąt. (14.) Dorysuj biały trójkąt. (15. - 17.) Cofnij, aby (18.) dorysować biały trójkat wewnątrz dużego, czarnego sześciokąta. Na koniec każdego powtórzenia (22.) należy obrócić żółwia o 60°.
W mauzoleum Galli Placydii znajduje się mozaika przedstawiająca grecki ornament. Napisz procedurę ORNAMENT :n, która tworzy na środku ekranu rysunki greckich ornamentów o stałej wysokości 60 pikseli. Dana :n określa złożoność ornamentu, może przyjmować wartości od 1 do 13. Rysunki poniżej przedstawiają ornamenty o złożoności 2 i 7.
Kluczem do szybkiego rozwiązania zadania jest wyodrębnienie powielanego wzoru. Po drugie warto zauważyć, że wzór można rozdzielić na dwie identyczny części obrócone o 180° co zostało pokazane na schemacie pomocniczym. Do narysowania pojedynczego wzorku służy procedura ORNAMENT_pom, która przyjmuje jeden argument :a, który określa długość najkrótszego odcinka.
(2.) Określ maksymalną wysokość (na podstawie treści) i (3.) oblicz długość :a. Następnie (4. - 7.) przejdź z podniesionym pisakiem do pierwszego wzoru od lewej. Potem (8. - 14.) narysuj :n takich samych wzorków koło siebie przy użyciu procedury ORNAMENT_pom.
Napisz procedurę RAKIETA :h :p :k, rysującą na środku ekranu rakietę o wysokości :h. Rakieta zbudowana jest z następujących, zamalowywanych losowymi kolorami, figur geometrycznych: prostokątów o wysokości dwa razy mniejszej niż szerokość (parametr :p określa liczbę prostokątów), jednego trapezu równoramiennego (długości ramion oraz górnej podstawy są dwa razy mniejsze niż długość dolnej podstawy), kwadratów (parametr :k określa liczbę kwadratów) oraz jednego trójkąta równobocznego. Długości boków kwadratów, trójkąta, górnej podstawy trapezu oraz wysokości prostokątów są takie same. Parametr :h może przyjmować wartości od 100 do 400, parametry :p i :k od 0 do 10.
Przyjmując wysokość rakiety za stałą zmieniać się będzie szerokość każdego z elementów. Przede wszystkim bok kwadratu będzie wtedy maksymalna wysokością podzieloną przez :a = 2 + :k + :p. Dłuższy bok prostokąta to wtedy 2:a. Pierwszy etap polega na przejściu w lewy dolny róg rysunku po uprzednim (2.) wyliczeniu boku :a.
Drugi etap polega na (7. - 18.) narysowaniu :p prostokątów, (19. - 25.) trapezu i (26. - 27.) przejścia do rysowania kwadratów.
Ostatni etap polega składa się z (28. - 37.) narysowaniu :k kwadratów, a na koniec (38. - 43.) trójkata równobocznego.
Figury przedstawione na rysunkach poniżej to przykłady wielostrzałek, o różnych stopniach złożoności: 1, 2, 3 oraz 12. Napisz procedurę STRZAŁKI :n rysowania wielostrzałek o dowolnym stopniu złożoności :n. Po wywołaniu procedury STRZAŁKI z dowolną wartością parametru :n, nie mniejszą niż 1 i nie większą niż 25, na ekranie powinien powstać rysunek wielostrzałki o złożoności :n. Szerokość rysowanej figury jest stała - niezależnie od stopnia złożoności wynosi 250 pikseli.
Narysowanie strzałki może przysporzyć problemów, dlatego do rozwiązania został załączony obrazek pomocniczy. Żółw rozpoczyna i kończy procedurę w punkcie zielonym, a po wstępnym przesunięciu rysowanie rozpoczyna w punkcie czerwonym skierowany w dół. Zmienna :a określa szerokość i wysokość kratki, a zmienna :b to przekątna kwadratu o bokach :a × :a.
Jednym z głównych problemów może okazać się wyliczenie wartości zmiennej :a. Warto zauważyć, że dla złożoności 1 rysowanych jest 5 kolumn. Dla złożoności 2 jest 8, dla 3 jest 11 itd. Wzór opisujący zależność liczby kolumn od złozoności :n to 5 + (n - 1)·3 = 2 + 3n.
(2.) Maksymalna szerokość :w obrazka to 250 (z treści). Na tej podstawie można obliczyć wartość zmiennej (3.) :a. (4. - 7.) Przesuń do środka pierwszej strzałki. (8. - 19.) Narysuj :n strzałek rozrózniąjąc (9.) strzałki skierowane w dół oraz do góry sprawdzając parzystość numeru powtórzenia.