เจฎเฉเจฐเฉ เจฐเจพเจ เจตเจฟเฉฑเจ, เจเฉฐเจเจฐเจจเฉเจ เจฆเฉ เจฐเฉเจธเฉ-เจญเจพเจธเจผเจพ เจฆเฉ เจเฉเจคเจฐ เจตเจฟเฉฑเจ, เจฐเจธเจฎเฉ เจคเจธเจฆเฉเจ เจฆเจพ เจตเจฟเจธเจผเจพ เจเจพเจซเจผเฉ เจจเจนเฉเจ เจนเฉ, เจ เจคเฉ เจเจพเจธ เจคเฉเจฐ 'เจคเฉ เจธเจงเจพเจฐเจจ เจ เจคเฉ เจธเจชเฉฑเจธเจผเจ เจเจฆเจพเจนเจฐเจฃเจพเจ เจฆเฉ เจเจพเจ เจนเฉเฅค
เจฎเฉเจ เจเฉฑเจ เจตเจฟเจฆเฉเจธเจผเฉ เจธเจฐเฉเจค เจคเฉเจ เจเฉฑเจ เจเจฆเจพเจนเจฐเจฃ เจฆเฉเจตเจพเจเจเจพ, เจ เจคเฉ เจเฉฑเจ เจฌเจเจฟเจเฉ, เจเฉฑเจ เจฌเฉฑเจเจฐเฉ เจ เจคเฉ เจเฉฑเจ เจเฉเจญเฉ เจจเฉเฉฐ เจฆเจฐเจฟเจ เจฆเฉ เจฆเฉเจเฉ เจชเจพเจธเฉ เจชเจพเจฐ เจเจฐเจจ เจฆเฉ เจเจพเจฃเฉ-เจชเจเจพเจฃเฉ เจธเจฎเฉฑเจธเจฟเจ เจฆเจพ เจเจชเจฃเจพ เจนเฉฑเจฒ เจเฉเฉเจพเจเจเจพเฅค
เจชเจฐ เจชเจนเจฟเจฒเจพเจ, เจฎเฉเจ เจธเฉฐเจเฉเจช เจตเจฟเฉฑเจ เจตเจฐเจฃเจจ เจเจฐเจพเจเจเจพ เจเจฟ เจฐเจธเจฎเฉ เจคเจธเจฆเฉเจ เจเฉ เจนเฉ เจ เจคเฉ เจเจธเจฆเฉ เจฒเฉเฉ เจเจฟเจเจ เจนเฉเฅค
เจฐเจธเจฎเฉ เจคเจธเจฆเฉเจ เจฆเจพ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจฎเจคเจฒเจฌ เจนเฉเฉฐเจฆเจพ เจนเฉ เจเฉฑเจ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจเจพเจ เจเจฒเจเฉเจฐเจฟเจฆเจฎ เจฆเฉ เจฆเฉเจเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจเจพเจเจ เจเจฐเจจเจพเฅค
เจเจน เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจฃ เจฒเจ เจเจผเจฐเฉเจฐเฉ เจนเฉ เจเจฟ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจเจฎเฉเจฆ เจ เจจเฉเจธเจพเจฐ เจตเจฟเจตเจนเจพเจฐ เจเจฐเฉ เจ เจคเฉ เจเจธเจฆเฉ เจธเฉเจฐเฉฑเจเจฟเจ เจจเฉเฉฐ เจตเฉ เจฏเจเฉเจจเฉ เจฌเจฃเจพเจเจ เจเจพเจตเฉเฅค
เจฐเจธเจฎเฉ เจคเจธเจฆเฉเจ เจเจฎเจเจผเฉเจฐเฉเจเจ เจจเฉเฉฐ เจฒเฉฑเจญเจฃ เจ
เจคเฉ เจเจผเจคเจฎ เจเจฐเจจ เจฆเจพ เจธเจญ เจคเฉเจ เจธเจผเจเจคเฉเจธเจผเจพเจฒเฉ เจธเจพเจงเจจ เจนเฉ: เจเจน เจคเฉเจนเจพเจจเฉเฉฐ เจชเฉเจฐเฉเจเจฐเจพเจฎ เจตเจฟเฉฑเจ เจฎเฉเจเฉเจฆ เจธเจพเจฐเฉ เจเฉเจ เจ
เจคเฉ เจฌเฉฑเจ เจฒเฉฑเจญเจฃ, เจเจพเจ เจเจน เจธเจพเจฌเจค เจเจฐเจจ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉ เจเจฟ เจเจน เจฎเฉเจเฉเจฆ เจจเจนเฉเจ เจนเจจเฅค
เจเจน เจงเจฟเจเจจ เจฆเฉเจฃ เจฏเฉเจ เจนเฉ เจเจฟ เจเฉเจ เจฎเจพเจฎเจฒเจฟเจเจ เจตเจฟเฉฑเจ เจเจน เจ
เจธเฉฐเจญเจต เจนเฉ, เจเจฟเจตเฉเจ เจเจฟ 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
เจธเฉฐเจเจฟเจ เจนเฉฑเจฒ เจเจฐเจจ เจฒเจ เจฒเฉเฉเฉเจเจฆเฉ เจเจฆเจฎเจพเจ เจฆเฉ เจธเฉฐเจเจฟเจ เจนเฉเฅค เจนเจฐ เจเจฆเจฎ เจฆเจฐเจฟเจ เจฆเฉ เจธเจฅเจฟเจคเฉ, เจเจฟเจธเจผเจคเฉ เจ เจคเฉ เจธเจพเจฐเฉเจเจ เจธเฉฐเจธเจฅเจพเจตเจพเจ เจจเฉเฉฐ เจฆเจฐเจธเจพเจเจเจฆเจพ เจนเฉเฅค
เจนเฉเจฃ เจฒเจ, เจเจฒเฉ เจเจธเจจเฉเฉฐ เจฌเฉเจคเจฐเจคเฉเจฌเฉ เจ เจคเฉ เจนเจพเจธเจผเฉเจ เจจเจพเจฒ เจเฉเจฃเฉเจ, 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