Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ZerosAndOnes(object):
- def __init__(self, n):
- self._current = 0
- self._n = n
- def __iter__(self):
- return self
- def __next__(self):
- n = self._n
- bins = bin(self._current)
- bins = bins[2:]
- bins = list(map(int, bins))
- matrix = [0 for i in range (n*n - len(bins))] + bins #Создаем одномерный массив из n*n элементов
- matrix = [matrix[x:x+n] for x in range(0, len(matrix), n)] #Делаем из него Квадратную матрицу
- result = [matrix[i][j] for i in range(len(matrix)) for j in range(i, len(matrix[i])) if matrix[j][i] == 1] #Если на гл. диагонали и под ней все нули - возвращаем
- self._current = self._current + 1
- if self._current > 2 ** (n*n):
- raise StopIteration()
- elif len(result) == 0:
- return matrix
- else:
- return None # если не подходит - возвращаем None
- for x in ZerosAndOnes(3):
- if x is not None:
- print(' '.join([str(elem) for elem in x]))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement