рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдЖрдк рдмрд╣реБрднреБрдЬ рдХреЗ рд╕рд╛рде рдЕрдиреБрдорд╛рдирд┐рдд рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдиреБрд╡рдВрд╢рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдХреА рддрд░рд╣, рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ
EvoJ рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдЬреЛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА
рдпрд╣рд╛рдВ рдФрд░
рдпрд╣рд╛рдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛ред

рд╕рдорд╛рдзрд╛рди рд╡рд┐рд╡рд░рдг рд╡рд┐рдзрд┐ рдЪреБрдирдирд╛
EvoJ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдкрд╛рд░рдВрдкрд░рд┐рдХ рддрд░реАрдХреЗ рдХреЗ рдмрд╛рдж, рдкрд╣рд▓реЗ рд╣рдо рдпрд╣ рдЪреБрдиреЗрдВрдЧреЗ рдХрд┐ рд╣рдо рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╡рд░реНрдгрди рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВред рдПрдХ рд╕реАрдзрд╛ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрднреБрдЬреЛрдВ рдХреА рдПрдХ рд╕рд░рд▓ рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдиреНрдирд┐рдХрдЯрди рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╣реИ:
public interface PolyImage { List<Polygon> getCells(); }
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЬреАрд╡рди рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИ, рд╣рдо рдЬрд▓реНрдж рдпрд╛ рдмрд╛рдж рдореЗрдВ рдПрдХ рд╕рдВрддреЛрд╖рдЬрдирдХ рддрд╕реНрд╡реАрд░ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рдпрд╣ рд╕рдмрд╕реЗ рджреЗрд░ рд╕реЗ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЕрдЪреНрдЫреЗ рдлреИрд╕рд▓реЛрдВ рдХреЛ рдкрд╛рд░ рдХрд░рдиреЗ рдХреА рджрдХреНрд╖рддрд╛ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрд╣рд╛рдБ рдХреНрдпреЛрдВ рд╣реИред
рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВред

рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬреАрди рдкреВрд▓ рдореЗрдВ рджреЛ рдЕрдЪреНрдЫреЗ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЖрджрд░реНрд╢ рдПрдХ рд╕реЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╕рд╛рдЗрдЯ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИред


рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ: рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдмрд╣реБрднреБрдЬ рд╕рдВрдЦреНрдпрд╛ 0 рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдПрдХ рдЫрд╡рд┐ рдмрд╣реБрднреБрдЬ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдЬрдмрдХрд┐ рджреВрд╕рд░рд╛ рдкрдХреНрд╖ рдкрд░ рдХрд╣реАрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдЗрди рджреЛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд╛рд░ рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рджреЛрдиреЛрдВ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдкрд╣рд▓реЗ рджреЛ рдмрд╣реБрднреБрдЬ рдПрдХ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджреЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ - рдИрд╡реЛрдЬреЗ рд╕рднреА рдЪрд░ рдХреЛ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдореЗрдВ рдореИрдк рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдХреНрд░рдо рдХреЛ рдмрджрд▓реЗ рдмрд┐рдирд╛, рдкрд╛рд░ рдХрд░рддреЗ рд╕рдордп рдмрд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдХреНрд░реЙрд╕рдУрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдирд┐рдореНрди рдЖрдХреГрддрд┐ рдореЗрдВ рд╕рдордЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рд╣реА рд╕реВрдЪрдХрд╛рдВрдХ рд╡рд╛рд▓реЗ рджреЛ рддрддреНрд╡ рдкрд░рд┐рдгрд╛рдореА рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдкреНрд░рдХрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдХреНрд░реЙрд╕рд┐рдВрдЧ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рддрд░рд╣ рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

рдЬреЛ рдХреНрд░реЛрд╕рдмреНрд░реЗрдбрд┐рдВрдЧ рдХреА рджрдХреНрд╖рддрд╛ рдХреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░реЗрдЧрд╛, рд╡рд┐рдХрд╛рд╕рд╡рд╛рдж рдХреЛ рдХрд╛рдлреА рдзреАрдорд╛ рдХрд░ рджреЗрдЧрд╛ред
рдЖрдк рд╕рдорд╕реНрдпрд╛ рдХреЛ "рд╕рд╣реА рдврдВрдЧ рд╕реЗ" рдореВрд▓ рдЖрдмрд╛рджреА рдХреЛ рдмреЛрдиреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЫрд╡рд┐ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдмрд╣реБрднреБрдЬ рд╡рд┐рддрд░рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддрд╛рдХрд┐ рд╕реВрдЪреА рдореЗрдВ рдмрд╣реБрднреБрдЬ рдХрд╛ рд╕реНрдерд╛рди рдЖрдХреГрддрд┐ рдореЗрдВ рдЗрд╕рдХреА рдЬреНрдпрд╛рдорд┐рддреАрдп рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореНрдпреВрдЯреЗрд╢рди рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдкреЙрд▓реАрдЧреЙрди рдмрд╣реБрдд рджреВрд░ "рд░реЗрдВрдЧрдирд╛" рди рдХрд░ рд╕рдХреЗрдВред
рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╢реБрд░реВ рдореЗрдВ рдЫрд╡рд┐ рдХреЛ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдХреЛрд╢рд┐рдХрд╛ рдореЗрдВ рдкреЙрд▓реАрдЧреЙрди рдХреА рдЕрдкрдиреА рд╕реВрдЪреА рд╣реИред рдЬрд╛рд╡рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдЗрд╕реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
public interface PolyImage { Colour getBkColor(); List<List<List<Polygon>>> getCells(); }
рдмрд╛рд╣рд░реА рд╕реВрдЪреА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИ, рдиреЗрд╕реНрдЯрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдЕрдЧрд▓рд╛ рдХреЙрд▓рдо рд╣реИ, рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЖрдВрддрд░рд┐рдХ рд╕реВрдЪреА рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рдмрд╣реБрднреБрдЬ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдореЗрдВ рдмрд╣реБрднреБрдЬ рдХреА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдПрдХ рдЕрдиреБрдорд╛рдирд┐рдд рдкрддреНрд░рд╛рдЪрд╛рд░ рдФрд░ рдЖрдВрдХрдбрд╝рд╛ рдореЗрдВ рдЗрд╕рдХреА рдЬреНрдпрд╛рдорд┐рддреАрдп рд╕реНрдерд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдмрд╣реБрднреБрдЬ рдХрд╛ рд╡рд░реНрдгрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ:
public interface Polygon { List<Point> getPoints(); Colour getColor(); int getOrder(); }
рдпрд╣рд╛рдВ, рдСрд░реНрдбрд░ рдкреНрд░реЙрдкрд░реНрдЯреА рд╡реИрд╢реНрд╡рд┐рдХ рдмрд╣реБрднреБрдЬ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдСрд░реНрдбрд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред рдмрд╣реБрднреБрдЬ рд░рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
public interface Colour { @MutationRange("0.2") @Range(min = "0", max = "1", strict = "true") float getRed(); @MutationRange("0.2") @Range(min = "0", max = "1", strict = "true") float getGreen(); @MutationRange("0.2") @Range(min = "0", max = "1", strict = "true") float getBlue(); void setRed(float red); void setGreen(float green); void setBlue(float blue); }
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рддреАрди рд░рдВрдЧ рдШрдЯрдХреЛрдВ рдХреА рддрд░рд╣, рдЖрдк рдЕрднреА рднреА рдПрдХ рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо 50% рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд╕рд╛рде рд╕рднреА рдмрд╣реБрднреБрдЬ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рд╕реЗ рдЙрджрд╛рд╕реАрди рдореНрдпреВрдЯреЗрд╢рди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрдо рд╣реЛ рдЬрд╛рдПрдЧреАред рдпрд╣рд╛рдБ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ, рд╕реНрдкрд╖реНрдЯ рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдЗрд╕ рдореБрджреНрджреЗ рд╕реЗ рдирд┐рдкрдЯрд╛ рдЧрдпрд╛ рд╣реИред
рдмрд╣реБрднреБрдЬ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
public interface Point { int getX(); int getY(); }
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ X рдФрд░ Y рдХреЛ рд╕реЗрд▓ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрднреБрдЬ рд╣реЛрддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЪрд░ рдХреЗ рдЕрдиреБрдореЗрдп рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╡рд┐рдирд┐рдпрдорд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдиреЛрдЯреЗрд╢рди рдХреЗрд╡рд▓ рд░рдВрдЧ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЕрдиреБрдореЗрдп рд╕рдордиреНрд╡рдп рдореВрд▓реНрдп рдЫрд╡рд┐ рдХреЗ рдЖрдХрд╛рд░ рдФрд░ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд░рдВрдЧ рдШрдЯрдХ рдХреЗ рдЕрдиреБрдореЗрдп рдореВрд▓реНрдп рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЪреАрдЬреЗрдВ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
PolyImage
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рджреЛ рдЖрдВрддрд░рд┐рдХ рд╕реВрдЪрд┐рдпреЛрдВ рдкрд░ рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд▓рдЯрдХрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдЬрд┐рд╕реЗ рдбрд┐рдЯреИрдЪреНрдб рдПрдиреЛрдЯреЗрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рддреЛ, рдЪрд▓реЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реНрд░реЛрдд
рдпрд╣рд╛рдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ
рд╣реИрдВ ред рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ рд╕реЗ рдХрдИ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ рдЬреЛ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдмрд╣реБрдд рдХреБрдЫ рдЖрдиреБрд╡рдВрд╢рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛, рдФрд░ рд╢реЗрд╖ рднрд╛рдЧреЛрдВ рдкрд░ рдХреЛрдб рдореЗрдВ рдЯрд┐рдкреНрдкрдгреА рдХреА рдЧрдИ рд╣реИред
рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рд╛рде EvoJ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛
final HashMap<String, String> context = new HashMap<String, String>(); context.put("cells@Length", ROWS.toString()); context.put("cells.item@Length", COLUMNS.toString()); context.put("cells.item.item@Length", POLYGONS_PER_CELL.toString()); context.put("cells.item.item.item.points@Length", "6"); context.put("cells.item.item.item.points.item.x@StrictRange", "true"); context.put("cells.item.item.item.points.item.x@Min", String.valueOf(-widthRadius)); context.put("cells.item.item.item.points.item.x@Max", String.valueOf(widthRadius)); context.put("cells.item.item.item.points.item.x@MutationRange", "20"); context.put("cells.item.item.item.points.item.y@StrictRange", "true"); context.put("cells.item.item.item.points.item.y@Min", String.valueOf(-heightRadius)); context.put("cells.item.item.item.points.item.y@Max", String.valueOf(heightRadius)); context.put("cells.item.item.item.points.item.y@MutationRange", "20"); context.put("cells.item.item.item.order@Min", "0"); context.put("cells.item.item.item.order@Max", "1000");
рдпрд╣рд╛рдВ рд╣рдо рдПрдХ рд╕рдВрджрд░реНрдн рдмрдирд╛рддреЗ рд╣реИрдВ -
properties
рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рдорд╛рди
Map
, рдЬрд╣рд╛рдВ
properties
рдХрд╛ рдирд╛рдо
BeanUtils
рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЧрдП рдиреЛрдЯреЗрд╢рди рдХреЗ рд╕рдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдкрде рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреАрд╡рд░реНрдб
item
рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдирд╛рдо
cells
рд╣рдорд╛рд░реЗ рдореВрд▓
PolyImage
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА
cells
рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреА рд╣реИрдВред рдФрд░ рд▓рд╛рдЗрди
cells.item
рдЗрд╕ рд╕реВрдЪреА рдХреЗ рддрддреНрд╡ рд╣реИрдВ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рд▓рд╛рдЗрди
cells.item.item
рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рд╕реВрдЪреА рд╣реИрдВред
cells.item.item
, рдЖрджрд┐ред
рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рдФрд░
@
рдЪрд┐рд╣реНрди рдХреЗ рдмрд╛рдж рдЕрд▓рдЧ рдХрд┐рдП рдЧрдП рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдирд╛рдо рд╣реИ, рдЬреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдирд╛рдо рдХреЗ рд╕рдорд╛рди рд╣реИред рд╕реВрдЪреА рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣реИ рддрд╛рдХрд┐ EvoJ рдХреЛ рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдореЗрдВ рдЖрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рд╕реНрдерд╛рди рдкрддрд╛ рд╣реЛред
рдПрдиреЛрдЯреЗрд╢рди
cells.item.item.item.points@Length
рдмрд╣реБрднреБрдЬ рдореЗрдВ рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ (рдкрде рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреА рд╣реИ -
cells
рд╕рдВрдкрддреНрддрд┐, рддреАрди рдиреЗрд╕реНрдЯреЗрдб рд╕реВрдЪрд┐рдпрд╛рдВ, рдиреЗрд╕реНрдЯреЗрдб рд╕реВрдЪреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреЗ
points
рдЧреБрдгред
рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ, рдЙрдирдХреЗ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реАрдорд╛рдУрдВ, рдФрд░ рдЖрджреЗрд╢ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реАрдорд╛рдПрдВ рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред
рдЕрдЧрд▓рд╛, рд╣рдо рдЬреАрди рдкреВрд▓ рдмрдирд╛рддреЗ рд╕рдордп рднрд░реЗ рд╣реБрдП рд╕рдВрджрд░реНрдн рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдлрд┐рдЯрдиреЗрд╕ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдмрдирд╛рдирд╛
рдПрдХ рдлрд┐рдЯрдиреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдореВрд▓ рд╕реЗ рдЪрдпрдирд┐рдд рдЫрд╡рд┐ рдХреЗ рд╡рд┐рдЪрд▓рди рдХреЗ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдпреЛрдЧ рдЪреБрдирддреЗ рд╣реИрдВ, рдПрдХ рдЛрдг рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде - рдЪреВрдВрдХрд┐ рд╕рдмрд╕реЗ рдЫреЛрдЯреА рд░рд╛рд╢рд┐ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдлрд┐рдЯрдиреЗрд╕ рдлрд╝рдВрдХреНрд╢рди
ImageRating
рдХреНрд▓рд╛рд╕ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХрдХреНрд╖рд╛
AbstractSimpleRating
рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИ:
public class ImageRating extends AbstractSimpleRating<PolyImage>
рдФрд░ рдЕрдореВрд░реНрдд doCalcRating рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:
@Override protected Comparable doCalcRating(PolyImage solution) { BufferedImage tmp = drawImage(solution); return compareImages(originalImage, tmp); }
рдпрд╣рд╛рдБ
drawImage
рдлрдВрдХреНрд╢рди рдЕрдкрдиреЗ рд╕реЗрд▓, рдСрд░реНрдбрд░, рдХрд▓рд░ рдЖрджрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рднреА рдмрд╣реБрднреБрдЬреЛрдВ рдХреЛ рддреБрдЪреНрдЫ рд░реВрдк рд╕реЗ
drawImage
ред рд╣рдо рдЗрд╕ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗ - рдЖрдиреБрд╡рдВрд╢рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдХреБрдЫ рднреА рдЗрд╕рдореЗрдВ рдирд┐рд╣рд┐рдд рдирд╣реАрдВ рд╣реИред
compareImages
рдлрд╝рдВрдХреНрд╢рди рдкрд┐рдХреНрд╕реЗрд▓-рдмрд╛рдп-рдкрд┐рдХреНрд╕реЗрд▓ рдЫрд╡рд┐ рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИред рдЖрдЗрдП рдмрд╛рд░реАрдХреА рд╕реЗ рджреЗрдЦреЗрдВ
private Comparable compareImages(BufferedImage originalImage, BufferedImage tmp) { long result = 0; int[] originalPixels = originalImage.getRaster().getPixels(0, 0, originalImage.getWidth(), originalImage.getHeight(), (int[]) null); int[] tmpPixels = tmp.getRaster().getPixels(0, 0, tmp.getWidth(), tmp.getHeight(), (int[]) null); for (int i = 0; i < originalPixels.length; i++) { long d = originalPixels[i] - tmpPixels[i]; result -= d * d; } return result; }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдлрд╝рдВрдХреНрд╢рди рдХрд╛рдлреА рддреБрдЪреНрдЫ рд╣реИ - рдпрд╣ рдореВрд▓ рдФрд░ рд╣реМрд╕рд▓реЗ рд╕реЗ рдЦреАрдВрдЪреА рдЧрдИ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд░реЗрдЦрд╛рдкреБрдВрдЬ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рддрддреНрд╡реЛрдВ рджреНрд╡рд╛рд░рд╛ рдЙрдирдХреА рддреБрд▓рдирд╛ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдорддрднреЗрджреЛрдВ рдХреЗ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП (рд╢реВрдиреНрдп рд╕реЗ рд╕рд╛рдЗрди рдХреЗ рд╕рд╛рде)ред
рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдкрд░рд┐рдгрд╛рдо рдХреЛ рддреЗрдЬрд╝реА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╖реНрдЯрддрдо рдореНрдпреВрдЯреЗрд╢рди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдЪреБрдирдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
- рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрдгрдп рдПрдХ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реЛрдЧрд╛
- рд╕рдорд╛рдзрд╛рди рдХреЗ рднреАрддрд░ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░ рдХреЗ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕рдВрднрд╛рд╡рдирд╛
- рдкрд░рд┐рд╡рд░реНрддрди рдХреА рддреНрд░рд┐рдЬреНрдпрд╛ - рдПрдХ рдореНрдпреВрдЯреЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдПрдХ рдмрд┐рдВрджреБ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЕрдзрд┐рдХрддрдо рджреВрд░реА
- рд╕рдорд╛рдзрд╛рди рдЬреАрд╡рдирдХрд╛рд▓ (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднрд┐рд╕рд░рдг рдХреА рджрд░ рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ)
рд░рдгрдиреАрддрд┐ рдЪреБрдирдирд╛ рддреБрдЪреНрдЫ рдирд╣реАрдВ рд╣реИред рдПрдХ рддрд░рдл, рдПрдХ рдордЬрдмреВрдд рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдЖрдкрдХреЛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЧреНрд░рд╣рдг рдХрд░рдиреЗ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░рдо рд╕реАрдорд╛ "рдЧреНрд░реЛрдк" рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рджреВрд╕рд░реА рдУрд░, рдпрд╣ рдЗрд╕реЗ рдЕрдВрджрд░ рд╕реНрд▓рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ - рд╕рдорд╛рдзрд╛рди рд▓рдЧрд╛рддрд╛рд░ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд┐рд╕рд▓ рдЬрд╛рдПрдЧрд╛ред рд╕рдорд╛рдзрд╛рди рдХрд╛ рд▓рдВрдмрд╛ рдЬреАрд╡рди рдлрд┐рдЯрдиреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдХреЗ рдЦрд┐рд▓рд╛рдл рдмреАрдорд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдордЧреНрд░ рдкреНрд░рдЧрддрд┐ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдПрдХ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕реНрдерд╛рдиреАрдп рдЪрд░рдо рдореЗрдВ рд╕реНрд▓рд╛рдЗрдб рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдпрд╣ рднреА рддрдп рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЙрдЪреНрдЪ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрдиреЗ рдХреА рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдмрд╣реБрднреБрдЬ рдпрд╛ рдЙрдирдХреЗ рд░рдВрдЧреЛрдВ рдХреЗ рдмрд┐рдВрджреБред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рдмрд╛рдж, рдЪреБрдиреА рдЧрдИ рд░рдгрдиреАрддрд┐ рдЕрдкрдиреЗ рдЖрдк рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИ - рдЬреЛ рд╕рдорд╛рдзрд╛рди рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд╡реЗ рдЙрд╕ рдкрд░ рдлрд┐рд╕рд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдкрд╛рдП рдЧрдП рдЪрд░рдо рд╕реАрдорд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдЙрддрд╛рд░-рдЪрдврд╝рд╛рд╡ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдордп рдХреЗ рд╕рд╛рде рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рд╕реНрддрд░ рдШрдЯрддрд╛ рд╣реИ, рдФрд░ рд╕рдлрд▓ рдирд┐рд░реНрдгрдпреЛрдВ рдХрд╛ рдЬреАрд╡рдирдХрд╛рд▓ рдмрдврд╝рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рдЖрдиреБрднрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓реВрдк рдХрд╛ рдЖрдпреЛрдЬрди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- рдЖрдиреБрд╡рдВрд╢рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ 10 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ рд╣реИрдВ
- рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╕реЗ рдлрд┐рдЯрдиреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдорд╛рди рд▓реЗрдВ
- рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд░рдгрдиреАрддрд┐ рдмрджрд▓рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ
- рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд░рдгрдиреАрддрд┐ рдмрджрд▓реЗрдВ
- рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЫрд╡рд┐ рд╕рд╣реЗрдЬреЗрдВ
- рдпреВрдЖрдИ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд▓рдЧрднрдЧ 15 рдорд┐рдирдЯ (рдЖрдкрдХреА рдорд╢реАрди рдХреА рд╢рдХреНрддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдореЗрдВ рдЖрдк рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рдЪрдпрдирд┐рдд рдЫрд╡рд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореВрд▓ рд░реВрдк рд╕реЗ рдорд┐рд▓рддреА-рдЬреБрд▓рддреА рд╣реИ, рдФрд░ рдПрдХ рдпрд╛ рджреЛ рдШрдВрдЯреЗ рдХреЗ рдмрд╛рдж рдЖрдк рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рджрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдо рдХреЗ рдХрд░реАрдм рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдВрдЧреЗред
рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдФрд░ рд╕реБрдзрд╛рд░
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрдХреВрд▓рди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкреНрд░рдЧрддрд┐ рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬреА рдЖ рд╕рдХрддреА рд╣реИ:
- рд╕рдиреНрдирд┐рдХрдЯрди рдХреЛ рдЖрд░рдЬреАрдмреА рдХреЗ рдмрдЬрд╛рдп рд▓реИрдм рд╕реНрдкреЗрд╕ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдХрд┐ рд░рдВрдЧ рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдХреА рджреВрд░реА рдЖрдВрдЦ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдВрддрд░ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред рдпрд╣ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдирд╣реАрдВ рдЬреЛрдбрд╝реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред
- рдЫрд╡рд┐ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдорд╣рддреНрд╡ рдХрд╛ рдПрдХ рдореБрдЦреМрдЯрд╛ рдмрдирд╛рдПрдВ - рд░реБрдЪрд┐ рдХреЗ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╢реНрд╡реЗрдд-рд╢реНрдпрд╛рдо рдЫрд╡рд┐, рдЬреЛ рддрдм рдлрд┐рдЯрдиреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЧрдгрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдПрдЧреА, рдЗрд╕рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓реЗрдЧреА рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреНрдпрд╛рдЬ рдХреНрдпрд╛ рд╣реИред
- рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП VolatileImage рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдореЗрд░реА рдорд╢реАрди рдкрд░, рдмреНрдпреВрдЯреЗрд░рд┐рдПрдореЗрдЬ рдкрд░ рдбреНрд░рд╛рдЗрдВрдЧ, рдмрдлрд╝рд░реЗрдбрдЖрдИрдореИрдЬ рдкрд░ рдбреНрд░рд╛рдЗрдВрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 10 рдЧреБрдирд╛ рддреЗрдЬ рд╣реИред рд╕рдЪ рд╣реИ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдкрд┐рдХреНрд╕рд▓ рдХреЗ рд░рдВрдЧреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрд╕реЗ рднреА рдмрдлрд╝рд░рдбреИрдореЗрдЬ рдореЗрдВ рдмрджрд▓рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЧрд┐рд░рд╛рд╡рдЯ рдЖрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдмрдлрд╝рд░рдбрд╛рдЗрдореИрдЬ рдкрд░ рд╕рд┐рд░реНрдл рдмрд╣реБрднреБрдЬ рдЦреАрдВрдЪрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ 3 рдЧреБрдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
- рд╡рд┐рднрд┐рдиреНрди рдЪрд░рдгреЛрдВ рдореЗрдВ рдЗрд╖реНрдЯрддрдо рдореНрдпреВрдЯреЗрд╢рди рдкреИрд░рд╛рдореАрдЯрд░ рдЪреБрдиреЗрдВред рдпрд╣ рдПрдХ рдЖрд╕рд╛рди рдХрд╛рдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдЖрдиреБрд╡рдВрд╢рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рднреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЙрди рдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд┐рдпрд╛ рдЬрд╣рд╛рдВ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдкреИрд░рд╛рдореАрдЯрд░ рдЪрд░ рдереЗ, рдФрд░ рдлрд┐рдЯрдиреЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рддрд┐ 100 рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдореЗрдВ рдХрдореА рдХреА рдФрд╕рдд рджрд░ рдереАред рдкрд░рд┐рдгрд╛рдо рдЙрддреНрд╕рд╛рд╣рдЬрдирдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдореНрдкреНрдпреВрдЯреЗрд╢рдирд▓ рд╢рдХреНрддрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╢рд╛рдпрдж рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд░реАрдм рд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВрдВрдЧрд╛ред
- рдХрдИ рд╕реНрд╡рддрдВрддреНрд░ рдЬреАрди рдкреВрд▓ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬреАрди рдкреВрд▓ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд╢реНрдЪрд┐рдд рдЕрдВрддрд░рд╛рд▓ рдкрд░ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдирдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдЬреАрдП рджреНрд╡реАрдк рдореЙрдбрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рд╡рд┐рдХрд╛рд╕ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рджреНрд╡реАрдкреЛрдВ рдкрд░ рдереАрдВ, рд╡рд┐рднрд┐рдиреНрди рджреНрд╡реАрдкреЛрдВ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдкрд╛рд░ рдмрд╣реБрдд рджреБрд░реНрд▓рдн рд╣реИрдВред
- рдкреЙрд▓реАрдЧреЛрди рдХреЗ рд╕рд╛рде рдЫрд╡рд┐ рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рдмреЛрдПрдВ: рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдореЗрдВ 1-2 рдкреЙрд▓реАрдЧреЛрди рдкрд╣рд▓реЗ рд░рдЦреЗрдВ, рдЙрдиреНрд╣реЗрдВ "рд░реЗрдВрдЧрдирд╛" рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ, рдлрд┐рд░ рдЙрди рдЬрдЧрд╣реЛрдВ рдкрд░ рдПрдХ рдФрд░ 1-2 рдкреЙрд▓реАрдЧреЛрди рдЬреЛрдбрд╝реЗрдВ рдЬрд╣рд╛рдВ рдЫрд╡рд┐ рдореВрд▓ рд╕реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рдЪрд▓рди рдХрд░рддреА рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдирдП рдЬреЛрдбрд╝реЗ рдЧрдП рдкреЙрд▓реАрдЧреЛрди рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рджреЛрд╣рд░рд╛рдПрдВ рдЬрдм рддрдХ рд╕реЗрд▓ рдореЗрдВ рдмрд╣реБрднреБрдЬреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдФрд░ рддрдм рдкреВрд░реА рдЫрд╡рд┐ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд▓реЗрдЦ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рдмрд╕реЗ рд╕рдЯреАрдХ рдХрд░реАрдм рд╕рдиреНрдирд┐рдХрдЯрди рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдВрддрднрд╛рд╖рдг
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрд╛ рдХрд┐ рдЫрд╡рд┐ рд╕рдиреНрдирд┐рдХрдЯрди рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдИрд╡реЛрдЬреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдПрдХ рдЖрдиреБрд╡рдВрд╢рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдердо рджреНрд╡рд╛рд░рд╛ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рд╕рдиреНрдирд┐рдХрдЯрди рдПрдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЕрдХрд╛рджрдорд┐рдХ рдпрд╛ рд╕реМрдВрджрд░реНрдпрд╡рд╛рджреА рд░реБрдЪрд┐ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рддреЗрдЬ рдЫрд╡рд┐ рд╡реЗрдХреНрдЯрд░рд╛рдЗрдЬреЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдЧрд▓реА рдмрд╛рд░ рдореИрдВ рдбрд┐рдЬрд╛рдЗрди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдиреБрд╡рдВрд╢рд┐рдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред
UPD1: рдЪреВрдВрдХрд┐ рд▓реЗрдЦ рдХреЗ рдкрд╛рда рдореЗрдВ рджрд┐рдП рдЧрдП рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рд▓рд┐рдВрдХ рд╣рдбрд╝рддрд╛рд▓реА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдпрд╣рд╛рдБ http://evoj.sourceforge.net/static/demos/img-demo.rar
UPD2: рд╢реНрд░рдорд┐рдХреЛрдВ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░, рдореИрдВ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рд▓реЗрдЦ рд╕реЗ рд╕реНрд▓рд╛рдЗрдб рдХрд╛ рдЙрджреНрдзрд░рдг рдХрд░рддрд╛ рд╣реВрдВрд╕реНрд░реЛрдд рдЫрд╡рд┐ | рдорд┐рд▓рд╛рди рдХреА рдЧрдИ рдЫрд╡рд┐ |
---|
 |  |
 |  |