Re[3]: єтюд
От: Hard_Club  
Дата: 06.03.15 11:05
Оценка:
вот что получилось

for row_idx in xrange(RECTANGLE_ROWS - MAGIC_SQUARE_DIMENSION + 1):
    for col_idx in xrange(RECTANGLE_COLUMNS - MAGIC_SQUARE_DIMENSION + 1):
        row_slice = slice(row_idx, row_idx + MAGIC_SQUARE_DIMENSION)
        col_slice = slice(col_idx, col_idx + MAGIC_SQUARE_DIMENSION)
        if (MAGIC_SUM != np.sum(rectangle[row_slice, col_idx]) or
            MAGIC_SUM != np.sum(rectangle[row_idx, col_slice])):
            continue

        for row_offset in xrange(1, MAGIC_SQUARE_DIMENSION):
            if MAGIC_SUM != np.sum(rectangle[row_idx + row_offset, col_slice]):
                continue

        for col_offset in xrange(1, MAGIC_SQUARE_DIMENSION):
            if MAGIC_SUM != np.sum(rectangle[row_slice, col_idx + col_offset]):
                continue

        magic_square = rectangle[row_slice, col_slice]

        if (MAGIC_SUM != magic_square.trace() or
            MAGIC_SUM != magic_square[::-1].trace()):
            continue

        unique_number_mask = 0
        for number in magic_square.flat:
            unique_number_mask = unique_number_mask | (1 << (number - 1))
        if unique_number_mask != MAGIC_NUMBER_MASK:
            continue

        magic_squares.add(magic_square)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.