Autorské riešenie
[stiahni py, py]

  • Počet riešiteľov: 6 / 7 = 85,7 %

  • Úspešnosť riešenia: 3,5 / 5 = 70 %                   

Riešenie tejto úlohy spočíva v správnom prečítaní textového reťazca zo vstupu a jeho spracovania. Pri čítaní znaku "l" sa má korytnačka natočiť vľavo a pri prečítaní znaku "p" sa má korytnačka natočiť vpravo. Číselná hodnota určuje veľkosť polkružnice, ktorý má korytnačka vykresliť. Túto hodnotu je vhodné vynásobiť 10 pre lepšiu viditeľnosť nakresleného obrazca. Pri vykresľovaní polkružníc použijeme metódu circle, v ktorej prvý parameter (radius) je polomer časti kružnice a druhý parameter (extent). Pri vykresľovaní polkružníc nastavíme druhý parameter na hodnotu 180. Pri vykresľovaní polkružníc proti smeru otáčania hodinových ručičiek nastavíme prvý parameter na kladné číslo a pre polkružnice v smere otáčania hodinových ručičiek na záporné číslo.

ukážka vzorov

Riešenie úlohy môže vyzerať nasledovne:

import turtle

def graviruj_vzor(navod):
    for instrukcia in navod:
        if instrukcia == 'l':
            smer = 1
        elif instrukcia == 'p':
            smer = -1
        else:
            pero.circle(smer * 10 * int(instrukcia), 180)


pero = turtle.Turtle()
pero.hideturtle()
plocha = turtle.Screen()
graviruj_vzor('l6l1p2p4l4l2')

plocha.mainloop()

Alternatívne riešenie:

import turtle

def graviruj_vzor(navod):
    for i in range(len(navod) // 2):
        smer = navod[2 * i]
        dlzka = int(navod[2 * i + 1])
        if smer == 'l':
            pero.circle(10 * dlzka, 180)
        else:
            pero.circle(-10 * dlzka, 180)


pero = turtle.Turtle()
pero.hideturtle()
plocha = turtle.Screen()
graviruj_vzor('l6l3p3')

plocha.mainloop()

Vaše zaujímavé riešenia a najčastejšie chyby

Iba dvaja riešitelia spracovali úlohu na plný počet. Iba jeden z týchto dvoch riešiteľov splnil aj výzvu na nakreslenie najkrajšieho vzoru. Najčastejšou chybou bolo nesprávne natáčanie a používanie funkcie setheading() pred alebo po použití postačujúceho natočenia vľavo / vpravo.