Advertisement
dzocesrce

[VI] Homecoming

Jan 22nd, 2025
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.81 KB | None | 0 0
  1. class Home(Problem):
  2.     def __init__(self, initial, house):
  3.         super().__init__(initial, house)
  4.  
  5.     def goal_test(self, state):
  6.         man_pos= state[0]
  7.         return man_pos == self.goal
  8.  
  9.     def successor(self, state):
  10.         succ = {}
  11.         man_pos= state[0]
  12.         obstacles= state[1]
  13.         #gi pretvorame vo lista za da mozi da gi menuvame vrednostite
  14.         ob1= list(obstacles[0])
  15.         ob2= list(obstacles[1])
  16.         if ob1[2]=='g':
  17.             if ob1[1]==5:
  18.                 ob1[2]='d'
  19.                 ob1[1]=ob1[1]-1
  20.                 ob2[2]='g'
  21.                 ob2[1]=ob2[1]+1
  22.             else:
  23.                 ob1[1]=ob1[1]+1
  24.                 ob2[1]=ob2[1]-1
  25.  
  26.         if ob1[2]=='d':
  27.             if ob1[1]==0:
  28.                 ob1[2]='g'
  29.                 ob1[1]=ob1[1]+1
  30.                 ob2[2]='d'
  31.                 ob2[1]=ob2[1]-1
  32.             else:
  33.                 ob1[1]=ob1[1]-1
  34.                 ob2[1]=ob2[1]+1
  35.         #gi vrakjame vo tuples za da mozi kako takvi da gi primat site pre definirani funkcii
  36.         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]):
  37.             succ["Desno"]= ((man_pos[0]+1,man_pos[1]),(tuple(ob1),tuple(ob2)))
  38.  
  39.         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]):
  40.             succ["Levo"]= ((man_pos[0]-1,man_pos[1]),(tuple(ob1),tuple(ob2)))
  41.  
  42.         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]):
  43.             succ["Gore"]= ((man_pos[0],man_pos[1]+1),(tuple(ob1),tuple(ob2)))
  44.  
  45.         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]):
  46.             succ["Dolu"]= ((man_pos[0],man_pos[1]-1),(tuple(ob1),tuple(ob2)))
  47.  
  48.         if (man_pos[0]!=ob1[0] or man_pos[1]!=ob1[1]) and (man_pos[0]!=ob2[0] or man_pos[1]!=ob2[1]):
  49.             succ["Stoj"]= ((man_pos[0],man_pos[1]),(tuple(ob1),tuple(ob2)))
  50.  
  51.         return succ
  52.     def actions(self, state):
  53.         return self.successor(state).keys()
  54.  
  55.     def result(self, state, action):
  56.         return self.successor(state)[action]
  57.  
  58.  
  59. if __name__ == '__main__':
  60.  
  61.     #man_pos = (2,4)
  62.     #house_pos = (4,4)
  63.     #obstacles = ((3,5,'d'),(5,0,'g'))
  64.  
  65.     man_pos_x,man_pos_y = input().split(',')
  66.     man_pos_x= int(man_pos_x)
  67.     man_pos_y= int(man_pos_y)
  68.  
  69.  
  70.     house_pos_x,house_pos_y = input().split(',')
  71.     house_pos_x= int(house_pos_x)
  72.     house_pos_y= int(house_pos_y)
  73.  
  74.     obs1_x,obs1_y,obs1_z = input().split(',')
  75.     obs1_x= int(obs1_x)
  76.     obs1_y= int(obs1_y)
  77.  
  78.     obs2_x,obs2_y,obs2_z = input().split(',')
  79.     obs2_x= int(obs2_x)
  80.     obs2_y= int(obs2_y)
  81.     man_pos = []
  82.  
  83.     man_pos.append(man_pos_x)
  84.     man_pos.append(man_pos_y)
  85.     man_pos=tuple(man_pos)
  86.  
  87.     house_pos = []
  88.     house_pos.append(house_pos_x)
  89.     house_pos.append(house_pos_y)
  90.     house_pos=tuple(house_pos)
  91.  
  92.     obstacles = []
  93.     obstacle1 = []
  94.     obstacle1.append(obs1_x)
  95.     obstacle1.append(obs1_y)
  96.     obstacle1.append(obs1_z)
  97.     obstacle1=tuple(obstacle1)
  98.     obstacle2 = []
  99.     obstacle2.append(obs2_x)
  100.     obstacle2.append(obs2_y)
  101.     obstacle2.append(obs2_z)
  102.     obstacle2=tuple(obstacle2)
  103.  
  104.     obstacles.append(obstacle1)
  105.     obstacles.append(obstacle2)
  106.     obstacles=tuple(obstacles)
  107.  
  108.     home= Home((man_pos,obstacles),house_pos)
  109.  
  110.     answer= breadth_first_graph_search(home)
  111.  
  112.     if answer is None:
  113.         print("None")
  114.     else:
  115.         print(answer.solution())
  116.  
  117. """
  118. 3,1
  119. 5,1
  120. 3,5,g
  121. 4,0,d
  122. za ovaj test case mi vadi Desno, Desno, a treba Stoj,Desno,Desno
  123. a za drugiov so e slicen af vadi taman Desno, Desno
  124. 3,1
  125. 5,1
  126. 4,0,d
  127. 3,5,g
  128. 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