#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)
Комментариев нет:
Отправить комментарий