Ejemplo n.º 1
0
	def edge_one_one(self, board: Board, pt, neighbors=None) -> None:
		if not neighbors:
			neighbors = board.gen_neighbors(pt)

		has_edge = self._is_on_edge(board, pt, neighbors)

		if not has_edge:
			return False
Ejemplo n.º 2
0
	def basic_patterns(self, board: Board, pt) -> None:
		if pt in board.numbers:
			bombs = board.numbers[pt]
			neighbors = board.gen_neighbors(pt)

			open_neighbors = neighbors & board.unclicked_squares

			if len(open_neighbors) == bombs:
				for neighbor in neighbors:
					board.select_sq(neighbor)
					self.basic_patterns(neighbor)
Ejemplo n.º 3
0
	def _is_on_edge(self, board: Board, pt: tuple, neighbors=None, edges=None) -> bool:
		if not neighbors:
			neighbors = board.gen_neighbors(pt)

		if len(neighbors) <= 5:
			return True

		if not edges:
			edges = self._get_edges(board, pt, neighbors)

		return self._is_on_soft_edge(board, pt, neighbors, edges)
Ejemplo n.º 4
0
	def _is_on_soft_edge(self, board: Board, pt: tuple, neighbors=None, edges=None) -> bool:
		if not neighbors:
			neighbors = board.gen_neighbors(pt)

		if not edges:
			edges = self._get_edges(board, pt, neighbors)

		#intersection of visible zeros and neighbors
		zero_sqs = self._get_zero_sqs(board)
		zero_neighbors = zero_sqs & neighbors

		# check if 3-consec pts are subsets of zero_neighbors, bools
		return any(edge < zero_neighbors for edge in edges)
Ejemplo n.º 5
0
	def _get_mapped_neighbors(self, board: Board, pt: tuple) -> set:
		neighbors = board.gen_neighbors(pt)
		mapped_neighbors = {neighbor: pt  for neighbor in neighbors}
		pass