From fb0448853241aa73eaa62094590f06da8d0743a3 Mon Sep 17 00:00:00 2001 From: lolabird Date: Thu, 21 Dec 2023 04:24:56 -0700 Subject: [PATCH] Add crossings exercise --- thinkcspy/Chapter-16-Exercises/crossings.py | 34 +++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 thinkcspy/Chapter-16-Exercises/crossings.py diff --git a/thinkcspy/Chapter-16-Exercises/crossings.py b/thinkcspy/Chapter-16-Exercises/crossings.py new file mode 100644 index 0000000..1450492 --- /dev/null +++ b/thinkcspy/Chapter-16-Exercises/crossings.py @@ -0,0 +1,34 @@ +def cross(bank1, boat, bank2): + 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 + print(bank1, boat, bank2) + elif bank1["Cannibals"] > 0: + bank1["Cannibals"] -= 1 + boat["Cannibals"] += 1 + print(bank1, boat, bank2) + + 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 + print(bank1, boat, bank2) + + cross(bank1, boat, bank2) + + +def main(): + bank1 = {"name": "B1", "Missionaries": 3, "Cannibals": 3} + bank2 = {"name": "B2", "Missionaries": 0, "Cannibals": 0} + boat = {"name": "boat", "Missionaries": 0, "Cannibals": 0} + + return cross(bank1, boat, bank2) + +print(main()) \ No newline at end of file