Spirala Fibonacciego z kwadratów

Ciąg Fibonacciego metodą iteracyjną - Informatyka - liceum klasa 1 (Python)

Kwadraty o bokach z ciągu Fibonacciego (1, 1, 2, 3, 5, 8, 13) układają się bez luk w coraz większe prostokąty: każdy nowy kwadrat dokładamy do dłuższego boku prostokąta zbudowanego z poprzednich, na zmianę **w prawo, w górę, w lewo i w dół**. Program pamięta granice prostokąta (`left`, `bottom`, `right`, `top`). Nowy kwadrat staje przy odpowiedniej krawędzi, a potem ta krawędź przesuwa się o bok kwadratu. Funkcja `square(x, y, side)` rysuje kwadrat od lewego dolnego rogu. Skala `scale` zamienia wyraz ciągu na jednostki planszy.

arrow = Sprite()
arrow.image = 16
arrow.size = 10
world.add(arrow)
def square(x, y, side):
    arrow.pen.on = False
    arrow.position = (x, y)
    arrow.angle = 0
    arrow.pen.on = True
    for _ in range(4):
        arrow.move(side)
        arrow.turn(90)

sizes = [1, 1]
while len(sizes) < 7:
    sizes.append(sizes[-1] + sizes[-2])

scale = 6
left, bottom = -21, -33
right, top = left + scale, bottom + scale
square(left, bottom, scale)
direction = 0  # 0 w prawo, 1 w górę, 2 w lewo, 3 w dół
for f in sizes[1:]:
    side = f * scale
    if direction == 0:
        square(right, bottom, side)
        right += side
    elif direction == 1:
        square(left, top, side)
        top += side
    elif direction == 2:
        square(left - side, bottom, side)
        left -= side
    else:
        square(left, bottom - side, side)
        bottom -= side
    direction = (direction + 1) % 4

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Informatyka - liceum klasa 1·Zaloguj się, aby zapisać postęp na koncie.