Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import search
- class CannibalAsi(search.Problem):
- def actions(self, state):
- actions = []
- #if (state["vasak"]["m"] + state["vasak"]["c"]) > 0:
- if (state["vasak"]["c"] - 2) <= state["vasak"]["m"]):
- if ((state["parem"]["c"] + 2) <= state["parem"]["m"] or state["parem"]["m"] == 0):
- #action on list(cannVasak, missVasak, cannParem, missParem)
- actions.append(list(-2, 0, 2, 0))
- if ((state["parem"]["m"] + 2) >= state["parem"]["c"]):
- actions.append(list(0, -2, 0, 2))
- if (state["vasak"]["c"] - 1) <= state["vasak"]["m"]):
- if ((state["parem"]["c"] + 1) <= state["parem"]["m"] or state["parem"]["m"] == 0):
- actions.append(list(-1, 0, 1, 0))
- if ((state["parem"]["m"] + 1) >= state["parem"]["c"]):
- actions.append(list(0, -1, 0, 1))
- return actions
- def result(self, state, action):
- state["vasak"]["c"] += action[0]
- state["vasak"]["m"] += action[1]
- state["parem"]["c"] += action[2]
- state["parem"]["m"] += action[3]
- print(state)
- return state
- def goal_test(self, state):
- if state["parem"]["m"] == 3 and state["parem"]["c"] == 3:
- return True
- else:
- return False
- inistate = {
- "vasak": {"m": 3, "c": 3},
- "parem": {"m": 0, "c": 0}
- }
- problem = CannibalAsi(inistate)
- asi = search.breadth_first_search(problem)
- print(asi)
- print(asi.solution())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement