python_exercises/thinkcspy/Chapter-16-Exercises/Problem11_crossings.py

39 lines
1.3 KiB
Python
Raw Normal View History

# Runestone.Academy thinkcspy course
# Chapter 16
# Problem 11
2023-12-21 04:30:37 -07:00
def cross(rounds, bank1, boat, bank2):
2023-12-21 04:24:56 -07:00
if bank1["Missionaries"] + bank1["Cannibals"] == 0 and boat["Missionaries"] + boat["Cannibals"] == 0:
return "Journey complete"
elif bank1["Missionaries"] + bank1["Cannibals"] > 0 and boat["Missionaries"] + boat["Cannibals"] < 2:
if bank1["Missionaries"] - 1 >= bank1["Cannibals"]:
bank1["Missionaries"] -= 1
boat["Missionaries"] += 1
2023-12-21 04:30:37 -07:00
print(rounds, bank1, boat, bank2)
2023-12-21 04:24:56 -07:00
elif bank1["Cannibals"] > 0:
bank1["Cannibals"] -= 1
boat["Cannibals"] += 1
2023-12-21 04:30:37 -07:00
print(rounds, bank1, boat, bank2)
2023-12-21 04:24:56 -07:00
else:
if boat["Cannibals"] >= 1 and bank2["Missionaries"] >= bank2["Cannibals"] + 1:
bank2["Cannibals"] += 1
boat["Cannibals"] -= 1
elif boat["Missionaries"] >= 1:
bank2["Missionaries"] += 1
boat["Missionaries"] -= 1
2023-12-21 04:30:37 -07:00
print(rounds, bank1, boat, bank2)
rounds += 1
2023-12-21 04:24:56 -07:00
2024-02-29 14:41:20 -07:00
return cross(rounds, bank1, boat, bank2)
2023-12-21 04:24:56 -07:00
def main():
bank1 = {"name": "B1", "Missionaries": 3, "Cannibals": 3}
bank2 = {"name": "B2", "Missionaries": 0, "Cannibals": 0}
boat = {"name": "boat", "Missionaries": 0, "Cannibals": 0}
2023-12-21 04:30:37 -07:00
return cross(1, bank1, boat, bank2)
2023-12-21 04:24:56 -07:00
print(main())