Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Home(Problem):
- def __init__(self, initial, house):
- super().__init__(initial, house)
- def goal_test(self, state):
- man_pos= state[0]
- return man_pos == self.goal
- def successor(self, state):
- succ = {}
- man_pos= state[0]
- obstacles= state[1]
- #gi pretvorame vo lista za da mozi da gi menuvame vrednostite
- ob1= list(obstacles[0])
- ob2= list(obstacles[1])
- if ob1[2]=='g':
- if ob1[1]==5:
- ob1[2]='d'
- ob1[1]=ob1[1]-1
- ob2[2]='g'
- ob2[1]=ob2[1]+1
- else:
- ob1[1]=ob1[1]+1
- ob2[1]=ob2[1]-1
- if ob1[2]=='d':
- if ob1[1]==0:
- ob1[2]='g'
- ob1[1]=ob1[1]+1
- ob2[2]='d'
- ob2[1]=ob2[1]-1
- else:
- ob1[1]=ob1[1]-1
- ob2[1]=ob2[1]+1
- #gi vrakjame vo tuples za da mozi kako takvi da gi primat site pre definirani funkcii
- if man_pos[0]+1<8 and (man_pos[0]+1!=ob1[0] or man_pos[1]!=ob1[1]) and (man_pos[0]+1!=ob2[0] or man_pos[1]!=ob2[1]):
- succ["Desno"]= ((man_pos[0]+1,man_pos[1]),(tuple(ob1),tuple(ob2)))
- if man_pos[0]-1>0 and (man_pos[0]-1!=ob1[0] or man_pos[1]!=ob1[1]) and (man_pos[0]-1!=ob2[0] or man_pos[1]!=ob2[1]):
- succ["Levo"]= ((man_pos[0]-1,man_pos[1]),(tuple(ob1),tuple(ob2)))
- if man_pos[1]+1<8 and (man_pos[0]!=ob1[0] or man_pos[1]+1<ob1[1]) and (man_pos[0]!=ob2[0] or man_pos[1]+1<=ob2[1]):
- succ["Gore"]= ((man_pos[0],man_pos[1]+1),(tuple(ob1),tuple(ob2)))
- if man_pos[1]-1>0 and (man_pos[0]!=ob1[0] or man_pos[1]-1>ob1[1]) and (man_pos[0]!=ob2[0] or man_pos[1]-1>ob2[1]):
- succ["Dolu"]= ((man_pos[0],man_pos[1]-1),(tuple(ob1),tuple(ob2)))
- if (man_pos[0]!=ob1[0] or man_pos[1]!=ob1[1]) and (man_pos[0]!=ob2[0] or man_pos[1]!=ob2[1]):
- succ["Stoj"]= ((man_pos[0],man_pos[1]),(tuple(ob1),tuple(ob2)))
- return succ
- def actions(self, state):
- return self.successor(state).keys()
- def result(self, state, action):
- return self.successor(state)[action]
- if __name__ == '__main__':
- #man_pos = (2,4)
- #house_pos = (4,4)
- #obstacles = ((3,5,'d'),(5,0,'g'))
- man_pos_x,man_pos_y = input().split(',')
- man_pos_x= int(man_pos_x)
- man_pos_y= int(man_pos_y)
- house_pos_x,house_pos_y = input().split(',')
- house_pos_x= int(house_pos_x)
- house_pos_y= int(house_pos_y)
- obs1_x,obs1_y,obs1_z = input().split(',')
- obs1_x= int(obs1_x)
- obs1_y= int(obs1_y)
- obs2_x,obs2_y,obs2_z = input().split(',')
- obs2_x= int(obs2_x)
- obs2_y= int(obs2_y)
- man_pos = []
- man_pos.append(man_pos_x)
- man_pos.append(man_pos_y)
- man_pos=tuple(man_pos)
- house_pos = []
- house_pos.append(house_pos_x)
- house_pos.append(house_pos_y)
- house_pos=tuple(house_pos)
- obstacles = []
- obstacle1 = []
- obstacle1.append(obs1_x)
- obstacle1.append(obs1_y)
- obstacle1.append(obs1_z)
- obstacle1=tuple(obstacle1)
- obstacle2 = []
- obstacle2.append(obs2_x)
- obstacle2.append(obs2_y)
- obstacle2.append(obs2_z)
- obstacle2=tuple(obstacle2)
- obstacles.append(obstacle1)
- obstacles.append(obstacle2)
- obstacles=tuple(obstacles)
- home= Home((man_pos,obstacles),house_pos)
- answer= breadth_first_graph_search(home)
- if answer is None:
- print("None")
- else:
- print(answer.solution())
- """
- 3,1
- 5,1
- 3,5,g
- 4,0,d
- za ovaj test case mi vadi Desno, Desno, a treba Stoj,Desno,Desno
- a za drugiov so e slicen af vadi taman Desno, Desno
- 3,1
- 5,1
- 4,0,d
- 3,5,g
- taka so imam mala greska so nemozam da ja detektiram ama gore dolu e super resenie auf
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement