#python #массивы #if
Помогите улучшить решение для задачи:
Заполните прямоугольный массив целыми числами квадратами размера 2×2 из единиц, квадраты
идут в шахматном порядке, начиная с левого верхнего угла.
Пример для n=7m=10
1 1 0 0 1 1 0 0 1 1
1 1 0 0 1 1 0 0 1 1
0 0 1 1 0 0 1 1 0 0
0 0 1 1 0 0 1 1 0 0
1 1 0 0 1 1 0 0 1 1
1 1 0 0 1 1 0 0 1 1
0 0 1 1 0 0 1 1 0 0
Мое решение
n, m = 7, 10
a = []
arr = [[0 for j in range(m)] for i in range(n)]
for i in range(len(arr)):
a.append([])
for j in range(len(arr[i])):
if i%2 != 0:
x = ((i+j)%4)%3
if x == 2:
x = 1
elif ((i+j+1)%4)%3 == 0:
x= 0
else:
x = 1
a[i].append(x)
for k in a:
print(*k)
Ответы
Ответ 1
n, m = 7, 10 a = [[~(i ^ j) >> 1 & 1 for j in range(m)] for i in range(n)] for k in a: print(*k) 1 1 0 0 1 1 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0Ответ 2
Попробуйте так: from pprint import pprint as pp n, m = 7, 10 arr = [[0 for j in range(m)] for i in range(n)] tr = 1 for i, r in enumerate(arr): if tr > 0: tc = 1 else: tc = -1 for j, c in enumerate(r): if tc > 0: arr[i][j] = 1 tc += 1 if tc == 3: tc = -1 tr += 1 if tr == 3: tr = -1 pp(arr)
Комментариев нет:
Отправить комментарий