Algorytm opisowy do generowania płatka Kocha

Płatek Kocha powstaje w wyniku podziału odcinka na trzy części i usunięcia środkowej, a w jej miejsce wstawieniu trójkąta równobocznego o boku długości usuniętego odcinka. Taki algorytm stosujemy dla każdego fragmentu odcinka bazowego, a następnie dla każdego fragmentu każdego kolejnego pododcinka – i tak dalej. Taka figura może mieć nieskończoną długość, gdyż każdy podział tworzy cztery razy więcej odcinków niż poprzedni.

1
Przykład 1

Spróbujmy zdefiniować algorytm tworzenia geometrycznej prezentacji:

Linia 1. platek podkreślnik kocha otwórz nawias okrągły stopien przecinek dl podkreślnik bok zamknij nawias okrągły. Linia 3. bok otwórz nawias okrągły stopien przecinek dl podkreślnik bok zamknij nawias okrągły. Linia 4. jeśli stopien wynosi 0 narysuj podkreślnik odcinek podkreślnik dlugosci dl podkreślnik bok. Linia 5. w innym przypadku. Linia 6. bok otwórz nawias okrągły stopien minus 1 przecinek dl podkreślnik bok prawy ukośnik 3 zamknij nawias okrągły. Linia 7. obróć żółwia w lewo o 60 stopni. Linia 8. bok otwórz nawias okrągły stopien minus 1 przecinek dl podkreślnik bok prawy ukośnik 3 zamknij nawias okrągły. Linia 9. obróć żółwia w prawo o 120 stopni. Linia 10. bok otwórz nawias okrągły stopien minus 1 przecinek dl podkreślnik bok prawy ukośnik 3 zamknij nawias okrągły. Linia 11. obróć żółwia w lewo o 60 stopni. Linia 12. bok otwórz nawias okrągły stopien minus 1 przecinek dl podkreślnik bok prawy ukośnik 3 zamknij nawias okrągły. Linia 14. obróć żółwia w prawo o 30 stopni. Linia 15. powtórz 3 razy. Linia 16. bok otwórz nawias okrągły stopien przecinek dl podkreślnik bok zamknij nawias okrągły. Linia 17. obróć żółwia w prawo o 120 stopni. Linia 19. obróć żółwia w lewo o 30 stopni.

Na podstawie takiego opisu zapiszemy kod funkcji:

Linia 1. def platek podkreślnik kocha otwórz nawias okrągły z przecinek stopien przecinek dl podkreślnik bok zamknij nawias okrągły dwukropek. Linia 3. def bok otwórz nawias okrągły stopien przecinek dl podkreślnik bok zamknij nawias okrągły dwukropek. Linia 4. if stopien znak równości znak równości 0 dwukropek. Linia 5. z kropka forward otwórz nawias okrągły dl podkreślnik bok zamknij nawias okrągły. Linia 6. else dwukropek. Linia 7. bok otwórz nawias okrągły stopien minus 1 przecinek dl podkreślnik bok prawy ukośnik 3 zamknij nawias okrągły. Linia 8. z kropka left otwórz nawias okrągły 60 zamknij nawias okrągły. Linia 9. bok otwórz nawias okrągły stopien minus 1 przecinek dl podkreślnik bok prawy ukośnik 3 zamknij nawias okrągły. Linia 10. z kropka right otwórz nawias okrągły 120 zamknij nawias okrągły. Linia 11. bok otwórz nawias okrągły stopien minus 1 przecinek dl podkreślnik bok prawy ukośnik 3 zamknij nawias okrągły. Linia 12. z kropka left otwórz nawias okrągły 60 zamknij nawias okrągły. Linia 13. bok otwórz nawias okrągły stopien minus 1 przecinek dl podkreślnik bok prawy ukośnik 3 zamknij nawias okrągły. Linia 15. z kropka right otwórz nawias okrągły 30 zamknij nawias okrągły. Linia 16. for i in range otwórz nawias okrągły 3 zamknij nawias okrągły dwukropek. Linia 17. bok otwórz nawias okrągły stopien przecinek dl podkreślnik bok zamknij nawias okrągły. Linia 18. z kropka right otwórz nawias okrągły 120 zamknij nawias okrągły. Linia 20. z kropka left otwórz nawias okrągły 30 zamknij nawias okrągły.

A oto efekt wykonania algorytmu:

Linia 1. kratka poniższe wiersze niezbędne są dla wykonania. Linia 2. from turtle import Turtle. Linia 3. zlw znak równości Turtle otwórz nawias okrągły zamknij nawias okrągły. Linia 5. platek podkreślnik kocha otwórz nawias okrągły zlw przecinek 3 przecinek 200 zamknij nawias okrągły.
R1Ap30iRUGOu5
Płatek Kocha – efekt po wykonaniu kilku pierwszych kroków
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.