示例#1
0
 def matter(cls, m: Matter) -> Matter:
     new_matter: Matter = m.copy()
     new_values = m.background_color * np.ones(m.shape, dtype=np.int)
     keep_color = m.max_color()
     new_values[m.values == keep_color] = keep_color
     new_matter.set_values(new_values)
     return new_matter
 def __init__(self, m: Matter, ind: int, hash_count: int):
     self.a_init = m.a
     self.n_color = m.n_color()
     self.n_cell = m.n_cell()
     self.size = m.shape[0] * m.shape[1]
     self.is_filled_rectangle = m.is_filled_rectangle()
     if m.is_filled_rectangle():
         if m.is_square():
             self.is_rectangle = 2
         else:
             self.is_rectangle = 1
     else:
         if m.a is not None:
             self.is_rectangle = 0
         else:
             self.is_rectangle = None
     # assume trimmed
     x_arr = m.values
     # row
     res_row = 0
     for i in range(x_arr.shape[0] // 2):
         res_row += (x_arr[i, :] != x_arr[x_arr.shape[0] - 1 - i, :]).sum()
     # col
     res_col = 0
     for j in range(x_arr.shape[1] // 2):
         res_col += (x_arr[:, j] != x_arr[:, x_arr.shape[1] - 1 - j]).sum()
     res = 0
     if res_row == 0:
         res += 1
     if res_col == 0:
         res += 2
     self.is_symmetry = res
     self.ind = ind
     self.hash = hash_count
     self.n_noise = (m.values != m.max_color()).sum()
     self.a = None
     self.y = None