Alexandr Pozdniakov

Зарегистрирован с 27.02.2020
Комментарии
22 апреля 2020

1 Задача:

def draw_snake(n):
    x = 0
    y = 0
    k = 1
    rows_filled = 0
    cols_filled = 0
    direction = 1

    result = [[0 for _ in range(n)] for _ in range(n)]

    while k < n ** 2:

        result[x][y] = k
        k += 1

        # Идём вправо
        if direction == 1:
            y += 1
            if y == n - 1 - cols_filled:
                direction = 2
            continue

        # Идём вниз
        if direction == 2:
            x += 1
            if x == n - 1 - rows_filled:
                rows_filled += 1
                direction = 3
            continue

        # Идём влево
        if direction == 3:
            y -= 1
            if y == 0 + cols_filled:
                cols_filled += 1
                direction = 4
            continue

        # Идём вверх
        if direction == 4:
            x -= 1
            if x == 0 + rows_filled:
                direction = 1
            continue

    result[x][y] = k

    for i in result:
        line = ""
        for j in i:
            line += str(j) + "\t"
        print(line)

def main():
    n = int(input("Enter size >> "))
    draw_snake(n)

if __name__ == "__main__":
    main()

2 Задача:


def draw_ziggurat(n):
    size = 1
    i = 1
    while i < n:
        if size == 1:
            size = 3
        else:
            size += 2
        i += 1
    for x in range(size):
        line = ""
        for y in range(size):
            line += str(get_ring_number(x, y, size) + 1) + " "
        print(line)

def get_ring_number(x, y, n):
    x_ring = min(abs(0 - x), abs(n - x - 1))
    y_ring = min(abs(0 - y), abs(n - y - 1))
    return min(x_ring, y_ring)

def main():
    n = int(input("Enter size >> "))
    draw_ziggurat(n)

if __name__ == "__main__":
    main()
Ответить