import rivercrossingsolver as rcs from itertools import combinations game_players = "P F M D S" rcs.setPlayers(game_players) rcs.setdrivers(game_players) rcs.startLeft() rcs.setgoalStatus("", game_players) rcs.settimeLimit(30) rcs.settimeValues("P:1 F:3 M:6 D:8 S:12") rcs.setduplicateNode(True) rcs.solve("train")
import rivercrossingsolver as rcs from itertools import combinations game_players = "C1 C2 C3 M1 M2 M3" too_many_criminals = [] p = game_players.split() combos = [x for l in range(1,len(game_players)) for x in combinations(p,l)] for y in combos: m_count = "".join(y).count("M") c_count = "".join(y).count("C") if len(y) > 2 and m_count > 0 and c_count > m_count: too_many_criminals.append(list(y)) rules = " ".join(x for x in [",".join(x) for x in too_many_criminals]) # print rules # exit(0) rcs.setPlayers(game_players) rcs.setdrivers("C1 M1") rcs.setleftBankStatus("C1 C2 C3") rcs.setrightBankStatus("M1 M2 M3") rcs.setgoalStatus("M1 M2 M3", "C1 C2 C3") rcs.setinvalidBoat("") rcs.setinvalidBank(rules) rcs.setboatCapacity(2) rcs.solve()
import rivercrossingsolver as rcs from itertools import combinations game_players = "T1 T2 T3 T1B1 T1B2 T2B1" no_t1 = [] no_t2 = [] p = game_players.split() combos = [x for l in range(1, len(game_players)) for x in combinations(p, l)] for y in combos: if "T1" not in y and ("T1B1" in y or "T1B2" in y) and ( ("T2" in y and "T3" not in y) or ("T3" in y and "T2" not in y)): no_t1.append(list(y)) if "T2" not in y and "T2B1" in y and (("T1" in y and "T3" not in y) or ("T3" in y and "T1" not in y)): no_t2.append(list(y)) t1_rules = " ".join(x for x in [",".join(x) for x in no_t1]) t2_rules = " ".join(x for x in [",".join(x) for x in no_t2]) final_rules = t1_rules + " " + t2_rules rcs.setPlayers(game_players) rcs.setdrivers("T1 T2 T3") rcs.startLeft() rcs.setgoalStatus("", game_players) rcs.setinvalidBoat("") rcs.setinvalidBank(final_rules) rcs.setboatCapacity(2) rcs.solve()
for y in combos: if "D1" in y and "M1" not in y and "F1" not in y: rule_set.append(y) if "D2" in y and "M2" not in y and "F2" not in y: rule_set.append(y) if len(y) == 2: if "D1" in y and "F1" not in y: boat_rule_set.append(y) if "D2" in y and "F2" not in y: boat_rule_set.append(y) rule_set.append(["D1"]) rule_set.append(["D2"]) rules = " ".join(x for x in [",".join(x) for x in rule_set]) boat_rules = " ".join(x for x in [",".join(x) for x in boat_rule_set]) # for r in rule_set: # print r # exit(0) rcs.setPlayers(game_players) rcs.setdrivers("F1 F2") rcs.startLeft() rcs.setgoalStatus("", game_players) rcs.setinvalidBoat(boat_rules) rcs.setinvalidBank(rules) rcs.setboatCapacity(2) rcs.solve()
rule_set = [] boat_rule_set = [] p = game_players.split() combos = [x for l in range(1, len(game_players)) for x in combinations(p, l)] for y in combos: if "F" not in y and "DOG" in y and len(y) > 1: rule_set.append(y) if "S" not in y and "D" in y and ("R1" in y or "R2" in y): rule_set.append(y) if "D" not in y and "S" in y and ("SQ1" in y or "SQ2" in y): rule_set.append(y) rules = " ".join(x for x in [",".join(x) for x in rule_set]) # boat_rules = " ".join(x for x in [",".join(x) for x in boat_rule_set]) # for r in rule_set: # print r # exit(0) rcs.setPlayers(game_players) rcs.setdrivers("F S D") rcs.startLeft() rcs.setgoalStatus("", game_players) rcs.setinvalidBoat("") rcs.setinvalidBank(rules) rcs.setboatCapacity(2) rcs.solve()
rule_set.append(y) # No child on raft with other mother, but other child OK brule_set = [ ["M1", "D2"], ["M1", "S2"], ["M2", "S1"], ["M2", "D1"] ] # m_count = "".join(y).count("M") # c_count = "".join(y).count("C") # if len(y) > 2 and m_count > 0 and c_count > m_count: # too_many_criminals.append(list(y)) rules = " ".join(x for x in [",".join(x) for x in rule_set]) brules = " ".join(x for x in [",".join(x) for x in brule_set]) # print rules # exit(0) rcs.setPlayers(game_players) rcs.setdrivers("M1 S1") rcs.startLeft() rcs.setgoalStatus("", game_players) rcs.setinvalidBoat(brules) rcs.setinvalidBank(rules) rcs.setboatCapacity(2) rcs.solve()
boat_rule_set = [] p = game_players.split() combos = [x for l in range(1, len(game_players)) for x in combinations(p, l)] # for y in combos: rule_set = [('R1', '5'), ('R1', '8'), ('R2', '8'), ('R1', '3', '5'), ('R1', '3', '8'), ('R1', '5', '8'), ('R2', '3', '5'), ('R2', '3', '8'), ('R2', '5', '8'), ('R3', '3', '8'), ('R3', '5', '8'), ('R1', 'R2', '3', '8'), ('R1', 'R2', '5', '8'), ('R1', 'R3', '5', '8'), ('R1', '3', '5', '8'), ('R2', '3', '5', '8'), ('R3', '3', '5', '8'), ('R1', 'R2', '3', '5', '8'), ('R1', 'R3', '3', '5', '8'), ('R2', 'R3', '3', '5', '8')] rules = " ".join(x for x in [",".join(x) for x in rule_set]) # boat_rules = " ".join(x for x in [",".join(x) for x in boat_rule_set]) # for r in rule_set: # print r # exit(0) rcs.setPlayers(game_players) rcs.setdrivers("R1 R2 R3") rcs.startLeft() rcs.setgoalStatus("", game_players) rcs.setinvalidBoat("") rcs.setinvalidBank(rules) rcs.setboatCapacity(2) rcs.solve()
import rivercrossingsolver as rcs # Father = 90 # Mother = 80 # Boy = 60 # Girl = 40 # Bag = 20 game_players = "F M B G A" rcs.setPlayers(game_players) rcs.setdrivers("F M B G") rcs.startLeft() rcs.setgoalStatus("", game_players) rcs.setinvalidBoat("F,M F,B F,G F,A M,B M,G") rcs.setinvalidBank("") rcs.setboatCapacity(2) rcs.solve()