Strona główna » Poradniki » Logomocja » LOGIA » Logia 2007/08 - Etap I
 

Logia 2007/08 - Etap I

· Etap I · Etap II · Etap III ·
iOryginalna treść zadań jest dostępna pod oficjalnym adresem konkursu LOGIA

Zadanie 1

Napisz bezparametrową procedurę ESY, która tworzy na środku ekranu rysunek przedstawiony poniżej. Wysokość i szerokość rysunku wynosi minimum trzy czwarte wysokości ekranu graficznego.

Strategia

Na rysunku wyraźnie można wyszczególnić: rysowanie pojedynczego elementu, rysowanie linii elementów oraz narysowanie cztery razy tych samych 3 linii w różnych kierunkach.

Rysowanie elementu

Pojedynczy element są to dwie identyczne połówki, więc w celu uproszczenia kodu można zastosować pętle.

  1. oto ESY_es :a
  2.   pod
  3.   lw 90 np :a/2
  4.   pw 90
  5.   opu
  6.   wielokąt [
  7.     ukm "szary
  8.     powtórz 2 [
  9.       np (:a*2.5) pw 90
  10.       np (:a*4) pw 90
  11.       np (:a*2) pw 90
  12.       np :a pw 90
  13.       np :a lw 90
  14.       np (:a*2) lw 90
  15.       np :a
  16.     ]
  17.   ]
  18.   pod
  19.   pw 90 np :a/2
  20.   lw 90
  21.   opu
  22. już

(1.) Argument :a określa szerokość najkrótszego odcinka w figurze. Figura jest rysowana jako (6. - 17.) szary wielokąt. Środek elementu znajduje się w miejscu rozpoczęcia rysowania, więc potrzebne jest przejście (2. - 5.) na krawędź elemenut, a na koniec (18. - 21.) z krawędzi do miejsca rozpoczęcia rysowania.

Główna procedura

W celu dostosowania wielkości do strony warto (2.) przyjąć pewną stałą względem której będzie rysowany cały obrazek.

  1. oto ESY
  2.   niech "a 15
  3.   powtórz 4 [
  4.     pod ws :a*1.5 opu
  5.     powtórz 3 [
  6.       niech "n npw*2 - 1
  7.       pod
  8.       np :a*5 lw 90
  9.       np :a*5*(npw-1) pw 90
  10.       opu
  11.       powtórz :n [
  12.         ESY_es :a
  13.         pod
  14.         pw 90 np :a*5
  15.         lw 90
  16.         opu
  17.       ]
  18.       pod
  19.       pw 90 ws :a*5*npw
  20.       lw 90
  21.       opu
  22.     ]
  23.     pod ws :a*13.5 opu
  24.     pw 90
  25.   ]
  26. już

(2.) Ustal długość najkrótszego odcinka na rysunku. (3.) Narysuj cztery identyczne części. Każda z części (5.) składa się z trzech linii. (6.) Każda linia ma dokładnie an = 2n - 1 elementów. Podczas rysowania linii należy (9.) przesunąć się w lewo i (11. - 17.) narysować odpowiednią ilość elementów, a po narysowaniu (18. - 21.) powrócić do punktu wyjściowego.

Zadanie 2

Napisz procedurę FLORESY :rozmiar, która tworzy na środku ekranu rysunek, którego dwa przykłady widoczne są poniżej. Parametr :rozmiar określa szerokość rysunku. Liczba rysowanych współśrodkowych kwadratów powinna być w każdym z przypadków możliwie największa, przy czym długość boku najmniejszego kwadratu wynosi co najmniej 10.

Zadanie 3

Napisz procedurę GWIAZDA :bok, która tworzy rysunek gwiazdki przedstawiony poniżej. Parametr :bok określa długość boku większego sześciokąta.

Zadanie 4

Napisz procedurę POSADZKA :n :s, która tworzy na środku ekranu posadzki takie jak na rysunkach obok. Parametr :n określa złożoność posadzki, a parametr :s określa szerokość całego rysunku. Kolejne rysunki pokazują posadzki o stopniach złożoności 1, 2 oraz 3.

POSADZKA 1 200
POSADZKA 2 200
POSADZKA 3 200