Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Массив Python большие квадраты

#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)

Комментариев нет:

Отправить комментарий