āĻ¨ā§‡āĻ•āĻĄāĻŧā§‡, āĻ›āĻžāĻ—āĻ˛ āĻāĻŦāĻ‚ āĻŦāĻžāĻāĻ§āĻžāĻ•āĻĒāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡āĻ° āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻ¯āĻžāĻšāĻžāĻ‡āĻ•āĻ°āĻŖ

āĻ†āĻŽāĻžāĻ° āĻŽāĻ¤ā§‡, āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻ¨ā§‡āĻŸā§‡āĻ° āĻ°āĻžāĻļāĻŋāĻ¯āĻŧāĻžāĻ¨-āĻ­āĻžāĻˇāĻž āĻ¸ā§‡āĻ•ā§āĻŸāĻ°ā§‡, āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻ¯āĻžāĻšāĻžāĻ‡āĻ•āĻ°āĻŖā§‡āĻ° āĻŦāĻŋāĻˇāĻ¯āĻŧāĻŸāĻŋ āĻĒāĻ°ā§āĻ¯āĻžāĻĒā§āĻ¤āĻ­āĻžāĻŦā§‡ āĻ•āĻ­āĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĻ¨āĻŋ āĻāĻŦāĻ‚ āĻŦāĻŋāĻļā§‡āĻˇ āĻ•āĻ°ā§‡ āĻ¸āĻšāĻœ āĻāĻŦāĻ‚ āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡āĻ° āĻ…āĻ­āĻžāĻŦ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤

āĻ†āĻŽāĻŋ āĻāĻ•āĻŸāĻŋ āĻŦāĻŋāĻĻā§‡āĻļā§€ āĻ‰āĻ¤ā§āĻ¸ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§‡āĻŦ, āĻāĻŦāĻ‚ āĻ¨āĻĻā§€āĻ° āĻ…āĻĒāĻ° āĻĒāĻžāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨ā§‡āĻ•āĻĄāĻŧā§‡, āĻāĻ•āĻŸāĻŋ āĻ›āĻžāĻ—āĻ˛ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻŦāĻžāĻāĻ§āĻžāĻ•āĻĒāĻŋ āĻ…āĻ¤āĻŋāĻ•ā§āĻ°āĻŽ āĻ•āĻ°āĻžāĻ° āĻ¸ā§āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻ†āĻŽāĻžāĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŦāĨ¤

āĻ¤āĻŦā§‡ āĻĒā§āĻ°āĻĨāĻŽā§‡, āĻ†āĻŽāĻŋ āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°āĻŦ āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻ¯āĻžāĻšāĻžāĻ‡āĻ•āĻ°āĻŖ āĻ•ā§€ āĻāĻŦāĻ‚ āĻ•ā§‡āĻ¨ āĻāĻŸāĻŋ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤

āĻ†āĻ¨ā§āĻˇā§āĻ āĻžāĻ¨āĻŋāĻ• āĻ¯āĻžāĻšāĻžāĻ‡āĻ•āĻ°āĻŖā§‡āĻ° āĻ…āĻ°ā§āĻĨ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽ āĻŦāĻž āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ…āĻ¨ā§āĻ¯āĻŸāĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻžāĨ¤

āĻāĻŸāĻŋ āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻ¯ā§‡ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŸāĻŋ āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻļāĻŋāĻ¤āĻ­āĻžāĻŦā§‡ āĻ†āĻšāĻ°āĻŖ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻāĻ° āĻ¨āĻŋāĻ°āĻžāĻĒāĻ¤ā§āĻ¤āĻž āĻ¨āĻŋāĻļā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡āĨ¤

āĻĢāĻ°ā§āĻŽāĻžāĻ˛ āĻ­ā§‡āĻ°āĻŋāĻĢāĻŋāĻ•ā§‡āĻļāĻ¨ āĻšāĻ˛ āĻĻā§āĻ°ā§āĻŦāĻ˛āĻ¤āĻž āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻžāĻ° āĻāĻŦāĻ‚ āĻĻā§‚āĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻļāĻ•ā§āĻ¤āĻŋāĻļāĻžāĻ˛ā§€ āĻŽāĻžāĻ§ā§āĻ¯āĻŽ: āĻāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽā§‡ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ¸āĻŦ āĻ›āĻŋāĻĻā§āĻ° āĻāĻŦāĻ‚ āĻŦāĻžāĻ— āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻž āĻĒā§āĻ°āĻŽāĻžāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ āĻ¯ā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ¨ā§‡āĻ‡āĨ¤
āĻāĻŸāĻŋ āĻ˛āĻ•ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻ¯ā§‡ āĻ•āĻŋāĻ›ā§ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻāĻŸāĻŋ āĻ…āĻ¸āĻŽā§āĻ­āĻŦ, āĻ¯ā§‡āĻŽāĻ¨ 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 āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ°ā§‡ āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ¨ā§‡āĻ•āĻĄāĻŧā§‡, āĻ›āĻžāĻ—āĻ˛ āĻāĻŦāĻ‚ āĻŦāĻžāĻāĻ§āĻžāĻ•āĻĒāĻŋ āĻ†āĻ°āĻ“ āĻœāĻŸāĻŋāĻ˛ āĻāĻŦāĻ‚ āĻŦāĻŋāĻ¸ā§āĻ¤ā§ƒāĻ¤ āĻŦāĻŋāĻ­āĻžāĻ— āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ āĻ•āĻ°ā§‡, āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ˛āĻ•ā§āĻˇā§āĻ¯āĻŸāĻŋ āĻ•ā§‡āĻŦāĻ˛āĻŽāĻžāĻ¤ā§āĻ° āĻ…āĻ°ā§āĻœāĻ¨ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ āĻĻā§āĻŦāĻžāĻ°āĻžāĨ¤

āĻāĻŸāĻŋ āĻ¤ā§āĻ˛āĻ¨ā§€āĻ¯āĻŧ, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻĻā§ƒāĻļā§āĻ¯ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻāĻ¸āĻ•āĻŋāĻ‰āĻāĻ˛ āĻ‡āĻ¨āĻœā§‡āĻ•āĻļāĻ¨ āĻ–ā§āĻāĻœā§‡ āĻŦā§‡āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻāĻŸāĻŋāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻĢāĻžāĻ‡āĻ˛ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ…āĻ§āĻŋāĻ•āĻžāĻ°āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ‰āĻ¨ā§āĻ¨āĻ¤ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻ•āĻŸāĻŋ āĻĒāĻžāĻ¸āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻĄ āĻĒāĻžāĻŦā§‡āĻ¨ā§ˇ

āĻ¸āĻŽāĻ¸ā§āĻ¯āĻžāĻ° āĻļāĻ°ā§āĻ¤ āĻāĻŦāĻ‚ āĻāĻ° āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻ•ā§ƒāĻˇāĻ•āĻ•ā§‡ āĻ¨āĻĻā§€āĻ° āĻ“āĻĒāĻžāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨ā§‡āĻ•āĻĄāĻŧā§‡, āĻāĻ•āĻŸāĻŋ āĻ›āĻžāĻ—āĻ˛ āĻāĻŦāĻ‚ āĻŦāĻžāĻāĻ§āĻžāĻ•āĻĒāĻŋ āĻĒāĻ°āĻŋāĻŦāĻšāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡āĨ¤ āĻ•ā§ƒāĻˇāĻ•ā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¨ā§ŒāĻ•āĻž āĻ†āĻ›ā§‡ āĻ¯āĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻŦāĻ¸ā§āĻ¤ā§āĻ•ā§‡ āĻŽāĻŋāĻŸāĻŽāĻžāĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ•ā§ƒāĻˇāĻ• āĻ¨āĻŋāĻœā§‡ āĻ›āĻžāĻĄāĻŧāĻžāĻ“āĨ¤ āĻ¨ā§‡āĻ•āĻĄāĻŧā§‡ āĻ›āĻžāĻ—āĻ˛ āĻ–āĻžāĻŦā§‡ āĻāĻŦāĻ‚ āĻ›āĻžāĻ—āĻ˛ āĻŦāĻžāĻāĻ§āĻžāĻ•āĻĒāĻŋ āĻ–āĻžāĻŦā§‡ āĻ¯āĻĻāĻŋ āĻ•ā§ƒāĻˇāĻ• āĻ¤āĻžāĻĻā§‡āĻ° āĻ…āĻ¯āĻ¤ā§āĻ¨ā§‡ āĻ›ā§‡āĻĄāĻŧā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻ‰āĻ¤ā§āĻ¤āĻ° āĻšāĻ˛ āĻ§āĻžāĻĒ 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

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨