рдмреВрдврд╝реЗ рдЧреНрд░реЗ рдЧрдзрд╛ Eeyore рдЬрдВрдЧрд▓ рдХреЗ рдКрдВрдЪреЗ рдХрд┐рдирд╛рд░реЗ рдХреЛрдиреЗ рдореЗрдВ рдЕрдХреЗрд▓рд╛ рдЦрдбрд╝рд╛ рдерд╛, рдкреИрд░ рдЕрд▓рдЧ рдФрд░ рдЙрд╕рдХреЗ рд╕рд┐рд░ рдПрдХ рддрд░рдл рд▓рдЯрдХ рд░рд╣реЗ рдереЗ, рдФрд░ рд╕реАрд░рд┐рдпрд╕ рдерд┐рдВрдЧреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ред
рдП рдорд┐рд▓реНрдиреЗ "рд╡рд┐рдиреА рдж рдкреВрд╣ рдФрд░ рдСрд▓-рдСрд▓-рдСрд▓"
- рдПрдХ рдЧрдзрд╛ рджреЗрдЦреЗрдВ? рдореИрдВ рдкреБрд▓рд┐рд╕ рд╡рд╛рд▓реЗ рд╕реЗ рдкреВрдЫрддрд╛ рд╣реВрдВред - рд╡рд╣рд╛рдБ рдкрд░ рдереЛрдбрд╝рд╛ рдЧреНрд░реЗ рдЧрдзрд╛ рд╣реИ ... рдЕрдиреБрдЪреНрдЫреЗрдж 2908. рдХреАрдордд рдмрддреНрддреАрд╕ kopecks рд╣реИред рдЙрд╕рдХрд╛ рдорд╣рд╛рди рднрд╡рд┐рд╖реНрдп рд╣реИред
"рдЧрдзрд╛ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ," рдкреБрд▓рд┐рд╕рдХрд░реНрдореА рд╕рд╣рдордд рд╣реИрдВред - рдЙрдирдХрд╛ рдХрднреА-рдХрднреА рдмрд╣реБрдд рд╢рд╛рдирджрд╛рд░ рднрд╡рд┐рд╖реНрдп рд╣реЛрддрд╛ рд╣реИред
рд╣реЗрдирд░реА рдЕрд▓реНрдЯреЛрд╡ "рдбреЛрдВрдХреА рдФрд░ рдПрдХреНрд╕реЛрдо"
рдмреЛрд░реНрдб рдЧреЗрдо рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдХрдард┐рди рднрд╛рдЧ рдХреНрдпрд╛ рд╣реИ? рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рдмреЛрд░реНрдб рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдмрдврд╝рддреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХрд╛ рдПрдиреАрдореЗрд╢рди рдирд╣реАрдВред рдЙрдЪрд┐рдд рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЧреЗрдо рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЦреЗрд▓ рд╕рдВрддреБрд▓рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рд▓рдЧреЗ рд╣реБрдП рд╣реИрдВ, рддреЛ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реЗ AI (рдЧреЛ рдпрд╛ рд╢реЛрдЧреА рдЬреИрд╕реЗ рдЧреЗрдо рдХреЗ рд▓рд┐рдП) рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрдХреНрд╕рд░ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдЕрдм рддрдХ рд╣рд▓ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╣рдо рдПрдХ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдЖрдИ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ, рддреЛ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдХрд╛рдо рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдФрд░ рдХрдИ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдореИрдВ рдПрдХ рдРрд╕реЗ рдЯреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдЗрди рд╕рднреА рдореБрджреНрджреЛрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред
рдЧреЗрдореНрд╕ рдХреЗ Zillions рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛
Axiom Development Kit рдХреА рдХрд▓реНрдкрдирд╛ рдХреА рдЧрдИ рдереАред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдХреНрд╖реЗрддреНрд░ рдХреА рдЬрдмреНрддреА (рдЬреИрд╕реЗ рдЧреЛ) рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЦреЗрд▓реЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИ, рдЬреЛ рдПрдЖрдИ рдЬрд╝реЛрдЧ рдмрд╣реБрдд рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, Axiom рдХрд╛рдлреА ZoG рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдкрд╛рд░рдВрдкрд░рд┐рдХ ZRF (рдирд┐рдпрдо рд╡рд┐рд╡рд░рдг рднрд╛рд╖рд╛) рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдм рдХреЗ рд╕рд╛рде, рдПрдХреНрд╕реЛрдо рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА ZoG рдХреЛ рдХрднреА рднреА рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдпрд╛ рдЦрд░реАрджрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реЛред рд▓реЗрдХрд┐рди, рдкрд╣рд▓реА рдЪреАрдЬреЗрдВ рдкрд╣рд▓реЗ ...
рдЫрд╡рд┐ рдореЗрдВ
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА
рд▓рд┐рдЦрд╛ рд╣реИ рдХрд┐ ZoG рдореЗрдВ рдХрдИ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИред рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ (рдЗрдВрдЬрди) рдПрдХ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рднрд░реА рд╣реБрдИ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (DLL) рд╣реИ рдЬреЛ рдЦреЗрд▓ рдХреЗ рд╕рднреА рдкрд╣рд▓реБрдУрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рджреГрд╢реНрдп рдХреЛ рдЫреЛрдбрд╝рдХрд░ред рдпрд╣рд╛рдВ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рдореЗрдВ AI рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (C ++ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ), рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЗрдВрдЬрди рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдирд┐рдпрдорд┐рдд ZoG AI рдЕрдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИред рдПрдХреНрд╕рд┐рдУрдо рдПрдХ
рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдмрд▓ рдЗрдВрдЬрди рд╣реИ рдЬреЛ рдРрд╕реА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддреА рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдПрдЖрдИ рдПрд▓реНрдЧреЛрд░рд┐рджрдо, рдФрд░ рдЧреЗрдо рд▓реЙрдЬрд┐рдХ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдЖрдЗрдП рдЙрд░ рдХреЗ рд░реЙрдпрд▓ рдЧреЗрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдиреНрдпреВрдирддрдо ZRF рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рдЗрдВрдЬрди рдХрдиреЗрдХреНрд╢рди(version "2.0") (game (title "Ur") (engine "../Axiom/Ur/axiom.dll") (option "animate captures" false) (option "animate drops" false) (option "show moves list" false) (option "pass turn" forced) (option "highlight goals" false) (option "prevent flipping" true) (option "recycle captures" true) (drop-sound "Audio/Dice_cup.wav") (move-sound "Audio/Clack.wav") (capture-sound "") (players Black White ?Dice) (turn-order White ?Dice ?Dice ?Dice ?Dice Black ?Dice ?Dice ?Dice ?Dice) (board (image "Images\Ur\board.bmp") (grid (start-rectangle -503 -13 -442 79) (dimensions ("a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q" (67 0))
рдпрд╣рд╛рдВ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рд╣реИ, рдЪрд╛рд▓реЛрдВ рдХреЗ рдХреНрд░рдо, рдЯреБрдХрдбрд╝реЗ, рд▓реЗрдХрд┐рди рдЙрди рдирд┐рдпрдореЛрдВ рдХрд╛ рдХреЛрдИ рд╡рд░реНрдгрди рдирд╣реАрдВ рд╣реИ рдЬрд┐рдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдЯреБрдХрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдмреЛрд░реНрдб рдкрд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреА рдХреЛрдИ рдкрд░рд┐рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИ, рдЧреЗрдо рдЬреЛрди, рдЦреЗрд▓ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рд╢рд░реНрддреЗрдВ, рдФрд░ рдЦреЗрд▓ рдХреЗ рдирд┐рдпрдореЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреНрдп рд╕рднреА рдЪреАрдЬреЗрдВред рдпрд╣ рд╕рдм рд╕реНрд╡рдпрдВрд╕рд┐рджреНрдз рд▓рд┐рдкрд┐рдпреЛрдВ рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реЛрдЧрд╛ред рджреБрдЦрдж рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде ZoG рдЗрдВрдЯрд░рдлрд╝реЗрд╕ ZRF рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд╣рд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЗрди рд╕рднреА рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ Axiom рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, Axiom рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХрд┐рдЯ рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред ZRF рдХрдиреНрд╡рд░реНрдЯрд░ рдХрд╛рдо рдореЗрдВ рдХрд╛рдлреА рдореВрдбреА рд╣реИред рдпрджрд┐ рдЙрдиреНрд╣реЗрдВ ZRF рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреБрдЫ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдХреНрд░реЛ рдореЗрдВ рдмреЛрд░реНрдб рдХрд╛ рд╡рд░реНрдгрди), рддреЛ рд░реВрдкрд╛рдВрддрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рд░рд╣рд╕реНрдпрдордп рдирд┐рджрд╛рди рдХреЗ рд╕рд╛рде рдмрд╛рдзрд┐рдд рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЕрдкрдирд╛ рд╕рд┐рд░ рддреЛрдбрд╝ рд▓реЗрддреЗ рд╣реИрдВред рдпрджрд┐ рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛, рддреЛ рд╣рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдирд┐рдореНрди рд╡рд┐рд╡рд░рдг рдорд┐рд▓рддрд╛ рд╣реИ:
Ur.4th {board {position} a5 {position} b5 {position} c5 {position} d5 {position} e5 {position} f5 {position} g5 {position} h5 {position} i5 {position} j5 {position} k5 {position} l5 {position} m5 {position} n5 {position} o5 {position} p5 {position} q5 {position} a4 {position} b4 {position} c4 {position} d4 {position} e4 {position} f4 {position} g4 {position} h4 {position} i4 {position} j4 {position} k4 {position} l4 {position} m4 {position} n4 {position} o4 {position} p4 {position} q4 {position} a3 {position} b3 {position} c3 {position} d3 {position} e3 {position} f3 {position} g3 {position} h3 {position} i3 {position} j3 {position} k3 {position} l3 {position} m3 {position} n3 {position} o3 {position} p3 {position} q3 {position} a2 {position} b2 {position} c2 {position} d2 {position} e2 {position} f2 {position} g2 {position} h2 {position} i2 {position} j2 {position} k2 {position} l2 {position} m2 {position} n2 {position} o2 {position} p2 {position} q2 {position} a1 {position} b1 {position} c1 {position} d1 {position} e1 {position} f1 {position} g1 {position} h1 {position} i1 {position} j1 {position} k1 {position} l1 {position} m1 {position} n1 {position} o1 {position} p1 {position} q1 board} {players {player} Black {player} White {player} ?Dice {random} players} {pieces {piece} lock {piece} init {piece} prom {piece} wdice {piece} bdice {piece} Dummy pieces} {turn-order {repeat} {turn} White {turn} ?Dice {turn} ?Dice {turn} ?Dice {turn} ?Dice {turn} Black {turn} ?Dice {turn} ?Dice {turn} ?Dice {turn} ?Dice turn-order} {board-setup {setup} ?Dice wdice q4 {setup} ?Dice bdice q3 {setup} ?Dice bdice q2 {setup} ?Dice lock q1 {setup} Black init i5 {setup} Black init j5 {setup} Black init k5 {setup} Black init l5 {setup} Black init m5 {setup} Black init n5 {setup} Black init o5 {setup} White init i1 {setup} White init j1 {setup} White init k1 {setup} White init l1 {setup} White init m1 {setup} White init n1 {setup} White init o1 board-setup}
рдпрд╣рд╛рдВ рдкрд╣рд▓реЗ рдЖрд╢реНрдЪрд░реНрдп рдиреЗ рд╣рдорд╛рд░рд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдпрд╛ред Axiom рдЖрдкрдХреЛ рдмреЛрд░реНрдб рдХреЛ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧрдВрднреАрд░ рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рдеред
рдЧреНрд░рд┐рдб рдбрд┐рдЬрд╝рд╛рдЗрди рдЖрдкрдХреЛ "рдорд╛рдирдХ" рд╕реЗрд▓ рдирд╛рдо рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдЖрдпрддрд╛рдХрд╛рд░ рдмреЛрд░реНрдбреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдмреЛрд░реНрдб рд╡рд┐рд╡рд░рдг рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ
рдЧреНрд░рд┐рдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЖрдХрд╛рд░ рдХреЗ рдмреЛрд░реНрдб (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рддреНрд░рд┐-рдЖрдпрд╛рдореА) рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬреИрд╕реЗ ZRF рдХрдиреНрд╡рд░реНрдЯрд░ рдиреЗ рдХрд┐рдпрд╛ рдерд╛ред рдЪреВрдВрдХрд┐, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рднреА рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдореБрдЭреЗ ZRF рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЛрд░реНрдб рдХреЗ рдХреЙрд▓рдо рдФрд░ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдкрдбрд╝рд╛), рд╣рдо рдПрдХ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
{board 5 17 {grid} board}
рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдЙрд╕ рджрд┐рд╢рд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдВрдХрдбрд╝реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╢рддрд░рдВрдЬ рдпрд╛ рдЪреЗрдХрд░реНрд╕ рдЬреИрд╕реЗ рдЦреЗрд▓реЛрдВ рдореЗрдВ, рд╣рдо рдПрдХ рд╕рдВрдХреЗрддрди рд╕рдВрдХреЗрддрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рджрд┐рд╢рд╛рдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:
{directions -1 0 {direction} North 1 0 {direction} South 0 1 {direction} East 0 -1 {direction} West -1 1 {direction} Northeast 1 1 {direction} Southeast -1 -1 {direction} Northwest 1 -1 {direction} Southwest directions}
рдХрд╛рд╢, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╡рд┐рдзрд┐ рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред рдмреЛрд░реНрдб рдкрд░ рдЪрд┐рдкреНрд╕ рдХреЗ рдЖрдВрджреЛрд▓рди рдХреА рдЧрддрд┐ рдХреЗ рдмрд╛рдж рд╕реЗ, рдЦреЗрд▓ рдпреВрдЖрд░ рдореЗрдВ, рдХрд╛рдлреА рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИ, рдЖрдкрдХреЛ рдкрджреЛрдВ рдХреЗ рдмреАрдЪ рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
рджрд┐рд╢рд╛рдУрдВ {directions ( Anext ) {link} Anext i1 l2 {link} Anext j1 l2 {link} Anext k1 l2 {link} Anext l1 l2 {link} Anext m1 l2 {link} Anext n1 l2 {link} Anext o1 l2 {link} Anext l2 k2 {link} Anext k2 j2 {link} Anext j2 i2 {link} Anext i2 i3 {link} Anext i3 j3 {link} Anext j3 k3 {link} Anext k3 l3 {link} Anext l3 m3 {link} Anext m3 n3 {link} Anext n3 o3 {link} Anext o3 o2 {link} Anext o2 p2 {link} Anext p2 p3 {link} Anext p3 p4 {link} Anext p4 o4 {link} Anext o4 o3 ( Bnext ) {link} Bnext i5 l4 {link} Bnext j5 l4 {link} Bnext k5 l4 {link} Bnext l5 l4 {link} Bnext m5 l4 {link} Bnext n5 l4 {link} Bnext o5 l4 {link} Bnext l4 k4 {link} Bnext k4 j4 {link} Bnext j4 i4 {link} Bnext i4 i3 {link} Bnext i3 j3 {link} Bnext j3 k3 {link} Bnext k3 l3 {link} Bnext l3 m3 {link} Bnext m3 n3 {link} Bnext n3 o3 {link} Bnext o3 o4 {link} Bnext o4 p4 {link} Bnext p4 p3 {link} Bnext p3 p2 {link} Bnext p2 o2 {link} Bnext o2 o3 ( Cnext ) {link} Cnext p3 p4 {link} Cnext p4 o4 {link} Cnext o4 o3 {link} Cnext o3 n3 {link} Cnext n3 m3 {link} Cnext m3 l3 {link} Cnext l3 k3 {link} Cnext k3 j3 {link} Cnext j3 i3 {link} Cnext i3 h3 ( Dnext ) {link} Dnext p3 p2 {link} Dnext p2 o2 {link} Dnext o2 o3 {link} Dnext o3 n3 {link} Dnext n3 m3 {link} Dnext m3 l3 {link} Dnext l3 k3 {link} Dnext k3 j3 {link} Dnext j3 i3 {link} Dnext i3 h3 directions}
рдХрд╛рд▓реЗ рдФрд░ рд╕рдлреЗрдж рдЪрд┐рдкреНрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдХрд╛рд▓реЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдлреЗрдж рдФрд░
Bnext рдХреЗ рд▓рд┐рдП рджрд┐рд╢рд╛
Anext рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд░рд┐рд╡рд░реНрддрди рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реЗ рдЪрд┐рдкреНрд╕ рдХреЗ рд▓рд┐рдП,
Cnext рдФрд░
Dnext рдХреА рджрд┐рд╢рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ
рдУ 3 рдлрд╝реАрд▓реНрдб рдкрд░ рдПрдХ рдХрд╛рдВрдЯрд╛ рдмрдирддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдЪрд┐рдкреНрд╕ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдмреНрд▓реЙрдХ рдореЗрдВ рдПрдХ рд╕рд░реНрдХрд▓ рдореЗрдВ рд╕реНрдкрд┐рди рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдкрд╣рд▓реЗ рдЙрдкрд▓рдмреНрдз рдорд╛рд░реНрдЧреЛрдВ рдХреЛ рдЪреБрдирддреЗ рд╣реИрдВред
{symmetries Black {symmetry} Anext Bnext Black {symmetry} Cnext Dnext symmetries}
рдпрд╣ рдбрд┐рдЬрд╝рд╛рдЗрди рдЖрдкрдХреЛ "рд╕рдорд░реВрдкрддрд╛" рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдЕрдЪреНрдЫрд╛ рдЪрд┐рддреНрд░рдг рд╢рддрд░рдВрдЬ рдореЗрдВ рдкреНрдпрд╛рджреЛрдВ рдХрд╛ рдЖрдВрджреЛрд▓рди рд╣реИред рдкрд╛рд╡ рд╣рдореЗрд╢рд╛ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдлреЗрдж рдХреЗ рд▓рд┐рдП рдпрд╣ рдмреЛрд░реНрдб рдХреЛ рдКрдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрд╛рд▓реЗ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд┐рдкрд░реАрдд рджрд┐рд╢рд╛ рдореЗрдВ рд╣реИред рд╕рдорд░реВрдкрддрд╛ рдХреЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд░реВрдк рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢рддрд░рдВрдЬ рдХреЗ рдЪрд╛рд░-рдкрдХреНрд╖реАрдп рд╡реЗрд░рд┐рдПрдВрдЯ рдореЗрдВ, рд░рдВрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ "рдлреЙрд░рд╡рд░реНрдб" рдЖрдВрджреЛрд▓рди, рдЪрд╛рд░ "рдХрд╛рд░реНрдбрд┐рдирд▓ рдкреЙрдЗрдВрдЯреНрд╕" рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред "рд╕рдорд░реВрдкрддрд╛" рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рджрд┐рд╢рд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
Anext ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ,
рдЖрдХреГрддрд┐ рдХреЗ рд░рдВрдЧ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗ рд░рд╣реЗ рд╣реИрдВред рдХрд╛рд▓реЗ рд░рдВрдЧ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдордорд┐рдд (
рдмреЗрдиреЗрдХреНрд╕ ) рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рджреБрд░реНрдЧ
рдлреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдкрд░рд┐рдЪрдп рдЬрд▓реНрджреА рдерд╛, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдпрд╣ рдмрд╣реБрдд рд╣реА рд╢рд╛рдирджрд╛рд░ рд░рд╣рд╛ред рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдлреЛрд░реНрдЯ рдХреЛ рдмреАрд╕реА-рд╢реЗрдЦ рдФрд░ рдорд┐рдХреНрд░реЛрд╢ рдХреЗ рд╕рдордп рджреЗрдЦрд╛ рдерд╛ред рдореЗрд░реЗ рдорд┐рддреНрд░ рдХреЗ рдкрд╛рд╕
рд╡реЗрдХреНрдЯрд░ режрем рд╕реА рдерд╛ , рдЬрд┐рд╕рд╕реЗ рд╣рдо рд╕рднреА рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд╕рдВрдпреБрдХреНрдд рдкреНрд░рдпрд╛рд╕реЛрдВ рд╕реЗ, рдХреЗрд╡рд▓ рд╣рдорд╛рд░реЗ рдХрд╛рдиреЛрдВ рдореЗрдВ рд╕рдлрд▓ рд╣реБрдПред рд╡реЗрдХрдЯреЛрд░ рдХреЗ рд▓рд┐рдП, рд╕рдордп-рд╕рдордп рдкрд░, рдЦреЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗрдЯ рдЦрд░реАрджреЗ рдЧрдП рдереЗ, рдФрд░ рд╕рдордп-рд╕рдордп рдкрд░ рдЙрди рдкрд░ "рдмреЗрд╣рд┐рд╕рд╛рдм" рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХреА рдЧрдИ рдереАред рдРрд╕реЗ рдмреЗрд╣рд┐рд╕рд╛рдм рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмреАрдЪ, рд╣рдордиреЗ рдХрд┐рд▓реЗ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкрд╛рдпрд╛ред рд╕реНрдЯреИрдХ рдХреЗ рд╕рд╛рде рдкрд░реНрдпрд╛рдкреНрдд рдЦреЗрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдФрд░ рдореЗрд░реЗ рджреЛрд╕реНрдд рдиреЗ "рдЕрд╣рд╛" рдХрд╣рд╛ рдФрд░ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рдХреЛ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ (рдлреЛрд░реНрдЯ рдореЗрдВ рдРрд╕рд╛ рдПрдХ рдордЬреЗрджрд╛рд░ рдЕрд╡рд╕рд░ рд╣реИ)ред рдХрд┐рд▓рд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рд╕рд╣рди рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ рдФрд░ рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рднреВрд▓ рдЧрдПред
рдмрд╛рдж рдореЗрдВ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрд╕реНрдерд╛рди рдореЗрдВ, рдлреЛрд░реНрдЯ рдмрд╛рд░-рдмрд╛рд░ рдореЗрд░реЗ рдзреНрдпрд╛рди рдХреА рд╕рддрд╣ рдкрд░ рдЙрднрд░рд╛, рд▓реЗрдХрд┐рди рд╡реЗ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯ рдирд╣реАрдВ рд╕рдХреЗред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореБрдЭреЗ рдХрднреА рднреА рдХрд┐рд╕реА рднреА рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдпрд╛ рдлреЛрд░реНрдЯ рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдФрд░ рдЕрдм, Axiom рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдЕрд╡рд╕рд░ рд╣реИ! рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдлреЛрд░реНрде рд╢рдмреНрдж рдПрдХ рдХрд╛рд░рдг рд╕реЗ рдЙрдирдХреЗ рдлреЛрд░реНрдерд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рджреЛрдиреЛрдВ Axiom рдФрд░ ForthScript рдХреЗ рднрд╛рдЧ рдХреЛ Fort рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░
axiom.dll рдореЗрдВ рдПрдХ рджреБрднрд╛рд╖рд┐рдпрд╛ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ
axiom.4th рдФрд░
CORE.4TH рдореЗрдВ рдЖрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рдВрднрд╡рддрдГ рдХреБрдЫ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЗрд╕рд▓рд┐рдП, рд╕рднреА рдЧреЗрдо рд▓реЙрдЬрд┐рдХ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдлреЛрд░реНрдЯ рдХреЛ рдХрд░рдиреА рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рд╡рд┐рдХрд╛рд╕ рдХрд╣рд╛рдБ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ? рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдмреЛрд░реНрдб рдкрд░ рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрдВрджреЛрд▓рди рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдЖрдВрдХрдбрд╝рд╛ 1, 2, 3 рдпрд╛ 4 рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬрдм рддрдХ рдХрд┐ рд╣рдо "рд╣рдбреНрдбрд┐рдпреЛрдВ" рдкрд░ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдлреЗрдВрдХрдиреЗ рд╕реЗ рд╡рд┐рдЪрд▓рд┐рдд рди рд╣реЛрдВ):
рдЖрдВрдХрдбрд╝реЛрдВ рдХреА рдЪрд╛рд▓ : common-move ( 'dir n -- ) SWAP BEGIN DUP EXECUTE verify SWAP 1- DUP 0= IF DROP TRUE ELSE SWAP FALSE ENDIF UNTIL empty? IF from here move add-move ENDIF ; : i-move-1 ( -- ) ['] Anext 1 common-move ; : i-move-2 ( -- ) ['] Anext 2 common-move ; : i-move-3 ( -- ) ['] Anext 3 common-move ; : i-move-4 ( -- ) ['] Anext 4 common-move ; : p-move-1 ( -- ) ['] Cnext 1 common-move ; : p-move-2 ( -- ) ['] Cnext 2 common-move ; : p-move-3 ( -- ) ['] Cnext 3 common-move ; : p-move-4 ( -- ) ['] Cnext 4 common-move ; {moves i-moves {move} i-move-1 {move} i-move-2 {move} i-move-3 {move} i-move-4 moves} {moves p-moves {move} p-move-1 {move} p-move-2 {move} p-move-3 {move} p-move-4 moves} {pieces {piece} init {moves} i-moves {piece} prom {moves} p-moves pieces}
рдирд┐рд╖реНрдкрд╛рджрди рдкрд░ ZRF-ku рдЪрд▓рд╛рдирд╛, рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдм рдЖрдВрдХрдбрд╝реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдЖрдЗрдП
рдЖрдо-рдЪрд╛рд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗрдЦреЗрдВред рдирд╛рдо рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╕реНрдерд┐рдд (рдлреЛрд░реНрдЯ рд╢реИрд▓реА рдореЗрдВ) рдПрдХ рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдЯреИрдХ рдкрд░ рджреЛ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд▓реЗрддрд╛ рд╣реИ - рдПрдХ рд╕рдВрдХрд▓рд┐рдд рджрд┐рд╢рд╛ рд╕рдВрдХреНрд░рдордг рдЖрджреЗрд╢ рдФрд░ рдЖрдВрджреЛрд▓рди рдЪрд░рдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рджреЛ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдЪрдХреНрд░ рдореЗрдВ, рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ, рдПрдХ рджрд┐рд╢рд╛ рд╕рдВрдХреНрд░рдордг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐ рд▓рдХреНрд╖реНрдп рдлрд╝реАрд▓реНрдб рдЦрд╛рд▓реА рд╣реИ, Axiom рдХрдорд╛рдВрдб рдХреЗ рдПрдХ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдХрджрдо (рдЪрд┐рдк рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реБрдП) рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдпрд╣ рд╕рдм рд╕рдВрддреБрд▓рди рдмрдирд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди - рд╕реНрдЯреИрдХ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ!
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб рдХрд╛ рд╡рд┐рд╡рд░рдг рдлреЛрд░реНрдерд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдЕрд╕рд┐рдУрдо рдореИрдиреБрдЕрд▓ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдПрдпреНрдпреЛрдо рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХрд┐рдЯ рдХреЗ рд╕рд╛рде рдмрдВрдбрд▓ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рдХреЛрдб рдХреЗ рдмреАрдЪ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░реЛрдВ рдкрд░ рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЬреЗрдбрдЖрд░рдПрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрдпрд╛ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- Axiom рдореЗрдВ, рджрд┐рд╢рд╛ рд╕рдВрдХреНрд░рдордг рдХрдорд╛рдВрдб (рдЗрд╕рдХреЗ рдКрдкрд░ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ EXECUTE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ) рдПрдХ рдмреВрд▓рд┐рдпрди рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдВрдХреНрд░рдордг рдХреА рд╕рдлрд▓рддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрджрд┐ рджрд┐рдП рдЧрдП рдХрдХреНрд╖ рдореЗрдВ рджрд┐рд╢рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╕рдВрдХреНрд░рдордг рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ FALSE рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ)
- рдРрдб-рдореВрд╡ рдХрдореНрдкрд▓реАрдЯ рдХрдорд╛рдВрдб рдХреЛ рдореВрд╡ рдореВрд╡ рдХрдорд╛рдВрдб рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдПрдХ рд▓реЗрдЦ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрдпреЛрдВ рд╣реИ)!
рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЪрд┐рдкреНрд╕, рдЫреЛрдЯреЗ рдмреНрд▓реЙрдХ рддрдХ рдкрд╣реБрдВрдЪрддреЗ рд╣реБрдП, рдПрдХ рд╕рд░реНрдХрд▓ рдореЗрдВ рдЪрд▓рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдЪрд┐рдк рдХреЗ рд▓рд┐рдП рдЗрд╕ "рд╕рдВрд╕рд╛рд░ рдХреЗ рдЪрдХреНрд░" рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдЦрддреНрдо рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (
рдмрджрд▓реЗ рд╣реБрдП рдЪрд┐рдкреНрд╕ рдХреЗ рд▓рд┐рдП, рджрд┐рд╢рд╛
Cnext рдФрд░
Dnext рдХреА рдУрд░ рдЕрдЧреНрд░рд╕рд░ рд╣реЛрддреЗ рд╣реИрдВ)ред рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдЙрд░ рдХреЗ рдЦреЗрд▓ рдореЗрдВ рдЪрд┐рдкреНрд╕ рдХреЛ рддреЛрдбрд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЪрд┐рдк рдХреЛ рдкрд░рд┐рд╡рд░реНрддрди рдХреНрд╖реЗрддреНрд░ рдкрд░ рдЦрдбрд╝реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреБрдЬрд░ рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЪреВрдВрдХрд┐ рдЕрдм рдЪрд┐рдкреНрд╕ рдЕрдВрдд рддрдХ рд╕рднреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдмреЛрд░реНрдб рд╕реЗ рдЪрд┐рдкреНрд╕ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ рдЬреЛ рдЦрддреНрдо рд╣реЛ рдЧрдП рд╣реИрдВ:
рдЪрд┐рдкрдЯрддреЗ рд╣реБрдП рдЪрд┐рдкреНрд╕ VARIABLE isPromouted : common-move ( 'dir n -- ) FALSE isPromouted ! SWAP BEGIN current-player White = IF here p2 ELSE here p4 ENDIF = IF TRUE isPromouted ! ENDIF DUP EXECUTE verify SWAP 1- DUP 0= IF DROP TRUE ELSE SWAP FALSE ENDIF UNTIL empty? IF from here move here h3 = IF capture ENDIF isPromouted @ IF current-piece-type 1+ change-type ENDIF add-move ENDIF ;
рдХрд┐рд▓реЗ рдореЗрдВ рдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВред рд╣рдо
VARIABLE рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП
isPromouted рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдХреЛрдб рдореЗрдВ рдЗрд╕рдХрд╛ рдХреЛрдИ рднреА рдЙрд▓реНрд▓реЗрдЦ рд╕реНрдЯреИрдХ рдкрд░ рдЗрд╕ рдЪрд░ рдХреЗ
рдкрддреЗ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИред рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рдкрд░ рд╕реНрдерд┐рдд рдорд╛рди рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
@ рдХрдорд╛рдВрдб, рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
! рдЪрд░ рдХрд╛ рдорд╛рди рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рддрд╛ рд╣реИред
Axiom рдореЗрдВ рдХреБрдЫ рдЬрдЯрд┐рд▓рддрд╛, рдЖрдХрд╛рд░ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╣реЗрд░рдлреЗрд░ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдВрдХрдбрд╝реЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛрдб рдХреЗ
рдмрд╛рдж рд╕реНрдерд┐рдд рд╣реЛрддреА рд╣реИ рдЬреЛ рдЙрдирдХреЗ рдЖрдВрджреЛрд▓рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреА рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)ред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рд╣рдо рдХреЛрдб рдореЗрдВ рдЖрдХреГрддрд┐рдпреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╡реЗ рдЕрднреА рддрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рд╣реИрдВ)ред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЗрд╕ рдЕрдкреНрд░рд┐рдп рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ, рдЪрд┐рдкреНрд╕ рдХреЛ рдлреНрд▓рд┐рдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмрд╕ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЪрд╛рд▓ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЧреЗрдордкреНрд▓реЗ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдЪрд╛рд▓ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдЗрд╕ рдХрджрдо рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рдФрд░ рдЗрд╕ рдХрджрдо рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ, рдЕрдиреНрдпрдерд╛ред рдпрджрд┐ рдЖрдк рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдЦреЗрд▓ рдХрд┐рд╕реА рднреА рдЦрд┐рд▓рд╛рдбрд╝реА рджреНрд╡рд╛рд░рд╛ рдХрджрдо рдХреА рдкрд╣рд▓реА рдЕрд╕рдВрднрд╡рддрд╛ рдкрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдбреНрд░реЙ рдореЗрдВ рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡реА рдХреА рдмрд╛рд░реА рдХреЛ рдЫреЛрдбрд╝ рдХрд░, "рдЖрдЙрдЯрд▓реЗрдЯ" рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рджреВрд╕рд░реЗ рдХрджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИред рдЪрд▓реЛ рдЗрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ:
рдкреНрд░рдЧрддрд┐ рдХреЛ рдЫреЛрдбрд╝ рджреЗрдВ : is-rosette? ( -- ? ) here i2 = here i4 = OR here l3 = OR here o2 = OR here o4 = OR ; : common-move ( 'dir n -- ) q5 enemy-at? NOT IF FALSE isPromouted ! SWAP BEGIN current-player White = IF here p2 ELSE here p4 ENDIF = IF TRUE isPromouted ! ENDIF DUP EXECUTE verify SWAP 1- DUP 0= IF DROP TRUE ELSE SWAP FALSE ENDIF UNTIL empty? IF from here move here h3 = IF capture ENDIF isPromouted @ IF current-piece-type 1+ change-type ENDIF is-rosette? IF q1 piece-type-at q5 create-piece-type-at ELSE q5 capture-at ENDIF add-move ENDIF ENDIF ; : pass-move ( -- ) q5 capture-at Pass add-move ; {moves i-moves {move} i-move-1 {move-type} normal-type {move} i-move-2 {move-type} normal-type {move} i-move-3 {move-type} normal-type {move} i-move-4 {move-type} normal-type {move} pass-move {move-type} pass-type moves} {moves p-moves {move} p-move-1 {move-type} normal-type {move} p-move-2 {move-type} normal-type {move} p-move-3 {move-type} normal-type {move} p-move-4 {move-type} normal-type {move} pass-move {move-type} pass-type moves} {move-priorities {move-priority} normal-type {move-priority} pass-type move-priorities}
рдХреНрдпрд╛ рдЖрдк рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ
рдЖрдЗрд╕-рд░реЛрд╕реЗрдЯ рдХреА рдЖрдХрд░реНрд╖рдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ
рдкрдХрдбрд╝рддреЗ рд╣реИрдВ? ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, Axiom рдореЗрдВ, ZRF рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЧреЗрдо рдЬрд╝реЛрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ред
рд╕реНрдХрд┐рдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди ZRF рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рднреА рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред "
рдкрд╛рд╕ рдЯрд░реНрди " рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░рдирд╛ Axiom рджреНрд╡рд╛рд░рд╛ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рд╕реНрдХрд┐рдк
рдкрд╛рд╕ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ ZSG рдЪрд╛рд▓рди рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдиреЛрдЯреЗрд╢рди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдкреВрд░реНрдг рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ (рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдВрдЬрди рд╕реЗ ZoG рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг ZRF рдореЗрдВ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░, рдЖрдВрд╢рд┐рдХ рдЪрд╛рд▓ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ рд╕рдордп
рдбреНрд░реЙрдкреНрд╕ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред
рдЯрд┐рдкреНрдкрдгреАрдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ ( рдЗрдВрдЬрди ) рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп ZSG рд╕рдВрдХреЗрддрди рдХреЛ рд╕рдордЭрдирд╛ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред ZoG рдореЗрдВ рдПрдХ рдЪрд╛рд▓ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ ZSG рд╕рдВрдХреЗрддрди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред ZoG рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреАрдХрд░рдг рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди Axiom рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЦрдВрдб рд╣реИ (рдкрд░рд┐рд╢рд┐рд╖реНрдЯ B)ред рдЗрд╕ рдЦрдВрдб рд╕реЗ рдкрд░рд┐рдЪрд┐рдд ZSG рд╕рдВрдХреЗрддрди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд▓рдВрдмреЗ рдкреНрд░рдпреЛрдЧреЛрдВ рд╕реЗ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред
рдкрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрджрдо рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдЕрднрд╛рд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдХрдо рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдХрджрдо рдХреЗрд╡рд▓ рддрднреА рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдЙрдЪреНрдЪ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╡рд╛рд▓реЗ рдХрджрдо рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ,
рдмрд▓ рдХреЗ рд▓рд┐рдП "
рдкрд╛рд╕ рдЯрд░реНрди " рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░рддреЗ рд╕рдордп рдПрдЬрд╝рд┐рдУрдо-рд╕реНрдЯрд╛рдЗрд▓ рд╕реНрдХрд┐рдкрд┐рдВрдЧ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ ZoG рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИред ZRF рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рд╕реНрдХрд┐рдкрд┐рдВрдЧ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ, Axiom рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдмрдЯрди рджрдмрд╛рдирд╛ рд╣реЛрдЧрд╛:

рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛, рдпрд╣ рдмрд╣реБрдд рднреНрд░рдо рдХреА рдмрд╛рдд рд╣реИред
"рдЖрдЙрдЯрд▓реЗрдЯ" рдХреЗ рд▓рд┐рдП рдПрдХ рдХрджрдо рдХреЗ рдмрд╛рдж рдПрдХ рд▓рдВрдШрди рдХрджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрджреГрд╢реНрдп
рддрд╛рд▓рд╛ рдЖрдВрдХрдбрд╝рд╛
q5 рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЦреЗрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдо-рдЪрд╛рд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рджреБрд╢реНрдорди рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХреНрд╖реЗрддреНрд░ рдкрд░ рджреБрд╢реНрдорди рдХрд╛ рдХрдмреНрдЬрд╛ рд╣реИ, рддреЛ рдХреЛрдИ рдЪрд╛рд▓ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред
рдЕрдм, рдпрд╣ рд╕реАрдЦрдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рдкрд╛рд╕рд╛ рдХреИрд╕реЗ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдП:
рд╣рдбреНрдбреА рдлреЗрдВрдХрдирд╛ {players {player} White {player} Black {player} ?Dice {random} players} {turn-order {turn} White {turn} ?Dice {of-type} clear-type {turn} ?Dice {turn} ?Dice {turn} ?Dice {turn} Black {turn} ?Dice {of-type} clear-type {turn} ?Dice {turn} ?Dice {turn} ?Dice turn-order} : drop-dices ( -- ) q2 here = q3 here = OR q4 here = OR empty? AND IF drop add-move ENDIF ; : count-dices ( -- n ) q2 piece-at piece-value q3 piece-at piece-value + q4 piece-at piece-value + DUP 0= IF DROP 4 ENDIF ; : clear-dices ( -- ) q1 here = verify q2 not-empty-at? q3 not-empty-at? q4 not-empty-at? AND AND IF drop q2 capture-at q3 capture-at q4 capture-at add-move ENDIF ; : i-move ( -- ) ['] Anext count-dices common-move ; : p-move ( -- ) ['] Cnext count-dices common-move ; {moves p-moves {move} p-move {move-type} normal-type {move} pass-move {move-type} pass-type moves} {moves drops {move} drop-dices {move-type} normal-type {move} pass-move {move-type} pass-type moves} {moves clears {move} clear-dices {move-type} clear-type moves} {pieces {piece} lock {moves} clears {piece} init {moves} i-moves {piece} prom {moves} p-moves {piece} wdice {drops} drops 1 {value} {piece} bdice {drops} drops 0 {value} pieces}
"рд╣рдбреНрдбрд┐рдпреЛрдВ" (
рдбреНрд░реЙрдк-рдбрд╛рдЗрд╕ ) рдХреЛ рдлреЗрдВрдХрдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдкреНрд░рд╛рдердорд┐рдХ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╕ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд▓рдХреНрд╖реНрдп рдлрд╝реАрд▓реНрдб рдкрд╛рд╕рд╛ рдлреЗрдВрдХрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ,
рдбреНрд░реЙрдк рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЖрдХреГрддрд┐ рдбрд╛рд▓реЗрдВ рдФрд░
рдРрдб-рдореВрд╡ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЪрд╛рд▓ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред
рдХреНрд▓рд┐рдпрд░-рдбрд╛рдЗрд╕ рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИрдВред ZoG рдореЗрдВ, рдмреЛрд░реНрдб рд╕реЗ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдЪрд╛рд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рдПрдХ рдЕрджреГрд╢реНрдп рдЖрдХреГрддрд┐ рдХреЛ
q1 рдлрд╝реАрд▓реНрдб рдореЗрдВ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕рдлрд╛рдИ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ
рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдЦреЗрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмреЛрд░реНрдб рд╕реЗ "рд╣рдбреНрдбрд┐рдпреЛрдВ" рдХреЛ рд╣рдЯрд╛рдирд╛ рдЗрд╕ рдХрджрдо рдХрд╛ рдПрдХ рджреБрд╖реНрдкреНрд░рднрд╛рд╡ рд╣реИред рдпрд╣ рдЧрд┐рд░рд╛рдП рдЧрдП рдмрд┐рдВрджреБрдУрдВ (
рдЧрд┐рдирддреА- рдмрд┐рдВрджреБрдУрдВ) рдХреЛ
рдЧрд┐рдирдиреЗ рдФрд░ рдЗрд╕ рдорд╛рди рдХреЛ
рд╕рд╛рдорд╛рдиреНрдп-рдЪрд╛рд▓ рдореЗрдВ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ
рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ ред
рдЦреЗрд▓ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрди рдЪрд┐рдкреНрд╕ рдХреЛ рдЧрд┐рдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рдмреЛрд░реНрдб рдЫреЛрдбрд╝ рдЪреБрдХреЗ рд╣реИрдВред рдкреВрд░реНрдг рдЬрд╛рдБрдЪ рд╕реНрд╡рдпрдВ рдХреЛ
рдУрд╡рд░рдСрд╕рдо рд╢рдмреНрдж
OnIsGameOver рдХрд╣рдХрд░ Axiom рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХреНрд░рд┐рдпрд╛рдПрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЦреЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЫрджреНрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ рдХреЛ
рдЖрд░рдВрднреАрдХреГрдд рдХрд░рдирд╛), рдЖрдкрдХреЛ
OnNewGame рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
рд╕рдорд╛рдкреНрддрд┐ рдХреА рд╕реНрдерд┐рддрд┐ {board 5 17 {grid} {variable} WhitePieces {variable} BlackPieces board} : WhitePieces++ WhitePieces ++ ; : BlackPieces++ BlackPieces ++ ; : common-move ( 'dir n -- ) q5 enemy-at? NOT IF FALSE isPromouted ! SWAP BEGIN current-player White = IF here p2 ELSE here p4 ENDIF = IF TRUE isPromouted ! ENDIF DUP EXECUTE verify SWAP 1- DUP 0= IF DROP TRUE ELSE SWAP FALSE ENDIF UNTIL empty? IF from here move here h3 = IF current-player White = IF COMPILE WhitePieces++ ELSE COMPILE BlackPieces++ ENDIF capture ENDIF isPromouted @ IF current-piece-type 1+ change-type ENDIF is-rosette? IF q1 piece-type-at q5 create-piece-type-at ELSE q5 capture-at ENDIF add-move ENDIF ENDIF ; : OnNewGame ( -- ) RANDOMIZE ; : OnIsGameOver ( -- gameResult ) repetition-reset #UnknownScore current-player White = IF BlackPieces @ 7 - 0= IF DROP #LossScore ENDIF ENDIF current-player Black = IF WhitePieces @ 7 - 0= IF DROP #LossScore ENDIF ENDIF ;
рдЯрд┐рдкреНрдкрдгреАрдСрди-рдмреЛрд░реНрдб рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ, рдПрдХреНрд╕реАрдУрдо рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдХреА рдзрд╛рд░рд╛ 3.9.4, "рдЕрдкрдбреЗрдЯрд┐рдВрдЧ рдмреЛрд░реНрдб рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕" рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред
рдПрдХ рдкреВрд░реНрдг рдЦреЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрдВрдХрдбрд╝реЛрдВ рдХреА рд▓рдбрд╝рд╛рдИ рдФрд░ рд╡рд┐рд╢реЗрд╖ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдореИрдВ рдЗрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЗрдЦ рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдХреБрдЫ рдирдпрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЬреЛ рдЗрдЪреНрдЫреБрдХ рд╣реИрдВ, рд╡реЗ
GitHub рдкрд░ "рдЙрд░ рдХреЗ рд░реЙрдпрд▓ рдЧреЗрдо" рдХрд╛ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдореВрд▓ рд╡реГрддреНрддрд┐
ZoG рдХрд╛ рдореБрдЦреНрдп рдЖрдХрд░реНрд╖рдг рдЗрд╕рдХреА рдмрд╣реБрдореБрдЦреА рдкреНрд░рддрд┐рднрд╛ рд╣реИред ZRF рдЖрдкрдХреЛ рдмрд╕ рдЕрдкрдиреЗ рдирд┐рдпрдореЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рдЧреЗрдо рдмрдирд╛рдиреЗ (рдпрд╛ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ) рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд╣рд╛рдВ, рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдЦрд░рд╛рдм рд╣реИ, рд▓реЗрдХрд┐рди рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдЦреЗрд▓ рдХрд╛ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЕрд╡рд╕рд░ рдмрд╣реБрдд рд▓рд╛рдпрдХ рд╣реИ! ZoG рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ
рдХреА рд╕рдВрдЦреНрдпрд╛ рдЕрдкрдиреЗ рд▓рд┐рдП рдмреЛрд▓рддреА рд╣реИред
рд╕реНрд╡рдпрдВрд╕рд┐рджреНрдз рднреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╣реИред рдпрд╣ ZoG рдХреА рдХрдИ рдЕрдкреНрд░рд┐рдп рд╕реАрдорд╛рдУрдВ рдХреЛ рджреВрд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдРрд╕реЗ рдмреЛрд░реНрдб рдЧреЗрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ ZoG рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдмреВрд▓рд┐рдпрди рдЭрдВрдбреЗ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд рдЕрдВрдХрдЧрдгрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛, рдЗрд╕ рдЙрддреНрдкрд╛рдж рдХреЛ рдЧреБрдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рд▓реЗ рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ Axiom рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдирд╣реАрдВ рд╣реИ! ZoG рдЕрдЪреНрдЫрд╛ рдпрд╛ рдмреБрд░реА рддрд░рд╣ рд╕реЗ рдЦреЗрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ AI рдПрдХ рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕ рд╣реИред рд╣рдо рдЙрд╕рдХреЗ рдЦреЗрд▓ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! Axiom рд╣рдореЗрдВ рдЗрд╖реНрдЯрддрдо рдХрджрдо рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред
рдПрдЖрдИ рдПрдХреНрд╕рд┐рдУрдо рдХреЗ рдХрд╛рдо рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХреА рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╕рдВрднрд╛рд╡рдирд╛ рд╡рдЬрди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рд╕рднреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐
OnEvaluce рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд
рдХрд░рдирд╛ рд╣реИ ред рдЪрд▓реЛ рд╢реБрд░реВ рд╕реЗ рдЕрдВрдд рддрдХ рдЪрд┐рдкреНрд╕ рдХреЗ рдХреБрд▓ рдкреНрд░рдЪрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдореВрд▓реНрдпрд╛рдВрдХрди рд╕рдорд╛рд░реЛрд╣ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо 0 рдХреЗ рд╡рдЬрди рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрддреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЪрд┐рдкреНрд╕ рдХреЗ рд╕реНрдерд╛рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЬрд┐рди рдЪрд┐рдкреНрд╕ рдиреЗ рдкреВрд░реНрдг рдкрде рдкрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ рдЙрдирдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХреБрдЫ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 100ред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЕрдЧрд░ рдПрдХ рдЪрд┐рдк рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд░реЗрдЯрд┐рдВрдЧ рдореВрд▓реНрдп рддреЗрдЬреА рд╕реЗ рдШрдЯ рдЬрд╛рдПрдЧрд╛ (рдЕрдзрд┐рдХ, рдЖрдЧреЗ рдЪрд┐рдк рд╕рдордп рд╣реИ рдЖрдЧреЗ рдмрдврд╝реЛ)ред рдмреЗрд╢рдХ, рджреБрд╢реНрдорди рдХреЗ рд▓рд┐рдП рд╣рдо рд╡рд┐рдкрд░реАрдд рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рдЙрдард╛рдП рдЧрдП рдПрдХ рд╣реА рдЕрдиреБрдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рджреБрд╢реНрдорди рдХреА рд╕реНрдерд┐рддрд┐ рдЬрд┐рддрдиреА рдЕрдЪреНрдЫреА рд╣реЛрдЧреА, рд╣рдорд╛рд░реА рд╕реНрдерд┐рддрд┐ рдЙрддрдиреА рд╣реА рдЦрд░рд╛рдм рд╣реЛрдЧреА:
рд╕рд░рд▓ рдореВрд▓реНрдпрд╛рдВрдХрди рд╕рдорд╛рд░реЛрд╣ VARIABLE whiteScored VARIABLE blackScored : Score ( value piece-type player pos -- score ) DUP not-empty-at? IF DUP player-at White = IF whiteScored -- ELSE blackScored -- ENDIF DUP ROT SWAP player-at = ROT ROT piece-type-at = AND NOT IF DROP 0 ENDIF ELSE DROP DROP DROP DROP 0 ENDIF ; : OnEvaluate ( -- score ) 7 whiteScored ! 7 blackScored ! 0 1 White i1 Score 0 1 White j1 Score + 0 1 White k1 Score + 0 1 White l1 Score + 0 1 White m1 Score + 0 1 White n1 Score + 0 1 White o1 Score + 0 1 Black i5 Score + 0 1 Black j5 Score + 0 1 Black k5 Score + 0 1 Black l5 Score + 0 1 Black m5 Score + 0 1 Black n5 Score + 0 1 Black o5 Score + 1 1 White l2 Score + -1 1 Black l4 Score + 2 1 White k2 Score + -2 1 Black k4 Score + 3 1 White j2 Score + -3 1 Black j4 Score + 4 1 White i2 Score + -4 1 Black i4 Score + 5 1 White i3 Score + -5 1 Black i3 Score + 6 1 White j3 Score + -6 1 Black j3 Score + 7 1 White k3 Score + -7 1 Black k3 Score + 8 1 White l3 Score + -8 1 Black l3 Score + 9 1 White m3 Score + -9 1 Black m3 Score + 10 1 White n3 Score + -10 1 Black n3 Score + 11 1 White o3 Score + -11 1 Black o3 Score + 12 1 White o2 Score + -12 1 Black o4 Score + 13 1 White p2 Score + -13 1 Black p4 Score + 14 2 White p3 Score + -14 2 Black p3 Score + 15 2 White p4 Score + -15 2 Black p2 Score + 16 2 White o4 Score + -16 2 Black o2 Score + 17 2 White o3 Score + -17 2 Black o3 Score + 18 2 White n3 Score + -18 2 Black n3 Score + 19 2 White m3 Score + -19 2 Black m3 Score + 20 2 White l3 Score + -20 2 Black l3 Score + 21 2 White k3 Score + -21 2 Black k3 Score + 22 2 White j3 Score + -22 2 Black j3 Score + 23 2 White i3 Score + -23 2 Black i3 Score + 1 1 White c2 Score + 1 1 White c3 Score + 1 1 White c4 Score + -1 1 Black d2 Score + -1 1 Black d3 Score + -1 1 Black d4 Score + 3 1 White a2 Score + 3 1 White a3 Score + 3 1 White a4 Score + -3 1 Black b2 Score + -3 1 Black b3 Score + -3 1 Black b4 Score + 7 1 White f2 Score + 7 1 White f3 Score + 7 1 White f4 Score + -7 1 Black f2 Score + -7 1 Black f3 Score + -7 1 Black f4 Score + 10 1 White g2 Score + 10 1 White g3 Score + 10 1 White g4 Score + -10 1 Black g2 Score + -10 1 Black g3 Score + -10 1 Black g4 Score + 11 1 White e2 Score + 11 1 White e3 Score + 11 1 White e4 Score + -11 1 Black e2 Score + -11 1 Black e3 Score + -11 1 Black e4 Score + 17 2 White e2 Score + 17 2 White e3 Score + 17 2 White e4 Score + -17 2 Black e2 Score + -17 2 Black e3 Score + -17 2 Black e4 Score + 18 2 White g2 Score + 18 2 White g3 Score + 18 2 White g4 Score + -18 2 Black g2 Score + -18 2 Black g3 Score + -18 2 Black g4 Score + 21 2 White f2 Score + 21 2 White f3 Score + 21 2 White f4 Score + -21 2 Black f2 Score + -21 2 Black f3 Score + -21 2 Black f4 Score + whiteScored @ 100 * + blackScored @ 100 * - current-player Black = IF NEGATE ENDIF ;
рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, Axiom рд╣рдореЗрдВ рдореВрд▓реНрдпрд╛рдВрдХрди рд╕рдорд╛рд░реЛрд╣ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдХрд┐рд▓реЗ рдХреЗ рд╕рд╛рде рдЖрдордиреЗ-рд╕рд╛рдордиреЗ рдирд╣реАрдВ рдЫреЛрдбрд╝рддрд╛ рд╣реИред рд╕рд╛рдордЧреНрд░реА рдФрд░ рд╕реНрдерд┐рддрд┐ рджреЛрдиреЛрдВ рдШрдЯрдХреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рд╡ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЧрд╛рдЗрдб рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдирд┐рдореНрди рдореВрд▓реНрдпрд╛рдВрдХрди рдлрд╝рдВрдХреНрд╢рди (рдСрдбреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ), рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧреЗрдо рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдЬреИрд╕реЗ рдЪреЗрдХрд░реНрд╕ рдФрд░ рд╢рддрд░рдВрдЬ: : Mobility ( -- mobilityScore ) move-count \ Number of moves available to us. current-player TRUE 0 $GenerateMoves \ Generate moves for opponent move-count \ Number of moves available to opponent. - \
рдпрд╣рд╛рдБ, рдЪрд╛рд▓-рдЧрдгрдирд╛ рдХреЙрд▓ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЪрд╛рд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ , рдФрд░ рд╕рд╛рдордЧреНрд░реА-рд╕рдВрддреБрд▓рди {рдорд╛рди} рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рд╕реМрдВрдкреЗ рдЧрдП рднрд╛рд░ рдХреА рд░рд╛рд╢рд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ, рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ "рд╣рдбреНрдбрд┐рдпреЛрдВ" рдХреЗ рд▓рд┐рдП рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ)редрдпрд╣ рд╕рдм рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЬрдм рдорд┐рдирд┐рдореИрдХреНрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧ рдмреЗрдорд╛рдиреА рд╣реИ? рдЬрд┐рд╕ рдЦреЗрд▓ рдХреЛ рд╣рдо рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрд╕рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрджрдореЛрдВ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдХреЗрд╡рд▓ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдмрд░реНрдмрд╛рджреА рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ, рдпрд╣рд╛рдВ рд╣рдореЗрдВ "рдЖрд░реНрдЯрд┐рдлрд┐рд╢рд┐рдпрд▓ рдЗрдВрдЯреЗрд▓рд┐рдЬреЗрдВрд╕" рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ "рдЖрд░реНрдЯрд┐рдлрд┐рд╢рд┐рдпрд▓ рдЗрдВрд╕реНрдЯрд┐рдВрдХреНрдЯ" рдХреА рдЬрд░реВрд░рдд рд╣реИ! Axiom рд╣рдореЗрдВ рдПрдХ рдЧрд╣рд░реЗ рд╕реНрддрд░ рдкрд░ рдХрджрдо рдЪрдпрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИ:рдордирдорд╛рдиреА рдЪрд╛рд▓ рдЪрдпрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо VARIABLE BestScore \ Keep track of the best score found so far by our search engine. VARIABLE Nodes \ The number of possibilities explored by our search engine. VARIABLE Eated VARIABLE Rosettes : enemy-value-at ( pos -- value ) DUP empty-at? IF DROP 0 ELSE 0 SWAP player-at current-player <> IF DROP 1 ENDIF ENDIF ; : friend-value-at ( pos -- value ) DUP empty-at? IF DROP 0 ELSE 1 SWAP player-at current-player <> IF DROP 0 ENDIF ENDIF ; : Make_enemy_p ( pos -- ) <BUILDS , DOES> @ enemy-value-at ; : Make_friend_p ( pos -- ) <BUILDS , DOES> @ enemy-value-at ; i1 Make_enemy_p e0 j1 Make_enemy_p e1 k1 Make_enemy_p e2 l1 Make_enemy_p e3 m1 Make_enemy_p e4 n1 Make_enemy_p e5 o1 Make_enemy_p e6 i5 Make_enemy_p e7 j5 Make_enemy_p e8 k5 Make_enemy_p e9 l5 Make_enemy_p e10 m5 Make_enemy_p e11 n5 Make_enemy_p e12 o5 Make_enemy_p e13 i2 Make_friend_p r0 i4 Make_friend_p r1 l3 Make_friend_p r2 o2 Make_friend_p r3 o4 Make_friend_p r4 : CountEated ( -- count ) e0 e1 + e2 + e3 + e4 + e5 + e6 + e7 + e8 + e9 + e10 + e11 + e12 + e13 + ; : CountRosettes ( -- count ) r0 r1 + r2 + r3 + r4 + ; : Score ( -- score ) Eated @ CountEated < IF 10 ELSE 0 ENDIF Rosettes @ CountRosettes < IF 5 ELSE 0 ENDIF + ; : Custom-Engine ( -- ) -1000 BestScore ! \ Keep track of the best score. 0 Nodes ! \ Count the number of possibilities explored. CountEated Eated ! CountRosettes Rosettes ! ( Notes: 1 - We do not need to invoke $GenerateMoves since they have already been generated for the current player { since ZoG has called DLL_GenerateMoves prior to calling DLL_Search}. 2 - ZoG does not invoke the search engine if there are no moves, so we can safely assume. that at least one move exists. Thus we can use BEGIN..UNTIL instead of BEGIN...WHILE..REPEAT for iterating moves. ) $FirstMove \ Obtain the address of the first move. BEGIN $CloneBoard \ Create a temporary copy of the current board. DUP $MoveString CurrentMove! \ Inform ZoG of the current move being examined. DUP .moveCFA EXECUTE \ Apply the move to the board by executing its code. Score \ Calculate the score for the new board. BestScore @ OVER < \ Have we found a better score? IF DUP BestScore ! \ Save the improved score. Score! \ Inform ZoG of the improved score. DUP $MoveString BestMove! ELSE DROP \ We didn't find a better move, drop the score. ENDIF $DeallocateBoard \ Done with the revised board. Nodes ++ \ Count one more node explored. Nodes @ Nodes! \ Inform ZoG of the node count. $Yield \ Allow ZoG to dispatch Windows messages. $NextMove \ Advance to the next move. DUP NOT \ No more moves? UNTIL DROP ; {players {player} White {search-engine} Custom-Engine {player} Black {search-engine} Custom-Engine {player} ?Dice {random} players}
рдЗрд╕ рдХреЛрдб рдХрд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЪрд╛рд▓реЛрдВ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ рдФрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд╛рд░реНрдп рдХреЛ рдЕрд╕реНрдерд╛рдпреА рдЕрд╕реНрдерд╛рдпреА рдкрджреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдореВрд▓реНрдпрд╛рдВрдХрди рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рд╡рд╣реА рдлрд╝рдВрдХреНрд╢рди рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╣рдордиреЗ OnEvaluate рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдерд╛ , рд▓реЗрдХрд┐рди рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдореИрдВрдиреЗ рдХреБрдЫ рдмреЗрд╣рдж рдЖрдХреНрд░рд╛рдордХ рдЦреЗрд▓ рд░рдгрдиреАрддрд┐ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдпрджрд┐ рд╢рддреНрд░реБ рдХрд╛ рдЯреБрдХрдбрд╝рд╛ рд▓реЗрдирд╛ рдпрд╛ "рдЖрдЙрдЯрд▓реЗрдЯ" рдкрд░ рдЦрдбрд╝рд╛ рд╣реЛрдирд╛ рд╕рдВрднрд╡ рд╣реИ, рддреЛ рдЗрд╕ рдХрджрдо рдХреЛ рдмреЗрд╣рддрд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкрд╣рд▓реА рдЪрд╛рд▓ рдЬреЛ рд╕рд╛рдордиреЗ рдЖрдИ рд╣реИ рд╡рд╣ рдЪрдпрдирд┐рдд рд╣реИредрд╡реИрд╕реЗ, Axiom рдиреЗ рдкреНрд░рд╛рдердорд┐рдХ рдЧреЗрдо {{}} рдФрд░ {random} рдХреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдпрд╣рд╛рдБ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕реНрд╡рдпрдВрд╕рд┐рджреНрдз рдореЗрдВ рдХреИрд╕реЗ рд╡рд░реНрдгрд┐рдд рд╣реИрдВредрдЖрджрд┐рдо рдЦреЗрд▓ рдХреА рд░рдгрдиреАрддрд┐рдпрд╛рдБ : $RandomMoveEngine $FirstMove 0 $movesList @ CELLSIZE + @ 1- $RAND-WITHIN BEGIN DUP 0> WHILE SWAP @ SWAP $Yield 1- REPEAT DROP ( move ) $MoveString DUP CurrentMove! BestMove! 1 Nodes! 0 Score! 0 Depth! ; : {random} ['] $RandomMoveEngine $CompileEngine ; : $FirstMoveEngine $FirstMove $MoveString DUP CurrentMove! BestMove! $Yield ; : {first} ['] $FirstMoveEngine $CompileEngine ;
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдУрдкрди рд╕реЛрд░реНрд╕ (рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рднреА) рд╕реЛрд░реНрд╕ рдХреЛрдб рдмрдврд╝рд┐рдпрд╛ рд╣реИ!рдЭреВрда, рдЬрд╝рдмрд░рджрд╕реНрдд рдЭреВрда рдФрд░ рдЖрдВрдХрдбрд╝реЗ
рдЦреИрд░, рд╣рдордиреЗ рдПрдХ рдирдпрд╛ рдЧреЗрдо рдмрдирд╛рдпрд╛ рдФрд░ рд╣рдо рдЗрд╕реЗ ZoG рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдордиреЗ рд╡рд┐рднрд┐рдиреНрди рдЪрд╛рд▓рди рдЪрдпрди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╕рд╛рде рдХрдИ рдЦреЗрд▓ рд╡рд┐рдХрд▓реНрдк рд▓рд╛рдЧреВ рдХрд┐рдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдмреЗрд╣рддрд░ рд╣реИ? рдмреЗрд╢рдХ, рдЖрдк рдПрдХ рджрд░реНрдЬрди "рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ" рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рд╕реМ рдмрд╛рд░ рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реЗ рдПрдХ рджреЛрд╕реНрдд рдиреЗ рдХрд╣рд╛, "рдпрд╣ рд╡рд░реНрд╖реЛрдВ рддрдХ рд░рд╣ рд╕рдХрддрд╛ рд╣реИред" рдПрдХ рдмреЗрд╣рддрд░ рддрд░реАрдХрд╛ рд╣реИ!Axiom рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП AutoPlay рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕реНрд╡рдЪрд╛рд▓рди рдХреЗ рдорд╛рд░реНрдЧ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддреЗ рд╣реБрдП рд╣рдореЗрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓рд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЦреЗрд▓ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдирд╛ : (variant (title "Ur [random]")) (variant (title "Ur [simple evaluation]")) (variant (title "Ur [aggressive]"))
ZRF рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЦреЗрд▓ рдХрд╛ рдЪреМрдерд╛ рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ZRF рдХрдирд╡рд░реНрдЯрд░ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓реЙрдиреНрдЪ рдХрд░реЗрдВрдЧреЗред рдкреНрд░реЛрдЧреНрд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд░рдгрдиреАрддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рджрд┐рдЦрддрд╛ рд╣реИ: LOAD Ur.4th ( Load the base Ur game ) {players {player} White {random} {player} Black {random} {player} ?Dice {random} players}
рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рджреЗрдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд╣рдо рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕рднреА рд╕рд╛рдЭрд╛ рдХреЛрдб рдХреЛ рднрд░реА рд╣реБрдИ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВредрд╡рд┐рдХрд▓реНрдк рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЧреЗрдо рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдЧреЗрдо рдореЛрдб рдореЗрдВ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдСрдЯреЛрдкреНрд▓реЗ рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рд╣реИ! рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЦрд┐рд▓рд╛рдбрд╝реА рд╡рд┐рднрд┐рдиреНрди рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреЗрд▓рддреЗ рд╣реИрдВ ред рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрджреЗрд╢ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ: AutoPlay Ur-[random] Ur-[random] 100
рд╕рдм рдХреБрдЫ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ рд╣реИред рд╣рдо рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ (рдСрдЯреЛрдкреНрд▓реЗ рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдЕрдзрд┐рдХ рдЦрд┐рд▓рд╛рдбрд╝реА рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ) рдФрд░ рдЧреЗрдо рдХреА рд╕рдВрдЦреНрдпрд╛ред рдлрд┐рд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрдкрдиреЗ рдЖрдк рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЕрдЧрд░ рд╡рд╣ рдЗрди рдЦреЗрд▓реЛрдВ рдХреЛ ZoG рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреЗрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЙрд╕рд╕реЗ рднреА рдЬреНрдпрд╛рджрд╛ рддреЗрдЬреА рд╕реЗ рдХрд░рддреА рд╣реИ! рдЖрдЙрдЯрдкреБрдЯ рдПрдХ рдмрдбрд╝реА рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рд╣реИ рдЬрд┐рд╕рдореЗрдВ ZSG рдиреЛрдЯреЗрд╢рди рдореЗрдВ рдЦреЗрд▓реЗ рдЧрдП рд╕рднреА рдЧреЗрдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди рд╣реИред рд╕рдмрд╕реЗ рдЕрдВрдд рдореЗрдВ, рдЕрдВрддрд┐рдо рдЖрдВрдХрдбрд╝реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐, рдмрд╢рд░реНрддреЗ рдХрд┐ рдЪрд╛рд▓реЛрдВ рдХреЛ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд╣рд▓рд╛ рдХрджрдо рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдереЛрдбрд╝рд╛ рдлрд╛рдпрджрд╛ рд╣реЛрддрд╛ рд╣реИ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕ рддрдереНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рд╡рд╣ рд╣рдореЗрд╢рд╛ "рдЗрдХрд╛рдИ" рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ): Final results: Player 1 "Ur-[random]", wins = 52. Player 2 "Ur-[random]", wins = 48. Draws = 0 100 game(s) played
рдПрдХ рдкреВрд░реНрдг ZSG рд╡рд┐рд╡рд░рдг рд╣реЛрдиреЗ рд╕реЗ, рд╣рдореЗрдВ рдереЛрдбрд╝рд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж, рдХрд┐рд╕реА рднреА рдмреИрдЪ рдХреЛ ZoG рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЪрд░рдг рджрд░ рдЪрд░рдг рдЗрд╕рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рд╡реИрд╕реЗ, рдпрд╣ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдЦреЛрдЬрд╛ рдЧрдпрд╛ рдФрд░ рд╕рд╣реА рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕реЛрдЪрд╛ рдерд╛ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕рдВрдХреНрд░рдордг рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдерд╛)редрдПрдХ рдкреВрд░реНрдг ZSG рд╡рд┐рд╡рд░рдг рд╣реЛрдиреЗ рдХрд╛ рдПрдХ рдФрд░ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐, рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдХрд┐рд╕реА рднреА рдЖрд╡рд╢реНрдпрдХ рдЖрдВрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╣рдо рдЬреАрддреЗ / рдЦреЛрдП рдЧрдП рдЦреЗрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд░рд▓ рдЕрдиреБрдкрд╛рдд рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЦреЗрд▓ рдХреА рдЕрд╡рдзрд┐ рдкрд░ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЦреЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдЕрдВрддрд┐рдо рд╕реНрдХреЛрд░, рдорд┐рд╕реНрдб рдЪрд╛рд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЪрд┐рдкреНрд╕ "рдЧрд┐рд░" рдХреА рд╕рдВрдЦреНрдпрд╛:рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рд╣реИ рдЬреЛ рд╣рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдП рдЧрдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рдЧреЗрдо рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдо рддреАрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ:- рдЪрд╛рд▓ рдХреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде ( рдпрд╛рджреГрдЪреНрдЫрд┐рдХ )
- рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдореВрд▓реНрдпрд╛рдВрдХрди рдлрд╝рдВрдХреНрд╢рди ( рд╕рд░рд▓ ) рдХреЗ рд╕рд╛рде
- "рдЖрдХреНрд░рд╛рдордХ" рдЪрдпрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реНрдЯреНрд░реЛрдХ рдХреЗ рд╕рд╛рде ( рдЖрдХреНрд░рд╛рдордХ )
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрдирд╛рдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХрдкрд╛рд░реНрдЯреА рдХреА рдЕрд╡рдзрд┐ (рд╡рд┐рд░реЛрдзрд┐рдпреЛрдВ, рдЦреЗрд▓ рдордЬрдмреВрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд╕рддрди, рд╕реНрдЯреНрд░реЛрдХ рдереЛрдбрд╝рд╛ 150 рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ):
рдЪрд┐рдкреНрд╕ рдмреЛрд░реНрдб рдкрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдХреА рд░рд╛рд╢рд┐ (рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп - рдкрд╣рд▓реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рд╣рд╛рдирд┐):
рдПрдХ рд╣реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдЪрд┐рдк "рдиреАрдЪреЗ рдХрдЯ" рдХреА рд╕рдВрдЦреНрдпрд╛:
рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рдЕрднреА рд╢реБрд░реБрдЖрдд рд╣реИ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдПрдХ рдорд╛рдореВрд▓реА рд▓рд╛рдн рд╣реИ: Final results: Player 1 "Ur-[random]", wins = 52. Player 2 "Ur-[random]", wins = 48. Draws = 0 100 game(s) played
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрдирд╛рдо рд╕рд░рд▓:

:
Final results: Player 1 "Ur-[random]", wins = 50. Player 2 "Ur-[simple-evaluation]", wins = 50. Draws = 0 100 game(s) played
рд╕рд░рд▓ рдмрдирд╛рдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ:

┬л┬╗ :

Final results: Player 1 "Ur-[simple-evaluation]", wins = 87. Player 2 "Ur-[random]", wins = 13. Draws = 0 100 game(s) played
рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмрдирд╛рдо рдЖрдХреНрд░рд╛рдордХ:
random ( ):

, , ┬л┬╗ :

┬л┬╗ , !
Final results: Player 1 "Ur-[random]", wins = 25. Player 2 "Ur-[aggressive]", wins = 75. Draws = 0 100 game(s) played
рдПрдЧреНрд░реЗрд╕рд┐рд╡ рдмрдирд╛рдо рд░реИрдВрдбрдо:

┬л┬╗ ┬л┬╗ !

, ┬л┬╗ , :

Final results: Player 1 "Ur-[aggressive]", wins = 90. Player 2 "Ur-[random]", wins = 10. Draws = 0 100 game(s) played
рд╕рд░рд▓ рдмрдирд╛рдо рдЖрдХреНрд░рд╛рдордХ, . ,
simple :

!

Final results: Player 1 "Ur-[simple-evaluation]", wins = 73. Player 2 "Ur-[aggressive]", wins = 27. Draws = 0 100 game(s) played
рдПрдЧреНрд░реЗрд╕рд┐рд╡ рдмрдирд╛рдо рд╕рд░рд▓,
agressive :

┬л┬╗ , , ┬л┬╗:

Final results: Player 1 "Ur-[aggressive]", wins = 64. Player 2 "Ur-[simple-evaluation]", wins = 36. Draws = 0 100 game(s) played
рд╡реИрд╕реЗ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрджреНрднреБрдд рд░реЗрдЦрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ: Draws = 0
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ Axiom "3-рд╕рдордп рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдбреНрд░рд╛!" рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдореИрдВрдиреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрднрд╛рдЧ рдХрд╛ рд╕рд╛рд╡рдзрд╛рдиреАрдкреВрд░реНрд╡рдХ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рдФрд░ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреАред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ ZoG рдореЗрдВ рдпрд╣ рд╕реНрдерд┐рддрд┐ рдЕрднреА рднреА рдкреИрджрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╕рдлреЗрдж рдФрд░ рдХрд╛рд▓реЗ рдЪрд┐рдкреНрд╕ рдХреА рд▓рдВрдмреА рд╢реНрд░реГрдВрдЦрд▓рд╛рдПрдВ (рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ 3-4 рдЪрд┐рдкреНрд╕) рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рддреА рд╣реИрдВред "рд░реЙрдпрд▓ рдЙрд░" рдореЗрдВ, рд╕реБрд░рдХреНрд╖рд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдореЗрд╢рд╛ рдЙрдирдХреЗ рд▓рд┐рдП рдлреИрд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ZoG (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ Axiom рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ) рдЪрд┐рдкреНрд╕ рдХреЗ рдлреИрд▓рдиреЗ рддрдХ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ! рдФрд░ рдпрд╣рд╛рдБ AutoPlay рд╣реИ, рдЕрдВрдд рддрдХ рд╕рднреА рдЧреЗрдо рдЦреЗрд▓ рд░рд╣рд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрд╣рд╛ рдерд╛, рдЗрд╕реЗ ZoG рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдЦрд░реАрджреЗ рдмрд┐рдирд╛ рднреА рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдмрд╕ рдХреЛрдИ рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред... рдФрд░ рдПрдХ рд╣рдЬрд╛рд░ рд╣рд╛рдереА!
рдмреЗрд╢рдХ, рд╕рд┐рд░реНрдл рдПрдХ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЬрдЯрд┐рд▓ рдФрд░ рдмрд╣реБрдореБрдЦреА рдЙрддреНрдкрд╛рдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдХреЛ рдмрддрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ Axiom Development Kitред рджреЗрдЦреЗрдВ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдХреНрдпрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдШреЛрд╖рд┐рдд рдХреА рд╣реИрдВ:Axiom рдЗрдВрдЬрди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ- Contains a universal game engine designed to play a large variety of games. The search engine is not optimized for any particular class of games.
- Allows (actually requires) the game programmer to specify a custom game AI. This is one of the main benefits of Axiom. Some 'built-in' AI helpers are provided. For example, one helper is simply the difference between the number of available moves for each player, another takes into consideration material advantage. The list is expected to grow over time.
- ┬лMinimax with Alpha-Beta pruning┬╗ search algorithm.
- Iterative deepening with transposition table.
- Zobrist hashing
- Limited move reordering based on 'best move from previous iteration' stored in the transposition table.
- Full width searching.
- Support for 'partial' and 'pass' moves.
- Supports 'teams'.
- Time management.
- Supports additional user-supplied custom engines.
- Programmer controlled quiescence (currently experimental)
рд╕рдордп рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рднреА рд╣реИ, рдФрд░ рдЯреАрдо рдкреНрд▓реЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди, рдЬреЛ рдХрд┐ ZoG рдореЗрдВ рдХрдореА рдереАред Axiom "рдХрдиреЗрдХреНрд╢рди" рдФрд░ "рдХреНрд╖реЗрддреНрд░ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ" рдХреЗ рд▓рд┐рдП рдЦреЗрд▓реЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ (рд░рд┐рдВрдЧ рдмрдлрд░) рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рд╣рдж рддрдХ рдирд┐рд░рд╛рд╢рд╛ рдХреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЯреБрдХрдбрд╝реЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреЛрдУрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╢рддрд░рдВрдЬ рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдПрдХреНрд╕рд┐рдУрдо рдЗрд╕ рдХрд╖реНрдЯрдкреНрд░рдж рд╕реАрдорд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИредрдЕрд▓рдЧ рдФрд░ рдмрд╣реБрдд рдЧрд░реНрдо рд╢рдмреНрдж рдкреНрд░рд▓реЗрдЦрди рдФрд░ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВред рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╕реНрддреБрдд рдХреА рдЧрдИ рддрд╛рдХрд┐ рдЗрд╕рдХрд╛ рдЖрддреНрдорд╕рд╛рдд рдХрд┐рд╕реА рднреА рдХрдард┐рдирд╛рдЗрдпреЛрдВ рд╕реЗ рдЬреБрдбрд╝рд╛ рди рд╣реЛред рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ, рддреЛ ZoG рд╡реЗрдмрд╕рд╛рдЗрдЯ рдореЗрдВ Axiom рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рдХрд╕рд┐рдд 60 рд╕реЗ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИрдВ, рдЬреЛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВред