oto LAS :lista jeśli nie lista? :lista [stop][] opu ukp 0 ugp 1 pw 90 np 450 ws 900 np 50 lw 90 powtórz długość :lista [przyp "a element npw :lista powtórz długość :a [spr pod np 40] ws 40 opu ws ( długość :a ) * 40 - 40 pod pw 90 np 800 / ( ( długość :lista ) - 1 ) lw 90 opu] już
oto spr jeśli element npw :a = "a [samo][] jeśli element npw :a = "ą [samo][] jeśli element npw :a = "b [samo][] jeśli element npw :a = "c [spol][] jeśli element npw :a = "ć [spol][] jeśli element npw :a = "d [spol][] jeśli element npw :a = "e [samo][] jeśli element npw :a = "ę [samo][] jeśli element npw :a = "f [spol][] jeśli element npw :a = "g [spol][] jeśli element npw :a = "h [spol][] jeśli element npw :a = "i [samo][] jeśli element npw :a = "j [spol][] jeśli element npw :a = "k [spol][] jeśli element npw :a = "l [spol][] jeśli element npw :a = "ł [spol][] jeśli element npw :a = "m [spol][] jeśli element npw :a = "n [spol][] jeśli element npw :a = "ń [spol][] jeśli element npw :a = "o [samo][] jeśli element npw :a = "ó [samo][] jeśli element npw :a = "p [spol][] jeśli element npw :a = "q [spol][] jeśli element npw :a = "r [spol][] jeśli element npw :a = "s [spol][] jeśli element npw :a = "ś [spol][] jeśli element npw :a = "t [spol][] jeśli element npw :a = "u [samo][] jeśli element npw :a = "v [spol][] jeśli element npw :a = "w [spol][] jeśli element npw :a = "x [spol][] jeśli element npw :a = "y [samo][] jeśli element npw :a = "z [spol][] jeśli element npw :a = "ź [spol][] jeśli element npw :a = "ż [spol][] już
oto spol opu lw 45 np 50 ws 50 pw 90 np 50 ws 50 lw 45 już
oto samo opu lw 45 np 100 ws 100 pw 90 np 100 ws 100 lw 45 już
I wyjaśnienia.
W procedurze "LAS", na początku procedury, znajduje się sprawdzenie, czy dana ":lista" jest listą. Jeśli nie, to procedura nie zostanie wykonana. Następnie jest ustalenie parametrów rysowania. Później pętla w pętli, czyli przypisywanie zmiennej "a" poszczególnych słów listy, i sprawdzanie kolejnych liter (za pomocą procedury pomocniczej "spr"). Procedura "spr" zawiera sprawdzenie wszystkich liter alfabetu polskiego, oraz "q", "v", i "x", i powoduje wykonanie odpowiedniej procedury ("spol" - w przypadku spółgłoski, lub "samo" - w przypadku samogłoski). Po każdym narysowaniu drzewka następuje przejście, a po narysowaniu ostatniego - powrót do środka i skierowanie żółwia w górę.
Oto moja propozycja rozwiązania:
oto LAS :lista
jeśli nie lista? :lista [stop][]
opu ukp 0 ugp 1 pw 90 np 450 ws 900 np 50 lw 90
powtórz długość :lista [przyp "a element npw :lista powtórz długość :a [spr pod np 40] ws 40 opu ws ( długość :a ) * 40 - 40 pod pw 90 np 800 / ( ( długość :lista ) - 1 ) lw 90 opu]
już
oto spr
jeśli element npw :a = "a [samo][]
jeśli element npw :a = "ą [samo][]
jeśli element npw :a = "b [samo][]
jeśli element npw :a = "c [spol][]
jeśli element npw :a = "ć [spol][]
jeśli element npw :a = "d [spol][]
jeśli element npw :a = "e [samo][]
jeśli element npw :a = "ę [samo][]
jeśli element npw :a = "f [spol][]
jeśli element npw :a = "g [spol][]
jeśli element npw :a = "h [spol][]
jeśli element npw :a = "i [samo][]
jeśli element npw :a = "j [spol][]
jeśli element npw :a = "k [spol][]
jeśli element npw :a = "l [spol][]
jeśli element npw :a = "ł [spol][]
jeśli element npw :a = "m [spol][]
jeśli element npw :a = "n [spol][]
jeśli element npw :a = "ń [spol][]
jeśli element npw :a = "o [samo][]
jeśli element npw :a = "ó [samo][]
jeśli element npw :a = "p [spol][]
jeśli element npw :a = "q [spol][]
jeśli element npw :a = "r [spol][]
jeśli element npw :a = "s [spol][]
jeśli element npw :a = "ś [spol][]
jeśli element npw :a = "t [spol][]
jeśli element npw :a = "u [samo][]
jeśli element npw :a = "v [spol][]
jeśli element npw :a = "w [spol][]
jeśli element npw :a = "x [spol][]
jeśli element npw :a = "y [samo][]
jeśli element npw :a = "z [spol][]
jeśli element npw :a = "ź [spol][]
jeśli element npw :a = "ż [spol][]
już
oto spol
opu lw 45 np 50 ws 50 pw 90 np 50 ws 50 lw 45
już
oto samo
opu lw 45 np 100 ws 100 pw 90 np 100 ws 100 lw 45
już
I wyjaśnienia.
W procedurze "LAS", na początku procedury, znajduje się sprawdzenie, czy dana ":lista" jest listą. Jeśli nie, to procedura nie zostanie wykonana. Następnie jest ustalenie parametrów rysowania. Później pętla w pętli, czyli przypisywanie zmiennej "a" poszczególnych słów listy, i sprawdzanie kolejnych liter (za pomocą procedury pomocniczej "spr"). Procedura "spr" zawiera sprawdzenie wszystkich liter alfabetu polskiego, oraz "q", "v", i "x", i powoduje wykonanie odpowiedniej procedury ("spol" - w przypadku spółgłoski, lub "samo" - w przypadku samogłoski). Po każdym narysowaniu drzewka następuje przejście, a po narysowaniu ostatniego - powrót do środka i skierowanie żółwia w górę.