Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 15, 2020 14:22:52

wywa
Зарегистрирован: 2020-04-15
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Матрица змейкой по кругу изнутри

Доброго времени суток. Подскажите, как мне исправить код, потому что я уже путаюсь. Мой код должен печатать матрицу в таком виде:
7 8 9
6 1 2
5 4 3

 print('Input n --> ')
# 6 - квадратная спираль снаружу
n = int(input())
v = [[0] * n for i in range(n)]
m = n
i = 0
j = n - 1
value = n * n
while n != 0:
    k = 0
    while k <= n - 1:
        value -= 1
        j -= 1
        v[i][j] = value
        k += 1
    for k in range(0, n - 1):
        i += 1
        value -= 1
        v[i][j] = value
    for k in range(0, n - 1):
        j += 1
        value -= 1
        v[i][j] = value
    for k in range(0, n - 1):
        i -= 1
        value -= 1
        v[i][j] = value
    i += 1
    j -= 1
    if n < 2:
        n = 0
    else:
        n = n-2
for i in range(m):
    for j in range(m):
        print(v[i][j], end=' ' * 3)
    print()

Офлайн

#2 Апрель 15, 2020 16:30:39

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Матрица змейкой по кругу изнутри

wywa
я бы разбил задачу на две: в рамках первой задачи вам надо получать следующий элемент матрицы по порядку, а вторая задача - отрисовать элементы в правильном порядке. Так вы будете меньше путаться
Первую часть я вам помогу решить

    
def matrix_generator(matrix):
    last_row = len(matrix) - 1
    last_col = len(matrix[0]) - 1
    r = 0
    c = 0
    while True:
        if c > last_col:
            c = 0
            r += 1
        if r > last_row:
            return
        yield matrix[r][c]
        c += 1
matrix = [
    [1, 5, 6, 3, 4, 5],
    [5, 7, 3, 5, 6, 7],
    [7, 4, 3, 4, 2, 0],
]
generator = matrix_generator(matrix)
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))
print(next(generator))



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version