Napisz bezparametrową procedurę/funkcję motyw, po wywołaniu której na środku ekranu powstanie rysunek taki, jak poniżej. Wysokość rysunku wynosi 480.
Przyglądając się dokładnie obrazkowi można zauważyć, że składa się on z 9 podobnych części (pod względem środka). Rysując elementy wierszami co drugi z nich ma dodatkowo wzorki na zewnątrz kwadratu. Ponadto warto zauważyć, że zewnętrzne obramowanie jest podobne do tego obramowania ze środka kwadratu, więc możliwe jest napisanie procedury, która narysuje obydwa wzorki (oczywiście dostosowując odpowiednio parametry).
Poniższa procedura motyw rozwiązuje podane zadanie. W celu narysowania początkowo: (2.) ustala licznik rysowanego elementu na 0 oraz na podstawie (2.) wysokości rysunku (3.) oblicza bok najmniejszego kwadratu.
Następnie (9.) dla każdego wiersza i (10.) każdej kolumny: (12. - 14.) rysowana jest obwódka i (15. - 17.) zewnątrzny wzór jeśli jest to odpowiedni element. Dalsza część kodu: (18. - 24.) rysuje mniejszy wzór oraz (25. - 29.) środkowy, najmniejszy kwadrat. (34.) Po narysowaniu kwadratu należy pamiętać, aby zwiększyć numer następnego elementu do narysowania.
Wzór polegający na narysowaniu ząbki realizuje poniższa procedura motyw_wzor. Rysuje ona wzór o zadanej długości :a najmniejszego boku oraz :n - ile ma być zębów narysowanych we wzorze.
Napisz jednoparametrową procedurę/funkcję piramida, po wywołaniu której na środku ekranu powstanie rysunek piramidy takiej, jak poniżej. Parametr określa liczbę poziomów piramidy, która jest także liczbą elementów w podstawie piramidy. Parametr może przyjmować wartości od 1 do 10. Wysokość każdego poziomu jest stała i wynosi 48.
Napisz jednoparametrową procedurę/funkcję ornament, po wywołaniu której na środku ekranu powstanie rysunek motywu takiego, jak poniżej. Parametr określa liczbę zielonych liści tworzących ornament i może przyjmować wartości od 3 do 16. Odległość pomiędzy środkami skrajnych liści jest stała i wynosi 500. Wszystkie odcinki tworzące pojedynczy liść mają długość a lub 2a. Odległość między środkami dwóch sąsiednich liści wynosi 10a.
Napisz jednoparametrową funkcję irs, której wynikiem jest n-ta w porządku rosnącym dodatnia liczba całkowita mająca tę cechę, że iloczyn cyfr tej liczby jest równy sumie cyfr tej liczby. Parametr n może przyjmować wartości od 1 do 98.
irs 5 | jest 5 |
---|---|
irs 11 | jest 123 |
irs 69 | jest 111126 |
Zadania można podzielić na dwie funkcje. Jedna z nich irs zwróci wynik wynikający z treści zadania, a druga irs? sprawdzi czy podana liczba :n jest liczbą spełniającą zależności. Taki podział pozwala na zapisanie dwóch, krótkich części kodu, który jest prostszy w rozumieniu. Warto zauważyć, że liczby majace w sobie cyfrę 0 i niebędące 0 na pewno nie spełnią warunku.
Funkcja pomocnicza irs? sprawdza czy dana liczba :n jest liczbą irs. Jeśli tak to zostanie zwrócona prawda, a w przeciwnym razie fałsz.
Przygotuj zmienne do przechowywania (2.) iloczynu oraz (3.) sumy. Następnie (4. - 8.) dla każdej cyfry aktualizuj obie zmienne. Na koniec (9.) zwróć wynik porównania.
Z kolei funkcja główna sprawdza (3. - 8.) wyszukuje kolejnych liczb irs. Jeśli taką napotka to zmniejsza wartość :n o 1. Kiedy licznik osiągnie 0 to znaczy, że została znaleziona :n-ta wartość i należy (9.) zwrócić aktualną wartość :a.