เชฎเชพเชฐเชพ เชฎเชคเซ, เชเชจเซเชเชฐเชจเซเชเชจเชพ เชฐเชถเชฟเชฏเชจ-เชญเชพเชทเชพเชจเชพ เชเซเชทเซเชคเซเชฐเชฎเชพเช, เชเชชเชเชพเชฐเชฟเช เชเชเชพเชธเชฃเซเชจเซ เชตเชฟเชทเชฏ เชชเชฐเซเชฏเชพเชชเซเชค เชฐเซเชคเซ เชเชตเชฐเซ เชฒเซเชตเชพเชฎเชพเช เชเชตเซเชฏเซ เชจเชฅเซ, เช เชจเซ เชเชพเชธ เชเชฐเซเชจเซ เชธเชฐเชณ เช เชจเซ เชธเซเชชเชทเซเช เชเชฆเชพเชนเชฐเชฃเซเชจเซ เช เชญเชพเชต เชเซ.
เชนเซเช เชตเชฟเชฆเซเชถเซ เชธเซเชคเซเชฐเซเชคเชฎเชพเชเชฅเซ เชเช เชเชฆเชพเชนเชฐเชฃ เชเชชเซเชถ, เช เชจเซ เชจเชฆเซเชจเซ เชฌเซเชเซ เชฌเชพเชเซ เชตเชฐเซ, เชฌเชเชฐเซ เช เชจเซ เชเซเชฌเซเชจเซ เชชเชพเชฐ เชเชฐเชตเชพเชจเซ เชเชพเชฃเซเชคเซ เชธเชฎเชธเซเชฏเชพ เชฎเชพเชเซ เชฎเชพเชฐเซ เชชเซเชคเชพเชจเซ เชเชเซเชฒ เชเชฎเซเชฐเซเชถ.
เชชเชฐเชเชคเซ เชชเซเชฐเชฅเชฎ, เชนเซเช เชเซเชเชเชฎเชพเช เชตเชฐเซเชฃเชจ เชเชฐเซเชถ เชเซ เชเชชเชเชพเชฐเชฟเช เชเชเชพเชธเชฃเซ เชถเซเช เชเซ เช เชจเซ เชถเชพ เชฎเชพเชเซ เชคเซเชจเซ เชเชฐเซเชฐ เชเซ.
เชธเชพเชฎเชพเชจเซเชฏ เชฐเซเชคเซ เชเชชเชเชพเชฐเชฟเช เชเชเชพเชธเชฃเซเชจเซ เช เชฐเซเชฅ เชฅเชพเชฏ เชเซ เชเช เชชเซเชฐเซเชเซเชฐเชพเชฎ เช เชฅเชตเชพ เชฌเซเชเชพเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เช เชฒเซเชเซเชฐเชฟเชงเชฎ เชคเชชเชพเชธเชตเซเช.
เชชเซเชฐเซเชเซเชฐเชพเชฎ เช เชชเซเชเซเชทเชพ เชฎเซเชเชฌ เชตเชฐเซเชคเซ เชคเซเชจเซ เชเชพเชคเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ เช เชจเซ เชคเซเชจเซ เชธเซเชฐเชเซเชทเชพเชจเซ เชเชพเชคเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ เช เชเชฐเซเชฐเซ เชเซ.
เชเชชเชเชพเชฐเชฟเช เชเชเชพเชธเชฃเซ เช เชจเชฌเชณเชพเชเช เชถเซเชงเชตเชพ เช
เชจเซ เชฆเซเชฐ เชเชฐเชตเชพ เชฎเชพเชเซเชจเซเช เชธเซเชฅเซ เชถเชเซเชคเชฟเชถเชพเชณเซ เชฎเชพเชงเซเชฏเชฎ เชเซ: เชคเซ เชคเชฎเชจเซ เชชเซเชฐเซเชเซเชฐเชพเชฎเชฎเชพเช เช
เชธเซเชคเชฟเชคเซเชตเชฎเชพเช เชฐเชนเซเชฒเชพ เชคเชฎเชพเชฎ เชเชฟเชฆเซเชฐเซ เช
เชจเซ เชฌเชเซเชธ เชถเซเชงเชตเชพ เช
เชฅเชตเชพ เชธเชพเชฌเชฟเชค เชเชฐเชตเชพ เชฆเซ เชเซ เชเซ เชคเซเช เช
เชธเซเชคเชฟเชคเซเชตเชฎเชพเช เชจเชฅเซ.
เชคเซ เชจเซเชเชงเชตเซเช เชฏเซเชเซเชฏ เชเซ เชเซ เชเซเชเชฒเชพเช เชเชฟเชธเซเชธเชพเชเชฎเชพเช เช เช
เชถเชเซเชฏ เชเซ, เชเซเชฎ เชเซ 8 เชเซเชฐเชธเชจเซ เชฌเซเชฐเซเชกเชจเซ เชชเชนเซเชณเชพเช เชธเชพเชฅเซ 1000 เชฐเชพเชฃเซเชเชจเซ เชธเชฎเชธเซเชฏเชพเชฎเชพเช: เชคเซ เชฌเชงเซเช เช
เชฒเซเชเซเชฐเชฟเชงเชฎเชฟเช เชเชเชฟเชฒเชคเชพ เช
เชฅเชตเชพ เชฌเชเชง เชฅเชตเชพเชจเซ เชธเชฎเชธเซเชฏเชพ เชชเชฐ เชเชตเซ เชเซ.
เชเซ เชเซ, เชเซเชเชชเชฃ เชเชฟเชธเซเชธเชพเชฎเชพเช, เชคเซเชฐเชฃเชฎเชพเชเชฅเซ เชเช เชเชตเชพเชฌ เชชเซเชฐเชพเชชเซเชค เชฅเชถเซ: เชชเซเชฐเซเชเซเชฐเชพเชฎ เชธเชพเชเซ เชเซ, เชเซเชเซ เชเซ เช เชฅเชตเชพ เชเชตเชพเชฌเชจเซ เชเชฃเชคเชฐเซ เชเชฐเชตเซ เชถเชเซเชฏ เชจเชฅเซ.
เชเซ เชเซเช เชเชตเชพเชฌ เชฎเซเชณเชตเชตเซ เช เชถเชเซเชฏ เชนเซเชฏ, เชคเซ เชเซเชเซเชเชธ เชนเชพ เช เชฅเชตเชพ เชจเชพ เชเชตเชพเชฌ เชฎเซเชณเชตเชตเชพ เชฎเชพเชเซ, เชชเซเชฐเซเชเซเชฐเชพเชฎเชจเชพ เช เชธเซเชชเชทเซเช เชญเชพเชเซเชจเซเช เชชเซเชจเชเชเชพเชฐเซเชฏ เชเชฐเชตเซเช, เชคเซเชฎเชจเซ เช เชฒเซเชเซเชฐเชฟเชงเชฎเชฟเช เชเชเชฟเชฒเชคเชพ เชเชเชพเชกเชตเซ เชเชฃเซเชตเชพเชฐ เชถเชเซเชฏ เชเซ.
เช เชจเซ เชเชชเชเชพเชฐเชฟเช เชเชเชพเชธเชฃเซเชจเซ เชเชชเชฏเซเช เชเชฐเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชตเชฟเชจเซเชกเซเช เชเชฐเซเชจเชฒ เช เชจเซ เชกเชพเชฐเซเชชเชพ เชกเซเชฐเซเชจ เชเชชเชฐเซเชเชฟเชเช เชธเชฟเชธเซเชเชฎเชฎเชพเช, เชฎเชนเชคเซเชคเชฎ เชธเซเชคเชฐเชจเซ เชธเซเชฐเชเซเชทเชพเชจเซ เชเชพเชคเชฐเซ เชเชฐเชตเชพ เชฎเชพเชเซ.
เช เชฎเซ Z3Prover เชจเซ เชเชชเชฏเซเช เชเชฐเซเชถเซเช, เชเซ เชธเซเชตเชฏเชเชธเชเชเชพเชฒเชฟเชค เชชเซเชฐเชฎเซเชฏ เชธเชพเชฌเชฟเชค เชเชฐเชตเชพ เช เชจเซ เชธเชฎเซเชเชฐเชฃ เชเชเซเชฒเชตเชพ เชฎเชพเชเซเชจเซเช เชเช เชเซเชฌ เช เชถเชเซเชคเชฟเชถเชพเชณเซ เชธเชพเชงเชจ เชเซ.
เชตเชงเซเชฎเชพเช, Z3 เชธเชฎเซเชเชฐเชฃเซ เชเชเซเชฒเซ เชเซ, เช
เชจเซ เชเชก เชฌเชณเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชคเซเชฎเชจเชพ เชฎเซเชฒเซเชฏเซเชจเซ เชชเชธเชเชฆ เชเชฐเชคเซเช เชจเชฅเซ.
เชเชจเซ เช
เชฐเซเชฅ เช เชเซ เชเซ เชเชจเชชเซเช เชตเชฟเชเชฒเซเชชเซเชจเชพ 10^100 เชธเชเชฏเซเชเชจเซ เชนเซเชฏ เชคเซเชตเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช เชชเชฃ เชคเซ เชเชตเชพเชฌ เชถเซเชงเชตเชพเชฎเชพเช เชธเชเซเชทเชฎ เชเซ.
เชชเชฐเชเชคเซ เช เชชเซเชฐเซเชฃเชพเชเช เชชเซเชฐเชเชพเชฐเชจเซ เชฒเชเชญเช เชเช เชกเชเชจ เชเชจเชชเซเช เชฆเชฒเซเชฒเซ เชเซ, เช เชจเซ เช เชเชฃเซเชตเชพเชฐ เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช เชเซเชตเชพ เชฎเชณเซ เชเซ.
8 เชฐเชพเชฃเซเช เชตเชฟเชถเซเชจเซ เชธเชฎเชธเซเชฏเชพ (เช
เชเชเซเชฐเซเชเซเชฎเชพเชเชฅเซ เชฒเซเชตเชพเชฎเชพเช เชเชตเซ เชเซ
# We know each queen must be in a different row.
# So, we represent each queen by a single integer: the column position
Q = [ Int('Q_%i' % (i + 1)) for i in range(8) ]
# Each queen is in a column {1, ... 8 }
val_c = [ And(1 <= Q[i], Q[i] <= 8) for i in range(8) ]
# At most one queen per column
col_c = [ Distinct(Q) ]
# Diagonal constraint
diag_c = [ If(i == j,
True,
And(Q[i] - Q[j] != i - j, Q[i] - Q[j] != j - i))
for i in range(8) for j in range(i) ]
solve(val_c + col_c + diag_c)
Z3 เชเชฒเชพเชตเชคเชพ, เช เชฎเชจเซ เชเชเซเชฒ เชฎเชณเซ เชเซ:
[Q_5 = 1,
Q_8 = 7,
Q_3 = 8,
Q_2 = 2,
Q_6 = 3,
Q_4 = 6,
Q_7 = 5,
Q_1 = 4]
เชฐเชพเชฃเซเชจเซ เชธเชฎเชธเซเชฏเชพ เช เชชเซเชฐเซเชเซเชฐเชพเชฎ เชธเชพเชฅเซ เชธเชฐเชเชพเชตเซ เชถเชเชพเชฏ เชเซ เชเซ 8 เชฐเชพเชฃเซเชเชจเชพ เชเซเชเชฐเซเชกเชฟเชจเซเชเซเชธ เชเชจเชชเซเช เชคเชฐเซเชเซ เชฒเซ เชเซ เช เชจเซ เชฐเชพเชฃเซเช เชเชเชฌเซเชเชพเชจเซ เชนเชฐเชพเชตเซ เชเซ เชเซ เชเซเชฎ เชคเซเชจเซ เชเชตเชพเชฌ เชเชชเซ เชเซ.
เชเซ เชเชชเชฃเซ เชเชชเชเชพเชฐเชฟเช เชเชเชพเชธเชฃเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชตเชพ เชชเซเชฐเซเชเซเชฐเชพเชฎเชจเซ เชนเชฒ เชเชฐเซเช, เชคเซ เชธเชฎเชธเซเชฏเชพเชจเซ เชคเซเชฒเชจเชพเชฎเชพเช, เชเชชเชฃเซ เชชเซเชฐเซเชเซเชฐเชพเชฎ เชเซเชกเชจเซ เชธเชฎเซเชเชฐเชฃเชฎเชพเช เชฐเซเชชเชพเชเชคเชฐเชฟเชค เชเชฐเชตเชพเชจเชพ เชธเซเชตเชฐเซเชชเชฎเชพเช เชเช เชตเชงเซ เชชเชเชฒเซเช เชญเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ: เชคเซ เชเชตเชถเซเชฏเชเชชเชฃเซ เชเชชเชฃเชพ เชเซเชตเซเช เช เชนเชถเซ ( เช เชฒเชฌเชคเซเชค, เชเซ เชชเซเชฐเซเชเซเชฐเชพเชฎ เชฏเซเชเซเชฏ เชฐเซเชคเซ เชฒเชเชพเชฏเซเชฒ เชนเซเชฏ เชคเซ).
เชจเชฌเชณเชพเชเช เชถเซเชงเชตเชพเชจเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช เชชเชฃ เชฒเชเชญเช เชเชตเซเช เช เชฅเชถเซ: เช เชฎเซ เชซเชเซเชค เช เชฎเชจเซ เชเซเชเชคเซ เชเชเชเชชเซเช เชถเชฐเชคเซ เชธเซเช เชเชฐเซเช เชเซเช, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเชกเชฎเชฟเชจ เชชเชพเชธเชตเชฐเซเชก, เชธเซเชคเซเชฐเซเชค เช เชฅเชตเชพ เชกเชฟเชเชฎเซเชชเชพเชเชฒ เชเซเชกเชจเซ เชตเซเชฐเชฟเชซเชฟเชเซเชถเชจ เชธเชพเชฅเซ เชธเซเชธเชเชเชค เชธเชฎเซเชเชฐเชฃเซเชฎเชพเช เชฐเซเชชเชพเชเชคเชฐเชฟเชค เชเชฐเซเช เชเซเช เช เชจเซ เชชเชเซ เชเชฏเชพ เชกเซเชเชพเชจเซ เชเชตเชพเชฌ เชฎเซเชณเชตเซเช เชเซเช. เชฒเชเซเชทเซเชฏ เชนเชพเชเชธเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ เชเชจเชชเซเช เชคเชฐเซเชเซ เชธเชชเซเชฒเชพเชฏ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ.
เชฎเชพเชฐเชพ เชฎเชคเซ, เชตเชฐเซ, เชฌเชเชฐเซ เช เชจเซ เชเซเชฌเซ เชตเชฟเชถเซเชจเซ เชธเชฎเชธเซเชฏเชพ เชตเชงเซ เชฐเชธเชชเซเชฐเชฆ เชเซ, เชเชพเชฐเชฃ เชเซ เชคเซเชจเซ เชนเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ เชชเชนเซเชฒเชพเชฅเซ เช เชเชฃเชพ (7) เชชเชเชฒเชพเชเชจเซ เชเชฐเซเชฐ เชเซ.
เชเซ เชฐเชพเชฃเซเชจเซ เชธเชฎเชธเซเชฏเชพ เช เชเซเชธ เชธเชพเชฅเซ เชคเซเชฒเชจเชพเชคเซเชฎเช เชเซ เชเซ เชเซเชฏเชพเช เชคเชฎเซ เชเช เช GET เช เชฅเชตเชพ POST เชตเชฟเชจเชเชคเซเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชธเชฐเซเชตเชฐเชจเซ เชเซเชธเซ เชถเชเซ เชเซ, เชคเซ เชตเชฐเซ, เชฌเชเชฐเซ เช เชจเซ เชเซเชฌเซ เชตเชงเซ เชเชเชฟเชฒ เช เชจเซ เชตเซเชฏเชพเชชเช เชถเซเชฐเซเชฃเซเชฎเชพเชเชฅเซ เชเช เชเชฆเชพเชนเชฐเชฃ เชฆเชฐเซเชถเชพเชตเซ เชเซ, เชเซเชฎเชพเช เชซเชเซเชค เชฒเชเซเชทเซเชฏ เชชเซเชฐเชพเชชเซเชค เชเชฐเซ เชถเชเชพเชฏ เชเซ. เช เชจเซเช เชตเชฟเชจเชเชคเซเช เชฆเซเชตเชพเชฐเชพ.
เช เชคเซเชฒเชจเชพเชคเซเชฎเช เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเชตเซ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ เชธเชพเชฅเซ เชเซเชฏเชพเช เชคเชฎเชพเชฐเซ SQL เชเชจเซเชเซเชเซเชถเชจ เชถเซเชงเชตเชพเชจเซ เชเชฐเซเชฐ เชนเซเชฏ, เชคเซเชจเชพ เชฆเซเชตเชพเชฐเชพ เชซเชพเชเชฒ เชฒเชเซ, เชชเชเซ เชคเชฎเชพเชฐเชพ เช เชงเชฟเชเชพเชฐเซเชจเซ เชเชจเซเชจเชค เชเชฐเซ เช เชจเซ เชฎเชพเชคเซเชฐ เชคเซเชฏเชพเชฐเซ เช เชชเชพเชธเชตเชฐเซเชก เชฎเซเชณเชตเซ.
เชธเชฎเชธเซเชฏเชพเชจเซ เชถเชฐเชคเซ เช เชจเซ เชคเซเชจเชพ เชเชเซเชฒเชเซเชกเซเชคเชจเซ เชตเชฐเซ, เชฌเชเชฐเซ เช เชจเซ เชเซเชฌเซเชจเซ เชจเชฆเซ เชชเชพเชฐ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชเซเชกเซเชค เชชเชพเชธเซ เชเช เชฌเซเช เชเซ เชเซเชฎเชพเช เชเซเชกเซเชค เชชเซเชคเซ เชธเชฟเชตเชพเชฏ เชฎเชพเชคเซเชฐ เชเช เชตเชธเซเชคเซเชจเซ เชธเชฎเชพเชตเซ เชถเชเซ เชเซ. เชตเชฐเซ เชฌเชเชฐเซเชจเซ เชเชพเช เชเชถเซ เช เชจเซ เชเซ เชเซเชกเซเชค เชคเซเชฎเชจเซ เชงเซเชฏเชพเชจ เชตเชฟเชจเชพ เชเซเชกเซ เชฆเซเชถเซ เชคเซ เชฌเชเชฐเซ เชเซเชฌเซ เชเชพเชถเซ.
เชเชเซเชฒ เช เชเซ เชเซ เชชเชเชฒเซเช 4 เชฎเชพเช เชเซเชกเซเชคเซ เชฌเชเชฐเซเชจเซ เชชเชพเชเซ เชฒเซเชตเซ เชชเชกเชถเซ.
เชนเชตเซ เชเชพเชฒเซ เชคเซเชจเซ เชชเซเชฐเซเชเซเชฐเชพเชฎเซเชเชฟเช เชฐเซเชคเซ เชนเชฒ เชเชฐเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซเช.
เชเชพเชฒเซ เชเซเชกเซเชค, เชตเชฐเซ, เชฌเชเชฐเซ เช เชจเซ เชเซเชฌเซเชจเซ 4 เชเชฒเซ เชคเชฐเซเชเซ เชฆเชฐเซเชถเชพเชตเซเช เชเซ เชซเชเซเชค 0 เช เชฅเชตเชพ 1 เชฎเซเชฒเซเชฏ เชฒเซ เชเซ. เชถเซเชจเซเชฏเชจเซ เช เชฐเซเชฅ เชเซ เชเซ เชคเซเช เชกเชพเชฌเซ เชฌเชพเชเซเช เชเซ, เช เชจเซ เชเชเชจเซ เช เชฐเซเชฅ เชเซ เชเซ เชคเซเช เชเชฎเชฃเซ เชฌเชพเชเซเช เชเซ.
import json
from z3 import *
s = Solver()
Num= 8
Human = [ Int('Human_%i' % (i + 1)) for i in range(Num) ]
Wolf = [ Int('Wolf_%i' % (i + 1)) for i in range(Num) ]
Goat = [ Int('Goat_%i' % (i + 1)) for i in range(Num) ]
Cabbage = [ Int('Cabbage_%i' % (i + 1)) for i in range(Num) ]
# Each creature can be only on left (0) or right side (1) on every state
HumanSide = [ Or(Human[i] == 0, Human[i] == 1) for i in range(Num) ]
WolfSide = [ Or(Wolf[i] == 0, Wolf[i] == 1) for i in range(Num) ]
GoatSide = [ Or(Goat[i] == 0, Goat[i] == 1) for i in range(Num) ]
CabbageSide = [ Or(Cabbage[i] == 0, Cabbage[i] == 1) for i in range(Num) ]
Side = HumanSide+WolfSide+GoatSide+CabbageSide
Num เช เชเชเซเชฒเชตเชพ เชฎเชพเชเซ เชเชฐเซเชฐเซ เชชเชเชฒเชพเชเชเชจเซ เชธเชเชเซเชฏเชพ เชเซ. เชฆเชฐเซเช เชชเชเชฒเซเช เชจเชฆเซ, เชนเซเชกเซ เช เชจเซ เชคเชฎเชพเชฎ เชธเชเชธเซเชฅเชพเชเชจเซ เชธเซเชฅเชฟเชคเชฟเชจเซเช เชชเซเชฐเชคเชฟเชจเชฟเชงเชฟเชคเซเชต เชเชฐเซ เชเซ.
เชนเชฎเชฃเชพเช เชฎเชพเชเซ, เชเชพเชฒเซ เชคเซเชจเซ เชฐเซเชจเซเชกเชฎ เช เชจเซ เชฎเชพเชฐเซเชเชฟเชจ เชธเชพเชฅเซ เชชเชธเชเชฆ เชเชฐเซเช, 10 เชฒเซ.
เชฆเชฐเซเช เชเชจเซเชเชฟเชเซ 10 เชจเชเชฒเซเชฎเชพเช เชฐเชเซ เชฅเชพเชฏ เชเซ - เช 10 เชชเชเชฒเชพเชเชฎเชพเชเชฅเซ เชฆเชฐเซเช เชชเชฐ เชคเซเชจเซเช เชฎเซเชฒเซเชฏ เชเซ.
เชนเชตเซ เชถเชฐเซเชเชค เช เชจเซ เชธเชฎเชพเชชเซเชคเชฟ เชฎเชพเชเซ เชถเชฐเชคเซ เชธเซเช เชเชฐเซเช.
Start = [ Human[0] == 0, Wolf[0] == 0, Goat[0] == 0, Cabbage[0] == 0 ]
Finish = [ Human[9] == 1, Wolf[9] == 1, Goat[9] == 1, Cabbage[9] == 1 ]
เชชเชเซ เช
เชฎเซ เชธเชฎเซเชเชฐเชฃเชฎเชพเช เช
เชตเชฐเซเชงเซ เชคเชฐเซเชเซ เชตเชฐเซ เชฌเชเชฐเซเชจเซ เชเชพเชฏ เชเซ เช
เชฅเชตเชพ เชฌเชเชฐเซ เชเซเชฌเซ เชเชพเชฏ เชเซ เชคเซ เชถเชฐเชคเซ เชธเซเช เชเชฐเซเช เชเซเช.
(เชเซเชกเซเชคเชจเซ เชนเชพเชเชฐเซเชฎเชพเช, เชเชเซเชฐเชฎเชเชคเชพ เช
เชถเชเซเชฏ เชเซ)
# Wolf cant stand with goat, and goat with cabbage without human. Not 2, not 0 which means that they are one the same side
Safe = [ And( Or(Wolf[i] != Goat[i], Wolf[i] == Human[i]), Or(Goat[i] != Cabbage[i], Goat[i] == Human[i])) for i in range(Num) ]
เช
เชจเซ เช
เชเชคเซ, เช
เชฎเซ เชคเซเชฏเชพเชเชฅเซ เชชเชธเชพเชฐ เชฅเชคเซ เชตเชเชคเซ เช
เชฅเชตเชพ เชชเชพเชเชณ เชเชคเชพเช เชเซเชกเซเชคเชจเซ เชคเชฎเชพเชฎ เชธเชเชญเชตเชฟเชค เชเซเชฐเชฟเชฏเชพเชเชจเซ เชตเซเชฏเชพเชเซเชฏเชพเชฏเชฟเชค เชเชฐเซเชถเซเช.
เชคเซ เชเชพเช เชคเซ เชคเซเชจเซ เชธเชพเชฅเซ เชตเชฐเซ, เชฌเชเชฐเซ เช
เชฅเชตเชพ เชเซเชฌเซ เชฒเช เชถเชเซ เชเซ, เช
เชฅเชตเชพ เชเซเชเชจเซ เชฒเช เชถเชเชถเซ เชจเชนเซเช, เช
เชฅเชตเชพ เชเซเชฏเชพเชเชฏ เชชเชฃ เชธเชซเชฐ เชเชฐเซ เชถเชเชถเซ เชจเชนเซเช.
เช เชฒเชฌเชคเซเชค, เชเซเชกเซเชค เชตเชฟเชจเชพ เชเซเช เชชเชพเชฐ เชจเชฅเซ เชถเชเชคเซเช.
เช เช เชนเชเซเชเชค เชฆเซเชตเชพเชฐเชพ เชตเซเชฏเชเซเชค เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ เชเซ เชจเชฆเซ, เชนเซเชกเซ เช เชจเซ เชธเชเชธเซเชฅเชพเชเชจเซ เชฆเชฐเซเช เช เชจเซเชเชพเชฎเซ เชธเซเชฅเชฟเชคเชฟ เชซเชเซเชค เชเชกเช เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชฐเซเชคเซ เช เชเชพเชเชจเชพ เชเชเชฅเซ เช เชฒเช เชนเซเช เชถเชเซ เชเซ.
2 เชฌเซเชเซเชธ เชเชฐเชคเชพเช เชตเชงเซ เชจเชนเซเช, เช เชจเซ เช เชจเซเชฏ เชเชฃเซ เชฎเชฐเซเชฏเชพเชฆเชพเช เชธเชพเชฅเซ, เชเชพเชฐเชฃ เชเซ เชเซเชกเซเชค เชเช เชธเชฎเชฏเซ เชฎเชพเชคเซเชฐ เชเช เชเชจเซเชเชฟเชเซเชจเซเช เชชเชฐเชฟเชตเชนเชจ เชเชฐเซ เชถเชเซ เชเซ เช เชจเซ เชฌเชงเชพเชจเซ เชเชเชธเชพเชฅเซ เชเซเชกเซ เชถเชเชพเชคเชพ เชจเชฅเซ.
Travel = [ Or(
And(Human[i] == Human[i+1] + 1, Wolf[i] == Wolf[i+1] + 1, Goat[i] == Goat[i+1], Cabbage[i] == Cabbage[i+1]),
And(Human[i] == Human[i+1] + 1, Goat[i] == Goat[i+1] + 1, Wolf[i] == Wolf[i+1], Cabbage[i] == Cabbage[i+1]),
And(Human[i] == Human[i+1] + 1, Cabbage[i] == Cabbage[i+1] + 1, Wolf[i] == Wolf[i+1], Goat[i] == Goat[i+1]),
And(Human[i] == Human[i+1] - 1, Wolf[i] == Wolf[i+1] - 1, Goat[i] == Goat[i+1], Cabbage[i] == Cabbage[i+1]),
And(Human[i] == Human[i+1] - 1, Goat[i] == Goat[i+1] - 1, Wolf[i] == Wolf[i+1], Cabbage[i] == Cabbage[i+1]),
And(Human[i] == Human[i+1] - 1, Cabbage[i] == Cabbage[i+1] - 1, Wolf[i] == Wolf[i+1], Goat[i] == Goat[i+1]),
And(Wolf[i] == Wolf[i+1], Goat[i] == Goat[i+1], Cabbage[i] == Cabbage[i+1])) for i in range(Num-1) ]
เชเชพเชฒเซ เชเชเซเชฒ เชเชฒเชพเชตเซเช.
solve(Side + Start + Finish + Safe + Travel)
เช เชจเซ เช เชฎเชจเซ เชเชตเชพเชฌ เชฎเชณเซ เชเซ!
Z3 เชจเซ เชฐเชพเชเซเชฏเซเชจเซ เชเช เชธเซเชธเชเชเชค เชธเชฎเซเชน เชฎเชณเซเชฏเซ เชเซ เชฌเชงเซ เชถเชฐเชคเซเชจเซ เชธเชเชคเซเชทเซ เชเซ.
เช
เชตเชเชพเชถ-เชธเชฎเชฏเชจเชพ เชเชพเชฐ-เชชเชฐเชฟเชฎเชพเชฃเซเชฏ เชเชพเชธเซเชเชจเซ เชเช เชชเซเชฐเชเชพเชฐ.
เชเชพเชฒเซ เชเชพเชฃเซเช เชถเซเช เชฅเชฏเซเช.
เช เชฎเซ เชเซเชฏเซเช เชเซ เช เชเชคเซ เชฌเชงเชพเช เชชเชพเชฐ เชเชฐเซเชฏเซเช, เชซเชเซเชค เชชเซเชฐเชฅเชฎ เช เชฎเชพเชฐเชพ เชเซเชกเซเชคเซ เชเชฐเชพเชฎ เชเชฐเชตเชพเชจเซเช เชจเชเซเชเซ เชเชฐเซเชฏเซเช, เช เชจเซ เชชเซเชฐเชฅเชฎ 2 เชชเชเชฒเชพเชฎเชพเช เชคเซ เชเซเชฏเชพเชเชฏ เชคเชฐเชคเซ เชจเชฅเซ.
Human_2 = 0
Human_3 = 0
เช เชธเซเชเชตเซ เชเซ เชเซ เช เชฎเซ เชชเชธเชเชฆ เชเชฐเซเชฒเชพ เชฐเชพเชเซเชฏเซเชจเซ เชธเชเชเซเชฏเชพ เชตเชงเซ เชชเชกเชคเซ เชเซ เช เชจเซ 8 เชชเซเชฐเชคเซ เชนเชถเซ.
เช เชฎเชพเชฐเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช, เชเซเชกเซเชคเซ เช เชเชฐเซเชฏเซเช: เชชเซเชฐเชพเชฐเชเชญ เชเชฐเซ, เชเชฐเชพเชฎ เชเชฐเซ, เชเชฐเชพเชฎ เชเชฐเซ, เชฌเชเชฐเซเชจเซ เชชเชพเชฐ เชเชฐเซ, เชชเชพเชเชพ เชเซเชฐเซเชธ เชเชฐเซ, เชเซเชฌเซเชจเซ เชชเชพเชฐ เชเชฐเซ, เชฌเชเชฐเซ เชธเชพเชฅเซ เชชเชพเชเชพ เชซเชฐเซ, เชตเชฐเซเชจเซ เชชเชพเชฐ เชเชฐเซ, เชเชเชฒเชพ เชชเชพเชเชพ เชซเชฐเซ, เชฌเชเชฐเซเชจเซ เชซเชฐเซเชฅเซ เชชเชนเซเชเชเชพเชกเซ.
เชชเชฐเชเชคเซ เช เชเชคเซ เชธเชฎเชธเซเชฏเชพ เชนเชฒ เชฅเช เชเช.
#ะกัะฐัั.
Human_1 = 0
Wolf_1 = 0
Goat_1 = 0
Cabbage_1 = 0
#ะคะตัะผะตั ะพัะดัั
ะฐะตั.
Human_2 = 0
Wolf_2 = 0
Goat_2 = 0
Cabbage_2 = 0
#ะคะตัะผะตั ะพัะดัั
ะฐะตั.
Human_3 = 0
Wolf_3 = 0
Goat_3 = 0
Cabbage_3 = 0
#ะคะตัะผะตั ะพัะฒะพะทะธั ะบะพะทั ะฝะฐ ะฝัะถะฝัะน ะฑะตัะตะณ.
Human_4 = 1
Wolf_4 = 0
Goat_4 = 1
Cabbage_4 = 0
#ะคะตัะผะตั ะฒะพะทะฒัะฐัะฐะตััั.
Human_5 = 0
Wolf_5 = 0
Goat_5 = 1
Cabbage_5 = 0
#ะคะตัะผะตั ะพัะฒะพะทะธั ะบะฐะฟัััั ะฝะฐ ะฝัะถะฝัะน ะฑะตัะตะณ.
Human_6 = 1
Wolf_6 = 0
Cabbage_6 = 1
Goat_6 = 1
#ะะปััะตะฒะฐั ัะฐััั ะพะฟะตัะฐัะธะธ: ัะตัะผะตั ะฒะพะทะฒัะฐัะฐะตั ะบะพะทั ะพะฑัะฐัะฝะพ.
Human_7 = 0
Wolf_7 = 0
Goat_7 = 0
Cabbage_7 = 1
#ะคะตัะผะตั ะพัะฒะพะทะธั ะฒะพะปะบะฐ ะฝะฐ ะดััะณะพะน ะฑะตัะตะณ, ะณะดะต ะพะฝ ัะตะฟะตัั ะฝะฐั
ะพะดะธััั ะฒะผะตััะต ั ะบะฐะฟัััะพะน.
Human_8 = 1
Wolf_8 = 1
Goat_8 = 0
Cabbage_8 = 1
#ะคะตัะผะตั ะฒะพะทะฒัะฐัะฐะตััั ะทะฐ ะบะพะทะพะน.
Human_9 = 0
Wolf_9 = 1
Goat_9 = 0
Cabbage_9 = 1
#ะคะตัะผะตั ะฟะพะฒัะพัะฝะพ ะดะพััะฐะฒะปัะตั ะบะพะทั ะฝะฐ ะฝัะถะฝัะน ะฑะตัะตะณ ะธ ะทะฐะฒะตััะฐัั ะฟะตัะตะฟัะฐะฒั.
Human_10 = 1
Wolf_10 = 1
Goat_10 = 1
Cabbage_10 = 1
เชนเชตเซ เชเชพเชฒเซ เชถเชฐเชคเซ เชฌเชฆเชฒเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซเช เช เชจเซ เชธเชพเชฌเชฟเชค เชเชฐเซเช เชเซ เชเซเช เชเชเซเชฒเซ เชจเชฅเซ.
เช เชเชฐเชตเชพ เชฎเชพเชเซ, เช
เชฎเซ เช
เชฎเชพเชฐเชพ เชตเชฐเซเชจเซ เชถเชพเชเชพเชนเชพเชฐเซ เชเชชเซเชถเซเช, เช
เชจเซ เชคเซ เชเซเชฌเซ เชเชพเชตเชพ เชฎเชพเชเชเชถเซ.
เชเชจเซ เชคเซเชฒเชจเชพ เชคเซ เชเซเชธ เชธเชพเชฅเซ เชเชฐเซ เชถเชเชพเชฏ เชเซ เชเซเชฎเชพเช เช
เชฎเชพเชฐเซ เชงเซเชฏเซเชฏ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชธเซเชฐเชเซเชทเชฟเชค เชเชฐเชตเชพเชจเซ เชเซ เช
เชจเซ เช
เชฎเชพเชฐเซ เชเชพเชคเชฐเซ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชเซ เชคเซเชฎเชพเช เชเซเช เชเชเชเชฌเชพเชฐเซเช เชจเชฅเซ.
Safe = [ And( Or(Wolf[i] != Goat[i], Wolf[i] == Human[i]), Or(Goat[i] != Cabbage[i], Goat[i] == Human[i]), Or(Wolf[i] != Cabbage[i], Goat[i] == Human[i])) for i in range(Num) ]
Z3 เช เช เชฎเชจเซ เชจเซเชเซเชจเซ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชเชชเซเชฏเซ:
no solution
เชคเซเชจเซ เช เชฐเซเชฅ เช เชเซ เชเชฐเซเชเชฐ เชเซเช เชเชเซเชฒเซ เชจเชฅเซ.
เชเชฎ, เช เชฎเซ เชเซเชกเซเชค เชฎเชพเชเซ เชจเซเชเชธเชพเชจ เชตเชฟเชจเชพ เชธเชฐเซเชตเชญเชเซเชทเซ เชตเชฐเซ เชธเชพเชฅเซ เชชเชพเชฐ เชเชฐเชตเชพเชจเซ เช เชถเชเซเชฏเชคเชพเชจเซ เชชเซเชฐเซเชเซเชฐเชพเชฎเซเชเชฟเชเชฒเซ เชธเชพเชฌเชฟเชค เชเชฐเซ.
เชเซ เชชเซเชฐเซเชเซเชทเชเซเชจเซ เช เชตเชฟเชทเชฏ เชฐเชธเชชเซเชฐเชฆ เชฒเชพเชเชคเซ เชนเซเชฏ, เชคเซ เชชเชเซ เชญเชตเชฟเชทเซเชฏเชจเชพ เชฒเซเชเซเชฎเชพเช เชนเซเช เชคเชฎเชจเซ เชเชนเซเชถ เชเซ เชธเชพเชฎเชพเชจเซเชฏ เชชเซเชฐเซเชเซเชฐเชพเชฎ เช เชฅเชตเชพ เชซเชเชเซเชถเชจเชจเซ เชเชชเชเชพเชฐเชฟเช เชชเชฆเซเชงเชคเชฟเช เชธเชพเชฅเซ เชธเซเชธเชเชเชค เชธเชฎเซเชเชฐเชฃเชฎเชพเช เชเซเชตเซ เชฐเซเชคเซ เชซเซเชฐเชตเชตเซเช, เช เชจเซ เชคเซเชจเซ เชนเชฒ เชเชฐเชตเซเช, เชคเซเชฏเชพเชเชฅเซ เชคเชฎเชพเชฎ เชเชพเชฏเชฆเซเชธเชฐ เชฆเซเชถเซเชฏเซ เช เชจเซ เชจเชฌเชณเชพเชเช เชฌเชเชจเซเชจเซ เชเชคเซ เชเชฐเชตเซ. เชชเซเชฐเชฅเชฎ, เชธเชฎเชพเชจ เชเชพเชฐเซเชฏ เชชเชฐ, เชชเชฐเชเชคเซ เชชเซเชฐเซเชเซเชฐเชพเชฎเชจเชพ เชฐเซเชชเชฎเชพเช เชชเซเชฐเชธเซเชคเซเชค, เช เชจเซ เชชเชเซ เชงเซเชฎเซ เชงเซเชฎเซ เชคเซเชจเซ เชเชเชฟเชฒ เชฌเชจเชพเชตเชตเซเช เช เชจเซ เชธเซเชซเซเชเชตเซเชฐ เชกเซเชตเชฒเชชเชฎเซเชจเซเชเชจเซ เชฆเซเชจเชฟเชฏเชพเชจเชพ เชตเชฐเซเชคเชฎเชพเชจ เชเชฆเชพเชนเชฐเชฃเซ เชชเชฐ เชเชเชณ เชตเชงเชตเซเช.
เชเชเชณเชจเซ เชฒเซเช เชชเชนเซเชฒเซเชฅเซ เช เชคเซเชฏเชพเชฐ เชเซ:
เชคเซเชฎเชพเช เชนเซเช เชธเชฎเชธเซเชฏเชพเชเชจเซ เชเชชเชเชพเชฐเชฟเช เชเชเชพเชธเชฃเซเชฅเซ เชเชพเชฐเซเชฏเชเซเชฐเชฎเซ เชคเชฐเชซ เชเชเชณ เชตเชงเซเช เชเซเช เช
เชจเซ เชคเซเชจเซเช เชตเชฐเซเชฃเชจ เชเชฐเซเช เชเซเช
เชคเซเชเชจเซ เชเชชเชเชพเชฐเชฟเช เชจเชฟเชฏเชฎ เชชเซเชฐเชฃเชพเชฒเซเชฎเชพเช เชเชชเชฎเซเชณเซ เชเซเชตเซ เชฐเซเชคเซ เชฐเซเชชเชพเชเชคเชฐเชฟเชค เชเชฐเซ เชถเชเชพเชฏ เชเซ.
เชธเซเชฐเซเชธ: www.habr.com