рдирдорд╕реНрддреЗ!
рд╢реБрд░реБрдЖрддреА рдЧрд░реНрдорд┐рдпреЛрдВ рдореЗрдВ, рдХрдИ рдмрдбрд╝реА рдХрдВрдкрдирд┐рдпрд╛рдВ рд╣рд╛рд▓ рдХреЗ рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рдФрд░ рддрдХрдиреАрдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдХреЗ рд╕реНрдирд╛рддрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░реНрдирд╢рд┐рдк рдХрд░рддреА рд╣реИрдВред рдореИрдВ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдерд╛ рдХрд┐ рдПрд╕рдХреЗрдмреА рдХреЛрдВрддреВрд░ рдореЗрдВ рдРрд╕реЗ рдпреБрд╡рд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреА рд╢реНрд░реЗрдгреА рдореЗрдВ рдЖ рдЧрдпрд╛ред рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреА рджреБрдирд┐рдпрд╛ рд╕реЗ рд╣рдорд╛рд░рд╛ рдкрд░рд┐рдЪрдп "рдХреНрд░реИрд╢ рдХреЛрд░реНрд╕" рдирд╛рдо рдХреЗ рдПрдХ рдЗрд╡реЗрдВрдЯ рд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ - рдЬреЛ рдЪрд╛рд░ рджрд┐рди рдХрд╛ рдЧрд╣рди рд╡рд┐рджреНрдпрд╛рд▓рдп рд╣реИред рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк, рдЖрдХрд░реНрд╖рдХ рдФрд░ рдЬреНрдЮрд╛рдирд╡рд░реНрдзрдХ рдЪреАрдЬреЗрдВ рдереАрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рд╣рдорд╛рд░реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдордиреЛрд░рдВрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрддрд╛рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рддреЛ рдЖрдЬ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдб рд░рд┐рдЯреНрд░реАрдЯ рд╣реИ!
рдХреЛрдб рд░рд┐рдЯреНрд░реАрдЯ - рдпрд╣ рдХреНрдпрд╛ рд╣реИ?
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЛрдб рд░рд┐рдЯреНрд░реАрдЯ рдкреНрд░рд╛рд░реВрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдпрд╣ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдореАрдЯрд┐рдВрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рддреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рд╕рд░рд▓ рдирд┐рдпрдореЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ:
- рд╕рддреНрд░ рдХреА рдЕрд╡рдзрд┐ 45 рдорд┐рдирдЯ;
- рд╕рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЬреЛрдбрд╝реЗ рдореЗрдВ рдФрд░ рдХреЗрд╡рд▓ рдЬреЛрдбрд╝реЗ рдореЗрдВ рд╣реИрдВ;
- рдЬреЛрдбрд╝реЗ рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рддреНрд░ рдХреЛ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ;
- рдкреНрд░рддреНрдпреЗрдХ рд╕рддреНрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╕рднреА рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛ рдмреЗрд░рд╣рдореА рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ;
- рдкреНрд░рддреНрдпреЗрдХ рд╕рддреНрд░ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рдеред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрди рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдореЗрдВ рд╕рднреА рдирдордХ!
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдШрдЯрдирд╛ рдЕрд╕рд╛рдорд╛рдиреНрдп, рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде, рдХрдо рд╕реЗ рдХрдо рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ рдФрд░ рд░рд╛рдп рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдмрджрд▓ рд░рд╣реА рд╣реИ!
рдПрдХ рдкреНрд░рддреНрдпрдХреНрд╖рджрд░реНрд╢реА рдХреА рдирдЬрд░ рд╕реЗред рд╡рд╣ рдХреИрд╕рд╛ рдерд╛?
рдореБрдЭреЗ рдХреНрд░реИрд╢ рдХреЛрд░реНрд╕ рдореЗрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдХреЛрдб рд░рд┐рдЯреНрд░реАрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдмрд╛рдж рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛, рдореИрдВ рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рд╣реВрдВред рдпрд╣ рд╕рдм рдПрдХ рд╣рд╛рдирд┐рд░рд╣рд┐рдд рдкрд╣рд▓реА рдпрд╛рддреНрд░рд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖ, рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рдЦреЗрд▓ "
рдЬреАрд╡рди " рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдо рдЬреЛрдбрд╝реЗ рдореЗрдВ рдмреИрдареЗ, рдЯрд╛рдЗрдорд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ ...
Iteration 1
рдкреНрд░рддрд┐рдмрдВрдз:
- рд╕рдордп рд╕реАрдорд╛ 45 рдорд┐рдирдЯ рд╣реИред
- рдЖрдкрдХреЛ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рд╕рд╣рдЬ рд╣реЛрдиреЗ, рдХреБрдЫ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдореБрдЭреЗ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдмрд╣реБрдордд рдХреЗ рд▓рд┐рдП, рдЖрд╡рдВрдЯрд┐рдд рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ, рдПрдХ рд╕рдорд╛рдзрд╛рди рддреИрдпрд╛рд░ рдерд╛ рдФрд░ рдЗрд╕рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рдлрд┐рд░ рдХреБрдХреАрдЬ, рдЬреБрдЧрд▓рд┐рдВрдЧ (!) рдФрд░ рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рд╛рде 10 рдорд┐рдирдЯ рдХрд╛ рдХреЙрдлреА рдмреНрд░реЗрдХ рдерд╛! рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреЛрдбрд╝реЗ рдХрд╛ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдиред
Iteration 2
рдкреНрд░рддрд┐рдмрдВрдз:
- 45 рдорд┐рдирдЯ
- TDD рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛:
- рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рдХреЗрд╡рд▓ рдПрдХ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг
- рдкреНрд░рддреНрдпреЗрдХ рдирдпрд╛ рдкрд░реАрдХреНрд╖рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдкрд╣рд▓реЗ рд▓рд╛рд▓
- рдЬрд┐рддрдирд╛ рд╕рд░рд▓ рд╣реЛ рд╕рдХреЗ
- рдЬрд┐рддрдирд╛ рд╕рд░рд▓ рд╣реЛ рд╕рдХреЗ
- рдХреАрдмреЛрд░реНрдб рдкрд░, рдкреНрд░рддреНрдпреЗрдХ 5 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдПред
рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рдХреБрдХреАрдЬрд╝ рдЦрд╛рдиреЗ рдХреЗ рд╕рд╛рде рдорд╛рдирдХ рдСрдкрд░реЗрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ =) рдФрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЬреЛрдбрд╝реЗ рдмрджрд▓реЗрдВ!
Iteration 3 (рдкрд╣рд▓реЗ рд╕реЗ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк)
рдкреНрд░рддрд┐рдмрдВрдз:
- 45 рдорд┐рдирдЯ
- рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рд╕реАрдорд╛рдПрдВ - 3 рд╕реЗ рдЕрдзрд┐рдХ (!) рд░реЗрдЦрд╛рдПрдВ рдирд╣реАрдВред
- рдХреАрдмреЛрд░реНрдб рдкрд░, рдкреНрд░рддреНрдпреЗрдХ 5 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдПред
- рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди рдЕрдВрддрд╣реАрди рд╣реИред
рдЗрд╕ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░, рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдордЬрд╝реЗрджрд╛рд░ рд╣реЛ рдЧрдпрд╛! рд▓реЗрдХрд┐рди рдЕрдВрддрд┐рдо, рдЪреМрдерд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЖрдЧреЗ рд▓реВрдо! рдФрд░ рдкрд╣рд▓реЗ, рдЖрдкрдиреЗ рдЗрд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛, рдХреЛрдб рдХреЛ рд╣рдЯрд╛рдирд╛ рдФрд░ рдЬреЛрдбрд╝реЗ рдХреЛ рдмрджрд▓рдирд╛!
Iteration 4 (рдХрд╛рдлреА рджрд┐рд▓рдЪрд╕реНрдк)
рдкреНрд░рддрд┐рдмрдВрдз:
- 45 рдорд┐рдирдЯ
- рдХреАрдмреЛрд░реНрдб рдкрд░, рдкреНрд░рддреНрдпреЗрдХ 5 рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдПред
- рд╕реЗ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП:
- рдорд╛рдЙрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВ
- 3 рдорд┐рдирдЯ рдХреА рдпреЛрдЬрдирд╛ рд╕рдордп-рд╕реАрдорд╛ (рдкреВрд░реЗ рд╕рддреНрд░ рдореЗрдВ рддреАрди рдорд┐рдирдЯ рдХреЗ рдЪрдХреНрд░ рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдЪрдХреНрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рднрд╛рдЧреАрджрд╛рд░ рдЗрд╕ рдЪрдХреНрд░ рдХреЗ рд▓рд┐рдП рд╕рдордп рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕ рдкрд░ рд╕рд╣рдордд рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐, рд╢реБрд░реБрдЖрдд рдХреЗ 3 рдорд┐рдирдЯ рдмрд╛рдж, рд▓рдХреНрд╖реНрдп рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдЪрдХреНрд░ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦреЗ рдЧрдП рд╕рднреА рдХреЛрдб рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЪрдХреНрд░ рд╣реЛрддрд╛ рд╣реИред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ)
- рд╕реЗ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП:
- рдХреЛрдИ рд╕рд╛рдЗрдХрд┐рд▓ рдирд╣реАрдВред
- рдХреЛрдИ рд╕рд╢рд░реНрдд рдмрдпрд╛рди рдирд╣реАрдВред
- рдХреЛрдИ рдЪрд░ рдирд╣реАрдВ рд╣реИрдВред
рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдмрд╣реБрдордд рдХрд╛ рдЕрдВрддрд┐рдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ 45 рдорд┐рдирдЯ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рддрдХ рдЪрд▓рд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рд░ рдХреЛрдИ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдФрд░ рдХреЛрдИ рднреА рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╣рд╛рд░ рдирд╣реАрдВ рдорд╛рдирдирд╛ тАЛтАЛрдЪрд╛рд╣рддрд╛ рдерд╛ =)
рдЫрд╛рдкреЛрдВ
рджреЛ рд╢рдмреНрдж: рдпрд╣ рдХреБрдЫ рд╣реИ! рдХрдИ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ, рдЗрд╕рдХреА рд╕рднреА рднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╕реНрдерд┐рддрд┐ рдЗрд╕ рддрдереНрдп рд╕реЗ рдмрдврд╝ рдЧрдИ рдереА рдХрд┐ рд╣рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ рдЕрдЧрд▓реА рдмрд╛рд░ рдкреНрд░рддрд┐рдмрдВрдз рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдкрд╣рд▓реА рдпрд╛рддреНрд░рд╛ рдореЗрдВ рд╣рдордиреЗ рдХрд▓реНрдкрдирд╛ рднреА рдирд╣реАрдВ рдХреА рдереА рдХрд┐ рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рд╕рдм рдХреБрдЫ рдкрд╕рдВрдж рдЖрдпрд╛! рдЗрдВрдЯрд░реНрди рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдЭрд╛ рдХреА рдЧрдИ рд╕рдореАрдХреНрд╖рд╛рдПрдБ рдХреЗрд╡рд▓ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣реИрдВред рдореИрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рдЬрд┐рд╕ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рднреА рдХреБрдЫ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред
рд╕рдордЭ
рдХреЛрдб рд░рд┐рдЯреНрд░реАрдЯ рдХрд╛ рд▓рд╛рдн рдХреНрдпрд╛ рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдЗрд╕рдХреЗ рд╕рднреА рдлрд╛рдпрджреЛрдВ рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЦреНрдп рд▓реЛрдЧреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред
- рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЕрдиреБрднрд╡ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдирдП рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде, рдЖрдк рдирдП рд╡рд┐рдЪрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рдирдП рд╕рд╛рдереА рд╕реЗ рд╕реАрдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреЛ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
- рджреВрд╕рд░реЗ, рдпрд╣ рдЪреЗрддрдирд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╣реИ (рдареАрдХ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕реЗ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдХреНрдпрд╛ рдХрд╣рдирд╛ рд╣реИ, рд╢рд╛рдпрдж "рд╡рд┐рдЪрд╛рд░рдХ рдХреЛ рдкрдВрдк рдХрд░рдирд╛")ред рдпрджрд┐ рдЖрдк рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрднреА-рдХрднреА рджреВрд╕рд░реЗ рдпрд╛ рдХрдИ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдЪрд░рдо рдкреНрд░рддрд┐рдмрдВрдз рдмрд╕ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗ рдкрд░реЗ рдЬрд╛рддреЗ рд╣реИрдВред
- рддреАрд╕рд░рд╛, рд╕рдХрд╛рд░рд╛рддреНрдордХ рдФрд░ рд╕рдВрдЪрд╛рд░ рдХрд╛ рд╕рдореБрджреНрд░ред рдЖрдк рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдкрд░рд┐рдЪрд┐рдд рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЕрдиреБрднрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ (рдпрд╣ рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рд╣реИ)ред
рдкрд░рд┐рдгрд╛рдо
рдХреНрд░реИрд╢ рдХреЛрд░реНрд╕ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдореИрдВрдиреЗ рдХрдИ рдордиреЛрд░рдВрдЬрдиреЛрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд╛рдВрдЯреВрд░ рдореЗрдВ
рдЗрдВрдЯрд░реНрдирд╢рд┐рдк рдкреВрд░реЗ рдЬреЛрд░реЛрдВ рдкрд░ рд╣реИ! рд╕рднреА рдХреЛ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ!
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! =) рдФрд░ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ, рдЖрдк рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рдЫрд╛рдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
Denxc рдФрд░
Sleipnir рдХреЗ рдиреАрдЪреЗ рдХреЛрдб рд▓реЗрдЦрдХ
рдЕрдВрддрд┐рдо рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╕реЗ рдЬреАрд╡рди рдЧреЗрдо рдХреЛрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ред class Game { private HashSet<Point> aliveCells; private IEnumerable<Point> movingVectors = new List<Point>() { new Point(-1, -1), new Point(-1, 0), new Point(-1, 1), new Point(0, -1), new Point(0, 1), new Point(1, -1), new Point(1, 0), new Point(1, 1) }; public Game(IEnumerable<Point> initCells) { aliveCells = new HashSet<Point>(initCells); } public Game MakeStep() { return new Game(aliveCells.SelectMany(Neighbours).Where(ShouldAlive)); } public void Show() { Console.Clear(); aliveCells.Where(c => cX >= 0 && cY >= 0 && cX < Console.WindowWidth && cY < Console.WindowHeight) .Select(PrintPoint).ToArray(); } public bool PrintPoint(Point cell) { Console.SetCursorPosition(cell.X, cell.Y); Console.Write('*'); return true; } public IEnumerable<Point> Neighbours(Point cell) { return movingVectors.Select(c => new Point(cX + cell.X, cY + cell.Y)); } public bool ShouldAlive(Point cell) { var aliveNeighboursCount = Neighbours(cell).Count(aliveCells.Contains); return aliveNeighboursCount == 3 || aliveNeighboursCount == 2 && aliveCells.Contains(cell); } }
рдЖрдк рд╕реНрд░реЛрдд, рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░
рдпрд╣рд╛рдВ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦ рд╕рдХрддреЗ
рд╣реИрдВ ред