Можете помощь по языке: Python
Требуется заполнить массив размера N × N единичками по спирали (начиная с верхнего левого угла по часовой стрелке, см. пример).
Входные данные
С клавиатуры вводится число N (нечетное, натуральное и не превышающее 50).
Выходные данные
Требуется вывести на экран построенную спираль.
примеры
входные данные:
7
выходные данные:
1111111
0000001
1111101
1000101
1011101
1000001
1111111
Приложения:

p15:
можно скопипастить код, если есть
a = ['1' * n]
for i in range(n // 2):
if '1' in a[i][i:-i - 1]:
a.append(a[i][0:i + 1] + '0' * (n - 2 * (i + 1)) + a[i][0:i + 1][::-1])
else:
a.append(a[i][0:i + 1] + '1' * (n - 2 * (i + 1)) + a[i][0:i + 1][::-1])
a += (a * 2)[0:n // 2][::-1]
if n % 2 == 0:
a.remove(a[n // 2])
a[j] = list(map(int, list(a[j])))
if n % 2 != 0:
b = n // 2
else:
if n % 4 == 0:
b = n // 2 - 1
else:
b = n // 2
for k in range(b):
if a[k + 1][k] == 1:
a[k + 1][k] = 0
else:
a[k + 1][k] = 1
return a
Ответы
Ответ дал:
0
Здравствуйте! Вот правильный полноценный код.
n = int(input())
a = [[0] * n for i in range(n)]
i, j, di, dj = 0, 0, 0, 1
for k in range(n * n):
a[i][j] = k + 1
if a[(i + di) % n][(j + dj) % n]:
di, dj = dj, -di
i += di
j += dj
for i in range(n):
for j in range(n):
print(a[i][j], end='')
print()
n = int(input())
a = [[0] * n for i in range(n)]
i, j, di, dj = 0, 0, 0, 1
for k in range(n * n):
a[i][j] = k + 1
if a[(i + di) % n][(j + dj) % n]:
di, dj = dj, -di
i += di
j += dj
for i in range(n):
for j in range(n):
print(a[i][j], end='')
print()
Вас заинтересует
1 год назад
1 год назад
1 год назад
2 года назад
2 года назад
8 лет назад