Autorské riešenie
Aby bolo riešenie prehľadnejšie, je dobré si to rozdeliť na časti.
Využívame procedúry/funkcie spodnyRad a poschodie.
Procedúra/funkcia spodnyRad vypočíta, aký široký má byť spodný rad.
Procedúra/funkcia poschodie nám vykreslí poschodie so zadaným počtom polien.
;Imagine Logo
viem spodnyRad :pocet urobTu "p 0 urobTu "rad 0 kým [:pocet>:p][ urobTu "p :p+počítadlo urobTu "rad počítadlo ] výsledok :rad koniec viem poschodie :pocet nechfp "hnedá6 opakuj :pocet[ bod 40 dopredu 40 ] vzad (40*:pocet) koniec viem pyramida :pocet peroHore ak :pocet=0[ ukonči ] urobTu "rad (spodnyRad :pocet) urobTu "nakreslene 0 urobTu "pocetPoschodi 0 kým [:pocet>:nakreslene][ urobTu "nakreslit :pocet-:nakreslene ak2 :nakreslit>:rad[ poschodie :rad urobTu "nakreslene :nakreslene+:rad vlavo 60 dopredu 40 vpravo 60 ][ poschodie :nakreslit urobTu "nakreslene :nakreslene+:nakreslit ] urobTu "pocetPoschodi :pocetPoschodi+1 urobTu "rad :rad-1 ] vlavo 60 vzad (:pocetposchodi-1)*40 vlavo 30 koniec
# Python import turtle def poschodie(pocet): ''' Kreslenie poschodia z aktuálnej pozície. :param pocet: počet polien v poschodí :type pocet: int ''' for i in range(pocet): pero.dot(40, "brown") pero.forward(40) pero.backward(pocet * 40) def spodnyRad(pocet): ''' Výpočet šírky spodného radu pyramídy. :param pocet: počet polien pyramídy :type pocet: int :return: pocet polien v spodnom rade :rtype: int ''' p = 0 rad = 0 i = 1 while pocet > p: p += i rad = i i += 1 return rad def pyramida(pocet): '''Kreslenie pyramídy z polien. :param pocet: počet všetkých polien :type pocet: int ''' pero.penup() if pocet == 0: return rad = spodnyRad(pocet) nakreslene = 0 pocetPoschodi = 0 while pocet > nakreslene: nakreslit = pocet - nakreslene if nakreslit > rad: poschodie(rad) nakreslene += rad pero.left(60) pero.forward(40) pero.right(60) else: poschodie(nakreslit) nakreslene += nakreslit pocetPoschodi += 1 rad -= 1 pero.left(60) pero.backward((pocetPoschodi - 1) * 40) pero.right(60) pero.pendown pero = turtle.Turtle() tabula = turtle.Screen() pyramida(1) tabula.mainloop() Vaše zaujímavé riešenia a najčastejšie chyby
Častou chybou bolo vykresľovanie plnej pyramídy, kde parameter predstavoval počet poschodí a nie počet polien. Často tieto riešenia fungovali len do určitého počtu polien(pri takomto pochopení počet plných poschodí). |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |