Индекс списка вне диапазона ошибок при построении квадрата

Поэтому я пытаюсь создать функцию, которая принимает целое число "n" и возвращает список списков, и это все в духе создания "магического квадрата" (начинайте с 1 в верхнем центре, затем идите направо и до следующего, все с эффектом "обтекания"). Во всяком случае, я чувствую, что мой код очень неуклюжий, но также я не могу проверить, работает ли он, потому что хорошо, что нет... Я получаю list index out of range сообщение для строки msq[row][col] = v, Вот код:

def magicsquare(n):
    msq = [[0 for c in range(n)] for r in range(n)]
    row, col= n-1, (n-1)/2
    M = n*(n+1)/2
    v, r, c = 1,0,0
    msq[row][col] = v
    while v != M:
        v= v+1
        if row+1 >= n:
            r = 0
        else: r = row + 1
        if (col+1) < n:
            c = col + 1
        else: c = 0
        if msq[r][c]:
            if (row+1) < n:
                r = row+1
                c = col
            grid[r][c] = v
            row = r
            col = c
    return magicsquare(n)

Ох, и тест, который я пытаюсь пройти magicsquare(3) == magicsquare([[4, 3, 8], [9, 5, 1], [2, 7, 6]]), Любая помощь приветствуется, спасибо!!!!!!!

0 ответов

Другие вопросы по тегам