from math import ceil n = int(input('Введите размер стороны матрицы: ')) m = int(input('Введите вычисляемую строку: ')) while m < 1 or m > n: print('Неверный номер строки') m = int(input('Введите вычисляемую строку: ')) RIGHT, DOWN, LEFT, UP = range(4) row = [0 for _ in range(n)] current = [0, 0] direction = RIGHT xshift = 0 yshift = 0 for i in range(1, n ** 2 + 1): if current[1] == m - 1: row[current[0]] = i if direction == RIGHT: if current[0] + 1 >= n - ceil(xshift / 2): direction = DOWN current[1] += 1 xshift += 1 else: current[0] += 1 elif direction == DOWN: if current[1] + 1 >= n - yshift // 2: direction = LEFT current[0] -= 1 yshift += 1 else: current[1] += 1 elif direction == LEFT: if current[0] - 1 < 0 + xshift // 2: direction = UP current[1] -= 1 xshift += 1 else: current[0] -= 1 elif direction == UP: if current[1] - 1 < 0 + ceil(yshift / 2): direction = RIGHT current[0] += 1 yshift += 1 else: current[1] -= 1 print(*row)