рдПрдлрдкреА рдореЗрдВ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдбрд┐рдЬрд╛рдЗрдиред рдЖрдЗрдбрд┐рдпрд╛ рдЕрдЪреНрдЫреЗ рдбрд┐рдЬрд╛рдЗрди рдХреА рдиреАрдВрд╡ рд╣реИред рд╣рд╛рд╕реНрдХреЗрд▓ рдореЗрдВ рдПрдВрдЯреАрдкрд╛рд░реНрдЯрд░реНрдиредрд╕рд┐рджреНрдзрд╛рдВрдд рдХреА рдмрд┐рдЯ
рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ред рд╣рдордиреЗ рдЙрдк-рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдФрд░ рдЙрдирдХреЗ рд░рд┐рд╢реНрддреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреА, рдФрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рддреАрди рдкрд░рддреЛрдВ рдореЗрдВ рднреА рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛: рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдЧреЗрдо рд▓реЙрдЬрд┐рдХ, рд╡реНрдпреВред рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ, рдЕрдЧрд▓рд╛ рдЪрд░рдг рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реИред рдпрд╣ рдЪрд░рдг рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбрд┐рдЬрд╛рдЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╕рднреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрдк-рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рдирд╛, рдореБрдЦреНрдп рддрдХрдиреАрдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛, рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдпрд╛ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЖрдирд╛ред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рдЖрдЗрдП рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ: рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбрд┐рдЬрд╝рд╛рдЗрди? рдХрд┐рд╕реА рдбрд┐рдЬрд╛рдЗрди рдХреЗ "рдЕрдЪреНрдЫрд╛рдИ" рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рд╣рдо рдХрд┐рд╕ рдорд╛рдкрджрдВрдб рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ?
рдпрд╣рд╛рдВ рддреАрди рд╕рдВрднрд╛рд╡рд┐рдд рдЙрддреНрддрд░ рджрд┐рдП рдЧрдП рд╣реИрдВ:
- рдкреВрд░реНрдгрддрд╛ ред рдПрдХ рдЕрдЪреНрдЫрд╛ рдбрд┐рдЬрд╛рдЗрди рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рд░рдЦрд░рдЦрд╛рд╡ рдФрд░ рд╢реБрд░реВрдЖрдд рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рдЧрддреЛрдВ рдХреЗ рд╕рд╛рде рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдкреНрд░рджрд░реНрд╢рди ред рдЕрдЪреНрдЫрд╛ рдбрд┐рдЬрд╛рдЗрди рд╡рд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╡рд┐рдХрд╛рд╕ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рд╕рд╛рджрдЧреА ред рдЕрдЪреНрдЫрд╛ рдбрд┐рдЬрд╛рдЗрди рд╡рд╣ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рд╕рд░рд▓ рдХрд╛рд░реНрдп рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдкрд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣ рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рд╕реЗ рдЖрддрд╛ рд╣реИ рдХрд┐ рд╕рдЯреАрдХрддрд╛ рдФрд░ рдкреВрд░реНрдгрддрд╛ (рдПрд╕ рдЯреЗрдкреНрд▓рд╛рдХреЛрд╡, "
рдСрди рдбрд┐рдЬрд╛рдЗрди ") рдХрд╛ рддреНрдпрд╛рдЧ рдХрд┐рдП рдмрд┐рдирд╛, рдПрдХ рдЕрдЪреНрдЫрд╛ рдбрд┐рдЬрд╛рдЗрди 10 рдорд┐рдирдЯ рдореЗрдВ рд╕рдордЭрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдКрдкрд░ рдЪрд┐рддреНрд░ рджреНрд╡рд╛рд░рд╛ рдЪрд┐рддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдЪрд╛рд░реНрдЯ: рд▓рдХреНрд╖реНрдп-рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ-рд╕рд░рд▓рддрд╛ рдпрд╣рд╛рдВ, рдмрд╛рд╣рд░реА рддреНрд░рд┐рдХреЛрдг рдПрдХ рдЖрджрд░реНрд╢ рдХрд╛рд▓реНрдкрдирд┐рдХ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рддреАрди рдорд╛рдирджрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ 100% рд╕рдВрддреБрд╖реНрдЯ рд╣реИред рд▓рд╛рд▓ рддреНрд░рд┐рдХреЛрдг рдорд╛рдорд▓реЛрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдмрд╛рд╣рд░реА рддреНрд░рд┐рдХреЛрдг рдХреЗ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдХрд╛ рдХреЗрдВрджреНрд░ рд╢реВрдиреНрдп рдмрд┐рдВрджреБ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрдм рдорд╛рдирджрдВрдб рдХреЛ "рдирдХрд╛рд░рд╛рддреНрдордХ" рдкрдХреНрд╖ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╡рд┐рднрд┐рдиреНрди рд╕рдорд╕реНрдпрд╛ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рддреЛрдбрд╝рдлреЛрдбрд╝ рдХреА рддрд░рд╣ рдЕрдзрд┐рдХ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг:
- рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЯреАрдо рдмреЛрдирд╕ рдХреА рдЦреЛрдЬ рдореЗрдВ рдпрд╛ рдЕрдиреНрдп рдкреНрд░реЗрд░рдгрд╛ рдХреЗ рдХрд╛рд░рдг рд╣рд┐рдВрд╕рдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреА рд╣реИред рдЯреАрдо рдиреЗ рдЕрдкрдиреЗ рд▓рдХреНрд╖реНрдп, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ, рдЖрдВрддрд░рд┐рдХ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдП; рд╡реЗ рдмрд╛рдЬрд╛рд░ рдпрд╛ рдХрдВрдкрдиреА рдХреЗ рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЙрддреНрдкрд╛рдж рд╡рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИред
- рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╕рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: рд╣рдордиреЗ рджреЛ рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП "рдЯрд┐рдХ-рдЯреИрдХ-рдЯреЛ" рдЦреЗрд▓ рдмрдирд╛рдпрд╛, рдпрд╣ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЖрдк рдЗрд╕реЗ рдХреЛрдиреЛрдВ рдореЗрдВ рднреА рд▓реВрдЯ рд╕рдХрддреЗ рд╣реИрдВ ... рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐рдпреЛрдЧрд┐рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрд╣рд▓реЗ рд╣реА рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЕрдм рд╣рдо рдХрд╛рдо рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВред
- рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓рдХреНрд╖реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛрдб рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ... рдбрд┐рдЬрд╛рдЗрди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдкрд░реЗрдЦрд╛ рдЕрддреНрдпрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреА рдЧрдИ рд╣реИ, рдФрд░ рдЯреАрдо рдХреЗ рдХреЗрд╡рд▓ рджреЛ рд▓реЛрдЧ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдЪрд╛рд░реНрдЯ рдпрд╣ рдЕрдм рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЕрдЪреНрдЫрд╛ рдбрд┐рдЬрд╛рдЗрди рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХреНрдпреЛрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЙрдкрд░реЛрдХреНрдд рдорд╛рдирджрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реИред рд╕рд╛рд╣рд┐рддреНрдп рдореЗрдВ, рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рд╕рд╡рд╛рд▓ рдХрд╛ рдХреЛрдИ рдЬрд╡рд╛рдм рдирд╣реАрдВ рд╣реИ; рдЖрдк рд╕рд╛рдорд╛рдиреНрдп рд╕реБрдЭрд╛рд╡ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ: "рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ", "рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ", "рдЗрд╕ рдФрд░ рдЙрд╕ рдХрд╛ рдирд╛рдо рдореЙрдбрд▓ рдХрд░реЗрдВ"ред рдпреБрдХреНрддрд┐рдпрд╛рдБ рд╕рд╣реА рд╣реИрдВ: рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдорд╣рд╛рди рдХреЛрдб рдХреИрд╕реЗ рдорд┐рд▓рддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдХреЛрдб рдбрд┐рдЬрд╛рдЗрди рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдмрд╕реЗ рдкрд╛рд▓реЗ рд╣реБрдП рдХреЛрдб рдХреЗ рд╕рд╛рде, "рдЕрдЪреНрдЫреЗ" рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╕рднреА рддреАрди рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ - рдбрд┐рдЬрд╛рдЗрди рдХреЛ
рд╕рд░рд▓ рдФрд░ рдкреВрд░реНрдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
рдпрд╣ рдХрд╣рд╛рдВ рд╕реЗ рдЖрддрд╛ рд╣реИ? рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ UML рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдВрдб-рдЯреВ-рдПрдВрдб рдореЙрдбрд▓рд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓реЗрдВред рдбреЗрд╡рд▓рдкрд░ рдЖрд░реЗрдЦ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ: рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ тЖТ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рджреГрд╢реНрдп тЖТ рдЕрдиреБрдХреНрд░рдо рдЖрд░реЗрдЦ тЖТ рд╡рд╕реНрддреБ рдЖрд░реЗрдЦ тЖТ рд╕рдВрдЪрд╛рд░ рдЖрд░реЗрдЦ тЖТ рдХрдХреНрд╖рд╛ рдЖрд░реЗрдЦ тЖТтАжред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдбреЛрдореЗрди рд╢рдмреНрдж рдХрдХреНрд╖рд╛рдПрдВ, рдореЙрдбреНрдпреВрд▓, рдкреИрдХреЗрдЬ рдФрд░ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдмрди рдЬрд╛рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдЗрд╕ рдпрд╛
рдЗрд╕ рддрд░рд╣ )ред рд▓рдХреНрд╖реНрдп рд╕рд░рд▓ рд╣реИ: рдЙрдирдХреЗ рд╕рд╛рде рд╕рднреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛; рдпрд╣ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рд╣реЗрдб-рдСрди", рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ рджреЗрдЦрддреЗ рдФрд░ рд╕рдордЭрддреЗ рд╣реИрдВред рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╣рдорд╛рд░реЗ рдЬреНрдЮрд╛рди рдХреЛ рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдПрдХ рдореЙрдбрд▓ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рддрдиреЗ рдирд┐рдХрд╛рдп рд╣реЛрдВрдЧреЗ, рдХрд┐рддрдиреЗ рддрддреНрд╡ рд╣реЛрдВрдЧреЗ, рдФрд░ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╡реЗрдм рдХреНрдпрд╛ рд╣реЛрдВрдЧреЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдПред рдЙрд╕реА рд╕рдордп, рдбреАрдПрд╕рдПрд▓ рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЛрдореЗрди-рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рд╖рд╛ рдХрд┐рд╕реА рднреА рдЖрд░реЗрдЦ рд╕реЗ рд╕реАрдзреЗ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдХреНрдпрд╛ рдореЙрдбрд▓ рд╕рд░рд▓ рдФрд░ рдкреВрд░реНрдг рд╣реЛрдЧрд╛? рдЕрдЬреНрдЮрд╛рддред
рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рдЙрдЪреНрдЪрддрдо рд╕реНрддрд░ рдкрд░, рд╣рдорд╛рд░реА рджреБрдирд┐рдпрд╛ рдЕрддреНрдпрд╛рд╡рд╢реНрдпрдХ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдПрдХ рд░рд╛рдЬреНрдп рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕ рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рд╣рдореЗрд╢рд╛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реЛрддрд╛ рд╣реИред "рдЪреМрд░рд╛рд╣реЗ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдмрд╛рдПрдВ рджреЗрдЦреЗрдВ, рдлрд┐рд░ рджрд╛рдПрдВ, рдФрд░ рдЕрдЧрд░ рдХреЛрдИ рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЬрд╛рдПрдВред" рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рдЗрд╕ рдПрдХ-рд╕реЗ-рдПрдХ рд╕реНрддрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рджреБрдирд┐рдпрд╛ рдХреЗ рдЕрдореВрд░реНрдд рдХреЗ рдЧрд╣рд░реЗ рд╕реНрддрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рдирд╣реАрдВ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЧреБрдгреЛрдВ рдФрд░ рдХрд╛рдиреВрдиреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ, рди рдХрд┐ рд╕рдВрд╕реНрдерд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ред "рдЖрдк рдХреЛрдИ рдЦрддрд░рд╛ рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рд╕рдбрд╝рдХ рдкрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред" рднреМрддрд┐рдХ рджреБрдирд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рд╡рд╛рд░реНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рдЧрд▓рддреА рд╣реЛрдЧреА: "рдЕрдЧрд░ рдкреГрдереНрд╡реА рдЕрднреА рддрдХ рдЕрдЧрд▓реЗ рд╕реЗрдХрдВрдб рдореЗрдВ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреА рд╣реИ, рддреЛ рдЧрд┐рд░ рджрд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХрд░реЗрдВ"ред рдПрдПрдл рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЗрд╡рд▓ рдмрд┐рдЧрдбрд╝рддреА рд╣реИред рд╣рдо рдЖрдЧреЗ рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ "рд╣реЗрдб-рдСрди" рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЧрдВрднреАрд░ рд╡реИрдЪрд╛рд░рд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдб рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдпрд╣ рдЕрдзреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдлрдкреА рдХреЗ рд╕рднреА рд▓рд╛рдн рдмрд╕ рдЦреЛ рдЬрд╛рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдФрд░ рдХрд╛рдиреВрдиреЛрдВ рдореЗрдВ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдПрдлрдкреА рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред
рд╣рдо рдЗрд╕реЗ "рдЕрдЪреНрдЫреЗ" рдбрд┐рдЬрд╛рдЗрди рдХреА рдЪреМрдереА рдХрд╕реМрдЯреА рдкрд░ рдХрд╕рддреЗ рд╣реИрдВ:
4.
рдореМрд▓рд┐рдХ ред рдЕрдЪреНрдЫрд╛ рдбрд┐рдЬрд╛рдЗрди рд╡рд╣ рд╣реИ рдЬреЛ рд╕рд╣реА рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЬреЛ рдХрд┐ рдореМрд▓рд┐рдХ рд╕реНрддрд░ рдкрд░ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, "рдпрд╣ рдХреНрдпрд╛ рд╣реИ," рдирд╣реАрдВ "рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред"
рдЪрд╛рд░реНрдЯ: рд░рд╛рдЗрдЯ рдЖрдЗрдбрд┐рдпрд╛ рдмреЗрд╕рд┐рд╕ рдСрдл рдЧреБрдб рдбрд┐рдЬрд╛рдЗрди рд╣реИ рд╕рд╣реА рд╡рд┐рдЪрд╛рд░ рдЖрдо рддреМрд░ рдкрд░ рд╣рд░ рдЬрдЧрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддреЗ рд╣реИрдВред рдХреЛрдИ рднреА рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдЕрд╡рдзрд╛рд░рдгрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд┐рдЪрд╛рд░ рдХрд╛ рд╕рд╛рд░ рд╣реИ рдЬрд┐рд╕рд╕реЗ рд╕рднреА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред рд░рд┐рдореИрди рдЗрдВрдЯреАрдЧреНрд░рд▓, рдЗрдиреНрдлрд┐рдирд┐рдЯрд┐рд╕рд┐рдорд▓ рдХреЗ рдпреЛрдЧ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЖрдЗрдВрд╕реНрдЯреАрди рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╕рд╛рдкреЗрдХреНрд╖рддрд╛ рдЬрдбрд╝рддрд╛ рдФрд░ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рджреНрд░рд╡реНрдпрдорд╛рди рдХреА рд╕рдорд╛рдирддрд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рд╕реНрдХрд╛рд▓рд╛ рднрд╛рд╖рд╛ рдХрд╛ рдЖрдзрд╛рд░ рдпрд╣ рд╕реНрдерд┐рддрд┐ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдПрдХ рд╡рд╕реНрддреБ рд╣реИ, рдФрд░ рдХреЛрдИ рднреА рд╡рд╕реНрддреБ рдПрдХ рдХрд╛рд░реНрдп рд╣реИред рдФрд░ рд▓рд┐рд╕реНрдк рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕реВрдЪреА рд╣реИред рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдирд┐рд░реНрдгрд╛рдпрдХ рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдИ рдлрд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдЕрдЪреНрдЫреЗ рдФрд░
рдмреБрд░реЗ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ? рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рд░рд╛рдЬреНрдп рдорд╢реАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореМрдЬреВрдж рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рд░рд╛рдЬреНрдп рдорд╢реАрди рдХрд┐рд╕реА рднреА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИ, рднрд▓реЗ рд╣реА рд╡рд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реЛред рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрди рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдорд┐рд╢реНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреЛрдб рдЕрдкреНрд░рднрд╛рд╡реА рджрд┐рдЦрддрд╛ рд╣реИ, рдЗрд╕реЗ рдЕрдм рдкреБрди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬреИрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ:
рдкрд╛рд░рд╕реЗрдХ ,
рдмреВрд╕реНрдЯ.рд╕рдкрд┐рд░рд┐рдЯ ред рд╣рдордиреЗ рдХреЙрдореНрдмреАрдиреЗрдЯрд░рд┐рдпрд▓ рдбреАрдПрд╕рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдФрд░ рдмрд╕ рдЗрдирдЖрдИ-рдлрд╛рдЗрд▓ рдХреЗ рдЧреБрдгреЛрдВ - рдЗрд╕рдХреЗ рд╡реНрдпрд╛рдХрд░рдг - рдХреЛ рдХреЛрдб рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред
DSL рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдореЗрдВ, рд╣рдо рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдФрдкрдЪрд╛рд░рд┐рдХ рднрд╛рд╖рд╛ рдкрд░ рдореИрдк рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд╣реА рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдирд╣реАрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рд╕рд╛рдВрдХреЗрддрд┐рдХ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдмрджрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рд╕реЗрдЯ; рдлрд┐рд░ рдХрд┐рд╕реА рднреА рдЗрдХрд╛рдИ рдХреЛ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрдо рдЧреБрдг рдФрд░ рдХрдо рдмрд╛рддрдЪреАрдд рд╣реЛрдЧреА (рд╡реИрд╕реЗ, рднреМрддрд┐рдХ рд╡рд┐рдЬреНрдЮрд╛рдиреА рдмреНрд░рд╣реНрдорд╛рдВрдб рдХреА рдореВрд▓рднреВрдд рдиреАрдВрд╡ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ)ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЪреМрдерд╛ рдорд╛рдирджрдВрдб рд╣рдореЗрдВ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛрдЧрд╛ "рдиреАрдЪреЗ рд╕реЗ", рд╕рдмрд╕реЗ рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рд╕реЗ рд╢реБрд░реВ, рдЬрд┐рд╕реЗ рд╣рдо рдПрдХ рд╕рдлрд▓ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рдереЗред
рдереЛрдбрд╛ рдЕрднреНрдпрд╛рд╕
рдирд┐рд░рд╛рдзрд╛рд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╣рдо "рдж рдЕрдореАрдмрд╛ рд╡рд░реНрд▓реНрдб" рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╛рдЗрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред рдпрд╣ рдЕрдореАрдмрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдмрд╕реА рджреБрдирд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд░рдгрдиреАрддрд┐рдХ рдЦреЗрд▓ рд╣реИред рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдЕрдореАрдмрд╛рдУрдВ рдХреА рдХреЙрд▓реЛрдиреА рдореЗрдВ рдСрд░реНрдбрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд░ 10 рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдмрд╛рд░ рдЖрдордВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИред рдЕрдореАрдмрд╛ рдКрд░реНрдЬрд╛ рдкреИрджрд╛ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрд╡рд╢реЛрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдмрдврд╝рддреЗ рд╣реИрдВ, рдХреНрд╖реЗрддреНрд░ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдбрд╝рддреЗ рд╣реИрдВред рд╕рдВрд╕рд╛рдзрди рдКрд░реНрдЬрд╛ рд╣реИред рдЕрдореАрдмрд╛ рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд▓рд╛рдЬреНрдорд╛ рдореЗрдВ рдСрд░реНрдЧреЗрдиреЗрд▓ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдПрдХ рдирд╛рднрд┐рдХ рдЬреЛ рдПрдХ рдмреИрдЯрд░реА, рдорд╛рдЗрдЯреЛрдХреЙрдиреНрдбреНрд░рд┐рдпрд╛ - рдКрд░реНрдЬрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд░рдХреНрд╖рд╛ рдФрд░ рд╣рдорд▓реЗ рдХреЗ рд▓рд┐рдП рдСрд░реНрдЧреЗрдиреЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдЦреЗрд▓ рдХреА рджреБрдирд┐рдпрд╛ рдЕрдВрддрд╣реАрди рд╣реИ рдФрд░ рдПрдХ рд╡рд░реНрдЧ рдЧреНрд░рд┐рдб рд╣реИред рдЕрдореАрдмрд╛рдУрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдореЗрдВ рдШрд╛рдЯреА, рдирджреА, рдкрддреНрдерд░, рдЕрддрд┐рд░рд┐рдХреНрдд рдКрд░реНрдЬрд╛ рдХреЗ рд╕реНрд░реЛрдд рдФрд░ рдЕрдиреНрдп рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВред рджреБрдирд┐рдпрд╛ рдХреА рддреАрди рдкрд░рддреЗрдВ рд╣реИрдВ: рдЬрдореАрди, рд╣рд╡рд╛ рдФрд░ рднреВрдорд┐рдЧрдд, рдЕрдкрдиреА рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдХрд╛рдиреВрдиреЛрдВ рдХреЗ рд╕рд╛рдеред
рдЦреЗрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдереАрдВ?
- рд╡рд┐рд╕реНрддрд╛рд░: рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЦреЗрд▓ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
- рднрд┐рдиреНрдирддрд╛: рд╡рд╕реНрддреБрдПрдВ рдЬрдЯрд┐рд▓ рдФрд░ рд╕рд░рд▓, рд╕рдХреНрд░рд┐рдп рдФрд░ рдирд┐рд╖реНрдХреНрд░рд┐рдп, рдорд╣рдВрдЧреА рдФрд░ рд╕рд╕реНрддреА, рдЯрд┐рдХрд╛рдК рдФрд░ рдирд╛рдЬреБрдХ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рд╡рд╕реНрддреБрдУрдВ рдХреА рдкрд░рд╕реНрдкрд░ рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдмрд╣реБрд░реВрдкрддрд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рд▓рд▓рд╛рдЯ рдХрд╛ рд╣рд▓ред рдПрдВрдЯреАрдкреИрдЯрд░реНрди рднрдЧрд╡рд╛рди ADTрджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрдпрд╛ рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдЦреЗрд▓ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХрд▓ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдмреАрдЬреАрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рдФрд░ рдбреЗрдЯрд╛рдореИрдЯ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЗрди рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ред рдЗрд╕ рддрд░рд╣:
рдореЙрдбреНрдпреВрд▓ GameLogic ред рдкреНрд░рдХрд╛рд░ рдЬрд╣рд╛рдБ
рдпреЛрдЧреНрдп рдбреЗрдЯрд╛ рдЖрдпрд╛рдд рдХрд░реЗрдВ ред рдорд╛рдирдЪрд┐рддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдо
рдбреЗрдЯрд╛ рдЖрдЗрдЯрдо = Karyon ...
| рдкреНрд▓рд╛рдЬреНрдорд╛ ...
| рдорд╛рдЗрдЯреЛрдХреЙрдиреНрдбреНрд░рд┐рдпрди ...
| рдкрддреНрдерд░ ...
рдЯрд╛рдЗрдк рд╡рд░реНрд▓реНрдб = рдПрдоред рдирдХреНрд╢рд╛ рдмрд┐рдВрджреБ рдЖрдЗрдЯрдо
рдкреНрд░рдХрд╛рд░ рд╕рдВрдЪрд╛рд▓рд┐рдд = рд╡рд┐рд╢реНрд╡
рд╣рдо stepWorld рдХреЗ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рджреБрдирд┐рдпрд╛ рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдореЗрдВ, рд╣рдо рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВрдЧреЗред рдЗрд╕рдореЗрдВ, рдЯрд╛рдЗрдк рд╡рд░реНрд▓реНрдб рдХрд╛ рдорд╛рди рдЕрдВрддрд┐рдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рджреБрдирд┐рдпрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЯрд╛рдЗрдк рдСрдкрд░реЗрдЯреЗрдбрд╡рд░реНрд▓реНрдб рдХреЗ рдорд╛рди рдореЗрдВ, рд▓рд╛рдЧреВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЬрдорд╛ рд╣реЛрддреЗ рд╣реИрдВред
рдореЙрдбреНрдпреВрд▓ GameLogic ред рддрд░реНрдХ рдХрд╣рд╛рдБ
рдЖрдпрд╛рдд GameLogic ред рдкреНрд░рдХрд╛рд░
stepWorld :: рд╡рд┐рд╢реНрд╡ -> рд╡рд┐рд╢реНрд╡
рд▓рд╛рдЧреВ рдХрд░реЗрдВ :: рд╡рд┐рд╢реНрд╡ -> рдЖрдЗрдЯрдо -> рд╕рдВрдЪрд╛рд▓рд┐рддрд╡рд░реНрд▓реНрдб -> рд╕рдВрдЪрд╛рд▓рд┐рддрд╡рд░реНрд▓реНрдб
рд╕рдорд╛рдзрд╛рди рд╕рд░рд▓ рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╣рдореЗрдВ рдХреБрдЫ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрд┐рдирдХреА рддреБрд▓рдирд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирдореВрдиреЗ рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛рдПрдЧреАред рдФрд░ рд╣рдо рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЖ рдЬрд╛рдПрдВрдЧреЗ: рдЖрдЗрдЯрдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрджреНрдпрддрди рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рдЗрди рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
w ( Karyon ... ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ = ...
w ( рдкреНрд▓рд╛рдЬреНрдорд╛ ... ) рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ = ...
w ( Mitochondrion ... ) рдЙрд▓реНрд▓реВ = рд▓рд╛рдЧреВ рдХрд░реЗрдВ ...
...
getEnergy :: рдЖрдЗрдЯрдо -> рдЗрдВрдЯ
getEnergy ( Karyon e b c ) = e
getEnergy ( Mitochondrion e f g ) = e
getEnergy _ = рддреНрд░реБрдЯрд┐ "getEnergy рдЕрд╕рдорд░реНрдерд┐рдд рд╣реИред"
рд╣рдордиреЗ рдЖрдЗрдЯрдо рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдВрдмрдВрдз рдмрдирд╛рдП рд╣реИрдВред рдЕрдЧрд░ рд╣рдо "рдЯрд┐рдХ-рдЯреИрдХ-рдЯреЛ" рдпрд╛ "рдЧреЗрдо рдСрдлрд╝ рд▓рд╛рдЗрдл" рдЬреИрд╕реЗ рд╕рд░рд▓ рдЦреЗрд▓ рд▓рд┐рдЦрддреЗ рд╣реИрдВ - рддреЛ рдЖрдк рдпрд╣рд╛рдБ рд░реБрдХ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдж рдЕрдореАрдмрд╛ рд╡рд░реНрд▓реНрдб рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬрдЧрд╣ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред рдЖрдкрдХреЛ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХреЛ рд╣рдЯрд╛рдиреЗ, рдЙрджрд╛рд░рддрд╛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рднреЛрд▓реЗ рдХреЛрдб рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╣рдо рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВрдЧреЗ:
- рдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА : рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред
- рд╕реНрдерд╛рдиреАрдпрддрд╛ : рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
- рдмрд╣реБрд░реВрдкрддрд╛ : рдПрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдПрдВ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░рддреА рд╣реИрдВред
рдЦреИрд░, рдЕрдм рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рджрд┐рдЦ рд░рд╣реА рд╣реИрдВред рдЖрдЗрдП рдЗрд╕реЗ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред
рдПрдВрдЯреАрдкреИрдЯрд░реНрди "рдПрдЧреНрдЬрд╝рд┐рд╕реНрдЯреЗрдВрд╢рд┐рдпрд▓ рдЯрд╛рдЗрдк рдХреНрд▓рд╛рд╕"рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреНрд░рддрд┐рд░реВрдкрдХрддрд╛ рдФрд░ рд╕реНрдерд╛рдиреАрдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╕реНрддреБ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЦреЗрд▓ рдХреЗ рдирдХреНрд╢реЗ рдкрд░ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рд╣реЛред рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдПрдХ рдирдпрд╛ рдореЙрдбреНрдпреВрд▓ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рдЙрдкрд░реЛрдХреНрдд GameLogic.Logic рдФрд░ GameLogic.Types рдореЙрдбреНрдпреВрд▓ рдХреЛ рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ рд╕рдВрднрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбрд┐рдЬрд╛рдЗрди рд╡рд┐рдЪрд╛рд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рдорд╛рдирдЪрд┐рддреНрд░ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ (рдкреНрд▓рд╛рдЬреНрдорд╛, рдХрд╛рд░рд┐рдпрди) рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдХреНрд░рд┐рдп рдлрд╝рдВрдХреНрд╢рди рд╣реИ - рд▓рд╛рдЧреВ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реАред
- рдореЙрдбреНрдпреВрд▓ GameLogic.Karyon:
рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ :: Karyon -> Point -> World -> OperatedWorld -> OperatedWorld
- рдореЙрдбреНрдпреВрд▓ GameLogic.Plasma:
рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ :: рдкреНрд▓рд╛рдЬрд╝реНрдорд╛ -> рдмрд┐рдВрджреБ -> рд╡рд┐рд╢реНрд╡ -> рдкрд░рд┐рдЪрд╛рд▓рд┐рдд рд╢рдмреНрдж -> рдкрд░рд┐рдЪрд╛рд▓рд┐рдд рд╢рдмреНрдж
рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
ред рдЪрд▓реЛ рдЗрд╕реЗ рд╕рдХреНрд░рд┐рдп рдХрд╣рддреЗ рд╣реИрдВ:
рд╡рд░реНрдЧ рд╕рдХреНрд░рд┐рдп рдореИрдВ рдХрд╣рд╛рдБ
рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ :: i -> рдмрд┐рдВрджреБ -> рд╡рд┐рд╢реНрд╡ -> рд╕рдВрдЪрд╛рд▓рд┐рддрд╡рд░реНрд▓реНрдб -> рд╕рдВрдЪрд╛рд▓рд┐рддрд╡рд░реНрд▓реНрдб
рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╣реЛрдиреЗ рдкрд░, рд╣рдо рд╕рднреА рдореИрдк рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВрдЧреЗ - рд╡реЗ рдЪрд╛рд╣реЗ рдЬрд┐рд╕ рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛрдВред рдУрдУрдкреА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдпрд╣ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд╛рдзрд╛рди рд╣реИ, рдФрд░ рдпрд╣ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рд╡рд┐рд╢реНрд╡ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╣рд╛рд╕реНрдХреЗрд▓ рдХреЗ рдЕрдиреБрдХреВрд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рдВрдХрд▓рди рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗред
рдЯрд╛рдЗрдк рд╡рд░реНрд▓реНрдб = рдПрдоред рдирдХреНрд╢рд╛ рдмрд┐рдВрджреБ ????
рд╣рдо рдорд╛рдирдЪрд┐рддреНрд░ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ: рдХреИрд░рд┐рдпрди, рдкреНрд▓рд╛рдЬреНрдорд╛, рдпрд╛ рдХреБрдЫ рдФрд░, рдФрд░ рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рд╛рд╕реНрдХреЗрд▓ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╡рд┐рд╖рдо рдирд╣реАрдВ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛
рдЬреНрдЮрд╛рдд рд╣реИ , рдЗрд╕рдХреЗ рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ; рд╣рдо рдПрдХ рдореМрдЬреВрдж рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЦреБрдж рдХреЛ рдХреЗрд╡рд▓ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢ рдФрд░ рдпрд╣ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣
рдПрдВрдЯреАрдкреИрдЯрд░реНрди рдХреНрдпреЛрдВ рд╣реИред рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд░реЛрдорди
рдбрд╕реНрдХрд┐рди рджреНрд╡рд╛рд░рд╛ рд▓реЗрдЦ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ "
рдореЛрдиреЛрдореЛрд░реНрдлрд┐рдЬреНрдо, рдмрд╣реБрд░реВрдкрддрд╛ рдФрд░ рдЕрд╕реНрддрд┐рддреНрд╡рдЧрдд рдкреНрд░рдХрд╛рд░ ред"
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдмреНрдпрд╛рдЬ рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рдХрд╛рд░реНрдп рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░реЗрдВрдЧреЗред
рдореЙрдбреНрдпреВрд▓ GameLogic ред рдкреНрд▓рд╛рдЬреНрдорд╛ рдЬрд╣рд╛рдВ
рдбреЗрдЯрд╛ рдкреНрд▓рд╛рдЬреНрдорд╛ = рдкреНрд▓рд╛рдЬреНрдорд╛ { рдкреНрд▓рд╛рдЬреНрдорд╛рдкреНрд▓реЗрдпрд░ :: рдкреНрд▓реЗрдпрд░ }
рдЙрджрд╛рд╣рд░рдг рд╕рдХреНрд░рд┐рдп Karyon рдЬрд╣рд╛рдВ
рд╕рдХреНрд░рд┐рдп ( рдкреНрд▓рд╛рдЬреНрдорд╛ рдкреАрдПрд▓ ) = рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд
рдореЙрдбреНрдпреВрд▓ GameLogic ред рдХрд░рдпреЛрди рдЬрд╣рд╛рдБ
data Karyon = Karyon { karyonPlayer :: рдЦрд┐рд▓рд╛рдбрд╝реА
, karyonEnergy :: рдКрд░реНрдЬрд╛ }
рдЙрджрд╛рд╣рд░рдг рд╕рдХреНрд░рд┐рдп рдкреНрд▓рд╛рдЬреНрдорд╛ рдЬрд╣рд╛рдВ
рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ ( Karyon pl e ) = рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд
рдЕрдм рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╖рдо рд╡рд┐рд╢реНрд╡ рдорд╛рдирдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд╕реНрддрд┐рддреНрд╡рдорд╛рди ActiveItem рдЖрд╡рд░рдг рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╡рд┐рд╢реНрд╡ рдорд╛рдирдЪрд┐рддреНрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдореЙрдбреНрдпреВрд▓ GameLogic.Types:
{- # LANGUAGE рдЕрд╕реНрддрд┐рддреНрд╡рд╡рд╛рджреАрдХрд░рдг # -}
рдбреЗрдЯрд╛ ActiveItem = forall i ред рд╕рдХреНрд░рд┐рдп i => MkActiveItem i
рдЯрд╛рдЗрдк рд╡рд░реНрд▓реНрдб = рдПрдоред рдорд╛рдирдЪрд┐рддреНрд░ рдмрд┐рдВрджреБ ActiveItem
packItem :: рд╕рдХреНрд░рд┐рдп i => i -> ActiveItem
packItem = MkActiveItem
ActiveItem рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдХреБрдЫ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдмрд╛рдж рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рдкреНрд░рдХрд╛рд░ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред Karyon рдпрд╛ Plasma рдЬреИрд╕реА рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ рдХреЛ рдкреИрдХ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЦреЛ рджреЗрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
packKaryon = packItem ( Karyon 1 100 )
рдкреИрдХреНрдбрдкреНрд▓рд╛рдЬрд╝реНрдорд╛ = рдкреИрдХ рдЗрдЯреЗрдо ( рдкреНрд▓рд╛рдЬреНрдорд╛ 1 )
рджреБрдирд┐рдпрд╛ = рдПрдоред FromList [ ( рдкреНрд╡рд╛рдЗрдВрдЯ 1 1 1 , рдкреИрдХреНрдб рдХреИрд░рд┐рдпрди )
, ( рдкреЙрдЗрдВрдЯ 1 1 2 , рдкреИрдХреНрдбрдкреНрд▓рд╛рдЬрд╝реНрдорд╛ ) ]
рдЕрдм рдЖрдк рдорд╛рдирдЪрд┐рддреНрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕рдХреНрд░рд┐рдп рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
stepWorld рджреБрдирд┐рдпрд╛ = рдПрдоред foldrWithKey рдЪ рдПрдоред рдЦрд╛рд▓реА рджреБрдирд┐рдпрд╛
рдЬрд╣рд╛рдБ
f рдкреЙрдЗрдВрдЯ ( MkActiveItem i ) рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред i = рджреБрдирд┐рдпрд╛ рдХреЛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ
ActiveItem рдХреЗ рд▓рд┐рдП рд╕рдХреНрд░рд┐рдп рдкреНрд░рдХрд╛рд░ рд╡рд░реНрдЧ рдХреА рдПрдХ рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ рдЖрдк рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдереЛрдбрд╝рд╛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдЙрджрд╛рд╣рд░рдг рд╕рдХреНрд░рд┐рдп ActiveItem рдЬрд╣рд╛рдВ
рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ ( MkActiveItem i ) = i рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ
...
stepWorld рджреБрдирд┐рдпрд╛ = рдПрдоред foldrWithKey рдПрдо рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рддрд╛ рд╣реИред рдЦрд╛рд▓реА рджреБрдирд┐рдпрд╛
рдЬрд╣рд╛рдБ
f рдкреЙрдЗрдВрдЯ i = рд╕рдХреНрд░рд┐рдп i рдкреЙрдЗрдВрдЯ рд╡рд░реНрд▓реНрдб
рд╣рдордиреЗ рд╡рд╣ рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЬреЛ рд╣рдо рдЪрд╛рд╣рддреЗ рдереЗ - рд╣рдордиреЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рдирдХреНрд╢реЗ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд░рдЦреАред рдЗрд╕ рдХреЛрдб рдореЗрдВ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ? рдЕрд╕реНрддрд┐рддреНрд╡рд╡рд╛рджреА рдкреНрд░рдХрд╛рд░ рд╡рд░реНрдЧ рдкреИрдЯрд░реНрди рдЙрдкрдпреЛрдЧреА рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдХреНрд░рдордмрджреНрдз рдХрд░реЗрдВ (рд╢реЛ рдкреНрд░рдХрд╛рд░ рд╡рд░реНрдЧ), рдЙрдиреНрд╣реЗрдВ рдПрдХ 3 рдбреА рджреГрд╢реНрдп рдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ (рд░реЗрдВрдбрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЪрд┐рддреНрд░рд╛ рдкреНрд░рдХрд╛рд░ рд╡рд░реНрдЧ - рдЬреИрд╕реЗ рдХрд┐ рдЖрд░ред рдбрд╕реНрдХрд┐рди рджреНрд╡рд╛рд░рд╛ рдПрдХ рд▓реЗрдЦ рдореЗрдВ), рдпрд╛ рдЕрднреА рднреА рдХрд┐рд╕реА рддрд░рд╣ рдЧреИрд░-рд╕реНрдерд┐рд░ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдПрдВрдЯреАрдкреИрдЯрд░ "рдПрдЧреНрдЬрд╝рд┐рд╕реНрдЯреЗрдВрд╢рд┐рдпрд▓ рдХреНрд▓рд╛рд╕ рдСрдлрд╝ рдЯрд╛рдЗрдкреНрд╕" рдХрд╛рд░реНрдпрд╛рддреНрдордХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдУрдУрдкреА рд╕реЛрдЪ рдХреА
рдЕрдиреБрдкрдпреБрдХреНрддрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдорд╛рдирдЪрд┐рддреНрд░ рддрддреНрд╡реЛрдВ рдХреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрдирд╛, рд╣рдо рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЖрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирдП рдФрд░ рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рдХрд╛рд░ рд╡рд░реНрдЧ рдЧреИрд░-рд╕рдВрдЧрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреА рдХрдХреНрд╖рд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВред "рдж рдЕрдореАрдмрд╛ рд╡рд░реНрд▓реНрдб" рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рдЕрднреНрдпрд╛рд╕ рдиреЗ рдЗрд╕ рддрдереНрдп рдХреЛ рдЬрдиреНрдо рджрд┐рдпрд╛ рдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ "рдЗрдВрдЯрд░рдлрд╝реЗрд╕" рд╕реЗ рд╡рд╛рдкрд╕ рдЖрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ "рд╕рдХреНрд░рд┐рдп рджреВрд╕рд░рд╛" рдЗрдВрдЯрд░рдлрд╝реЗрд╕ "- рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░реЗрдХреНрдЯреЗрдмрд▓ рдЯрд╛рдЗрдк рдХреНрд▓рд╛рд╕ред (рджреЗрдЦреЗрдВ рдкреНрд░рддрд┐рдмрджреНрдз
рдИрдПрдлрд╝рдбреА ремрек рдбреА резреи ) рд╢рд╛рдпрдж рдЗрд╕
рдУрдУрдкреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ рд╣рд╛рд╕реНрдХреЗрд▓ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдЦрдХ рдЗрд╕реЗ рдирд╣реАрдВ рдЦреЛрдЬ рд╕рдХрд╛, рдЬреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдореГрдд рдЕрдВрдд рдорд╛рд░реНрдЧ рд╣реИред
рд▓реЗрдЯ-рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдПрдВрдЯреАрдкреИрдЯрд░реНрди "рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░"рд▓реЗрдЯ-рдлрдВрдХреНрд╢рди рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЕрд╕рд╣рдиреАрдп рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдЯ- рдФрд░ рдХрд╣рд╛рдБ- рдПрдХреНрд╕рдкреНрд░реЗрд╢рдиред рдХрд╛рд░реНрдп рдХреЛ рд╕реНрд╡рдпрдВ рдПрдВрдЯреАрдкреИрдЯрд░реНрди рдирд╣реАрдВ рдХрд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рд╕рдВрдХреЗрдд рд╣реИ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдбрд┐рдЬрд╛рдЗрди рд╣рдореЗрдВ рддрд░реНрдХ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдЙрдкрдХрд░рдг рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдмрд╣реБрдд рдмрд╛рд░ рд▓реЗрдЯ-рдлрдВрдХреНрд╢рди рдЕрдирд┐рд╡рд╛рд░реНрдп рдХреЛрдб рдкрд░ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЖрд╡рд░рдг рд╣реИ, рдФрд░ рдпрд╣, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦ рдЪреБрдХреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд╣реАрдВ рд╣реИред
рдж рдЕрдореАрдмрд╛ рд╡рд░реНрд▓реНрдб рдХрд╛ рдЙрджрд╛рд╣рд░рдг (
3a0500a217 рдкрд░ ):
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рдардПрдХреНрдЯрд┐рд╡рдкрд╛рдЗрдЧреНрд░реЛрдЗрдВрдЧ :: рдЦрд┐рд▓рд╛рдбрд╝реА -> рд╕реАрдорд╛ -> рдмрд┐рдВрджреБ -> рджрд┐рд╢рд╛ -> ( рд╡рд┐рд╢реНрд╡ , рдПрдиреЛрдЯреЗрд╢рди , рдКрд░реНрдЬрд╛ ) -> ( рд╡рд┐рд╢реНрд╡ , рдПрдиреЛрдЯреЗрд╢рди , рдКрд░реНрдЬрд╛ )
рдПрдХреНрдЯрд┐рд╡рдкрд╛рдЗрдЧреНрд░рд╛рдЙрдЧрд┐рдВрдЧ _ _ _ _ actRes @ ( w , anns , 0 ) = actRes
рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВрдкреНрд░рд╛рдХреГрддрд┐рдХ рдкреНрд▓рд╛рдЗрдВрдЧ рдкреА рдбрд╛рдпрд░ ( w , рдПрдиреНрд╕ , рдИ ) = рдХреЗрд╕ рдмрдврд╝рддрд╛ рд╣реИрдкреНрд▓рд╛рд╕реНрдорд╛рдлрдВрдХ
рдмрд╛рдпрд╛рдБ рдЕрдВрдЧ -> ( w , anns ++ [ ann ] , e )
рд░рд╛рдЗрдЯ ( w ', anns' ) -> ( w ', anns ++ anns' , e - 1 )
рдЬрд╣рд╛рдБ
growPlasmaFunc = growPlasma pl bounds p dir w
рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ :: рдмрд┐рдВрджреБ -> Karyon -> Shift -> ( рд╡рд┐рд╢реНрд╡ , рдПрдиреЛрдЯреЗрд╢рди , рдКрд░реНрдЬрд╛ ) -> ( рд╡рд┐рд╢реНрд╡ , рдПрдиреЛрдЯреЗрд╢рди , рдКрд░реНрдЬрд╛ )
рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ _ _ ( KaryonFiller { } ) _ r = r
рд╕рдХреНрд░рд┐рдпрдкрддреНрддреА p k @ ( Karyon _ pl _ _ рдмрд╛рдзреНрдп ) sh рд╕рдХреНрд░рд┐рдпрдХрдбреЗрдЯрд╛ | isCornerShift рд╢ = let
actFunc = activatePhewGrowing pl [ рдмрд╛рдзреНрдп p ] p ( рд╕рдмрдбрд╛рдпрд░реЗрдХреНрд╢рди 2 рд╢ )
ред рдПрдХреНрдЯрд┐рд╡рдкрд╛рдЗрд░рдЧреНрд░рд╛рдЙрдбрд┐рдВрдЧ рдкреАрдПрд▓ [ рдмрд╛рдЙрдВрдб рдкреА ] рдкреА ( рд╕рдмрдбрд╛рдпрд░реЗрдХреНрд╢рди 1 рд╢ )
actFunc рд╕рдХреНрд░рд┐рдпрдгрдбрд╛рдЯрд╛ рдореЗрдВ
рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ pрдЗрд╕ p @ @ ( Karyon _ pl _ _ рдмрд╛рдзреНрдп ) sh рд╕рдХреНрд░рд┐рдпрдХрд░рдгрдбреЗрдЯрд╛ = рджреЗ
actFunc = activatePhewGrowing pl [ рдмрд╛рдзреНрдп p ] p ( рджрд┐рд╢рд╛ рд╢ )
actFunc рд╕рдХреНрд░рд┐рдпрдгрдбрд╛рдЯрд╛ рдореЗрдВ
рд░реАрдбрд░ рдореЛрдирдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрджрд░реНрдн рдореЗрдВ рд▓рд╛рдХрд░ рдХреЛрдб рдХрд╛ рднрд╛рдЧ рдмреЗрд╣рддрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдЕрдирд┐рд╡рд╛рд░реНрдпрддрд╛ (
8df9b7a224 рдХрдорд┐рдЯ
рдирд╣реАрдВ ) рд╣реЛрдЧреА:
рдЫрд┐рдкрд╛ рд╣реБрдЖ рдкрд╛рдард╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ :: рд╕рдХреНрд░рд┐рдпрдХрд░рдгрдбрдЯрд╛ -> рдЖрд░ред рд░реАрдбрд░ рд╕рдХреНрд░рд┐рдпрдгрдХрдВрдЯреЗрдХреНрдЯ рд╕рдХреНрд░рд┐рдпрдХрд░рдгрдбрд╛рдЯрд╛
рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ
isCornerPhew <- askIsCornerPiece
ifCornerPhew рд╣реИ рддреЛ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВрд╕рд╛рдорд╛рдиреНрдпрд╡рд╛рд░реНрддрд╛ actData
рдФрд░ рд╕рдХреНрд░рд┐рдп рдХрд░реЗрдВ
рдПрдХреНрдЯрд┐рд╡рдкрд╛рдЗрдЧреНрд░реЛрдЗрдВрдЧ :: рджрд┐рд╢рд╛ -> рдПрдХреНрдЯрд┐рд╡реЗрд╢рдирдбрд╛рдЯрд╛ -> рдЖрд░ред рд░реАрдбрд░ рд╕рдХреНрд░рд┐рдпрдгрдХрдВрдЯреЗрдХреНрдЯ рд╕рдХреНрд░рд┐рдпрдХрд░рдгрдбрд╛рдЯрд╛
рдПрдХреНрдЯрд┐рд╡рдкрд╛рдЗрдЧреНрд░рд╛рдЙрдЬрд╝рд┐рдВрдЧ _ actData @ ( w , anns , 0 ) = return actData
рдПрдХреНрдЯрд┐рд╡рдкрд╛рдЗрд░рдЧреНрд░рд╛рдЙрдбрд┐рдВрдЧ dir actData @ ( w , anns , e ) = рдХрд░рддреЗ рд╣реИрдВ
( рдкреАрдПрд▓ , рд╕реАрдорд╛рдПрдВ , рдкреА ) <- рдЖрд╕реНрдХрд▓реЛрдХрд▓реНрд╕
рдорд╛рдорд▓рд╛ рдмрдврд╝рддрд╛
рд╡рд╛рдо рд╡рд╛рд░реНрд╖рд┐рдХ -> рд╡рд╛рдкрд╕реА ( рдбрдмреНрд▓реНрдпреВ , рдПрдиреНрд╕ ++ + [ рдПрдПрди ] , рдИ )
рд░рд╛рдЗрдЯ ( w ', anns' ) -> рд░рд┐рдЯрд░реНрди ( w ', anns ++ рдПрдиреНрд╕' , e - 1 )
рдЬрд╣рд╛рдБ
рдкреВрдЫрдирд╛рд▓реЛрдХ = рдХрд░рдирд╛
( рдПрдХреНрдЯрд┐рд╡реЗрд╢рдирдХреЛрдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдкреА _ ) <- рдЖрд░ред рдкреВрдЫрдирд╛
рд╡рд╛рдкрд╕реА ( karyonPlayer k , [ karyonBound k p ] , p )
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдЙрддреНрдкрдиреНрди рд╣реБрдЖ рдХрд┐ рдкреВрд░рд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд╛рд░рд┐рдпрди, рдмреЙрд░реНрдбрд░ рдФрд░ рдЕрдиреНрдп рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ ADT рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░ рдЕрдореАрдмрд╛ рд╡рд┐рд╢реНрд╡ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбрд┐рдЬрд╛рдЗрди рдХрд╛ рдореБрдЦреНрдп рдПрдВрдЯреАрдкреИрдЯрд░реНрди рд╣реИред рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдЦрд░рд╛рдм рд╕рдВрд░рдЪрдирд╛ рд╡рд╛рд▓рд╛ рдПрдХ рднрд╛рд░реА рдЕрд╕рдорд░реНрдерд┐рдд рдХреЛрдб рдкреИрджрд╛ рд╣реБрдЖ рдерд╛ред рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдУрдУрдкреА рд╕реЛрдЪ рд╕реЗ рдЙрдкрдЬрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЬрдм рд╣рдо рдЗрд╕реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджреБрдЦрдж рдкрд░рд┐рдгрд╛рдо рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдкреНрд░рддрд┐рд░реВрдкрдХрддрд╛, рд╕реНрдерд╛рдиреАрдпрддрд╛ рдФрд░ рдмрд╣реБрд░реВрдкрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд╕реАрдзреЗ рддреМрд░ рдкрд░ рдирд╣реАрдВ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡реЗ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЯрд╛рдЗрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдкреНрд░рдХрд╛рд░ рдХреА рдХрдХреНрд╖рд╛рдПрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рдЧреЛрдВ рдореЗрдВ, рд╣рдо рдЕрдзрд┐рдХ "рдХрд╛рд░реНрдпрд╛рддреНрдордХ" рдбрд┐рдЬрд╛рдЗрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдЬрдм рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЧреБрдгреЛрдВ рдФрд░ рдХрд╛рдиреВрдиреЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╕реНрддреБрдУрдВ рдФрд░ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдирд╣реАрдВред