Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from utils import *
- import copy
- class Problem:
- def __init__(self, n):
- self.n = n
- self.initial = [[0] * n for i in range(n)] # matrica n x n (inicijalizovana na nule)
- def is_valid(self, state, tI, tJ):
- # da li se neka kraljica nalazi u koloni
- for i in range(self.n):
- if i != tI and state[i][tJ] == 1:
- return False
- # da li se neka kraljica nalazi u redu
- for j in range(self.n):
- if j != tJ and state[tI][j] == 1:
- return False
- # da li se nalazi na dijagonali gore-levo
- i = tI
- j = tJ
- while i > 0 and j > 0:
- i -= 1
- j -= 1
- if state[i][j] == 1:
- return False
- # da li se nalazi na dijagonali dole-desno
- i = tI
- j = tJ
- while i < self.n - 1 and j < self.n - 1:
- i += 1
- j += 1
- if state[i][j] == 1:
- return False
- # da li se nalazi na dijagonali gore-desno
- i = tI
- j = tJ
- while i > 0 and j < self.n - 1:
- i -= 1
- j += 1
- if state[i][j] == 1:
- return False
- # da li se nalazi na dijagonali dole-levo
- i = tI
- j = tJ
- while i < self.n - 1 and j > 0:
- i += 1
- j -= 1
- if state[i][j] == 1:
- return False
- return True
- def actions(self, state):
- next_states = []
- for i in range(self.n):
- for j in range(self.n):
- if state[i][j] == 0:
- new_state = copy.deepcopy(state)
- new_state[i][j] = 1
- if self.is_valid(new_state, i, j):
- next_states.append(new_state)
- return next_states
- def goal_test(self, state):
- queens_number = 0
- for i in range(self.n):
- for j in range(self.n):
- if state[i][j] == 1:
- queens_number += 1
- if queens_number == self.n:
- return True
- else:
- return False
- # NODE KLASA
- def print_matrix(matrix):
- n = len(matrix)
- for i in range(n):
- for j in range(n):
- if matrix[i][j] == 1:
- print (" K ", end = "")
- else:
- print (" _ ", end = "")
- print()
- def breadth_first_search(problem):
- return graph_search(problem, FIFOQueue())
- def depth_first_seach(problem):
- return graph_search(problem, [])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement