Napisz bezparametrową procedurę/funkcję rama, po wywołaniu której na środku ekranu powstanie rysunek taki, jak poniżej. Wysokość rysunku wynosi 490.
Domyślnie rozmiar pisaka żółwia to 1. Jego zwiększenie spowoduje narysowanie grubszej linii, ale nie będzie ona kwadratowa, a okrągła. Z tego powodu warto napisać własną funkcję do rysowania kreski. W przykładowym rozwiązaniu nazywa się rama_np i przyjmuje dwa argumenty: :n - ile kroków ma wykonać żółw oraz :a - jaki jest rozmiar rysowanego kwadratu.
Początkowo żółw przesuwa się na lewy, dolny róg pierwszego kwadratu, a nastepnie rysuje :n kolejnych kwadratów w kierunku w którym jest ustawiony żółw. Po zakończeniu wraca na środek ostatnio narysowanego kwadratu.
Teraz narysowanie przedstawionego wzorku staje się o wiele prostsze - można się skupić jedynie na wydaniu polecenia narysowania paru kwadratów i obrotu. Obliczana zmienna :a określa rozmiar małego kwadratu.
Cały rysunek składa się z czeterech identycznych części. Z kolei środki boków mają ten sam wzór powtórzony dokładnie trzy razy. Zauważenie tego znacznie skraca długość kodu.
Napisz jednoparametrową procedurę/funkcję flaga, po wywołaniu której na ekranie powstanie rysunek taki, jak poniżej. Parametr określa liczbę kolumn tworzących flagę i może przyjmowaćwartości od 2 do 14. Wielkość zielonych i żółtych elementów jest stała, a długość najkrótszego odcinka na ich boku wynosi 8.
Żółty oraz zielony element na rysunku to w rzeczywistości to ta sama figura, ale obrócone są względem siebie o 180 stopni. Pierwszy etap polega na napisaniu metody, która pozwoli na rysować figurę w wybranym przez użytkownika kolorze. Przyjmuje się zgodnie z zadaniem, że bok jednego kwadratu wynosi 8 jednostek.
Do narysowania jednej kolumny elementów zostanie wykorzystana pętla oraz operacja modulo (tj. reszta z dzielenia). W zależności od parzystości numeru powtórzenia rysujemy zielony bądż żółty element i odpowiednio przesuwamy żółwiem, ale zawsze ustawiamy na koniec żółwia w lewym, dolnym rogu następnej rysowanej figury.
Warto zauważyć, że żółw kończy procedurę w tym samym miejscu co ją zaczyna. Dla uproszczenia powrotu ustalana jest z powrotem pozycja wejściowa.
Mając napisaną funkcję do rysowania kolumn z elementami można przejść do napisania głównej funkcji flaga. Na początek określamy szacunkowe rozmiary figury (ciężko otrzymać dokładne) i przesuwamy żółwia w lewy, dolny róg rysunku i rozpoczynamy rysowanie kolejnych kolumn i odpowidniego przesuwania żółwia.
W Turtlandii można płacić monetami o nominałach będących potęgami 3 – 1, 3, 9, 27, ..., itd. Napisz jednoparametrową funkcję ile, której parametrem jest kwota, a wynikiem minimalna liczba monet potrzebnych do zapłacenia tej kwoty. Parametr może przyjmować wartości od 1 do 1 000 000.
ile 29 | 3 |
---|---|
ile 64 | 4 |
Do rozwiązania tego zadania należy znaleźć jak największą potęgą liczby 3, którą będzie można odjąć od aktualnej kwoty. Następnie tą kwotę odejmujemy tyle ile się da i dzielimy wartość monety o 3 i powtarzamy odejmowanie. W ten sposób gwarantowane jest to, że zostanie użyte jak najmniej monet. Oto przykładowy kod:
Ciekawostka: wyznaczenie ile monet potrzeba to w rzeczywistości sumowanie cyfr w systemie trójkowym czyli takim, gdzie występują cyfry 0, 1, 2. Przykładowo 29 to w zapisie trójkowym 1002 (gdyż 1·34 + 2·30 = 29). Suma cyfr liczby 1002 daje 3.