Cutscene рдХреЗ рддрд╣рдд, рдЬреВрд▓рд┐рдпрд╛ рднрд╛рд╖рд╛ рдХреЗ рдкреНрд░рдореБрдЦ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рд╕реНрдЯреАрдлрди рдХрд╛рд░рдкрд┐рдиреНрд╕реНрдХреА рджреНрд╡рд╛рд░рд╛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдПрдХ рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИред рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдореБрдЦреНрдп рдЬреВрд▓рд┐рдпрд╛ рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдП рдЧрдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рдХреБрд╢рд▓ рдХрдИ рдкреНрд░реЗрд╖рдг рдХреЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЪрд░реНрдЪрд╛ рдХреАред
рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ : рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рд╢реАрд░реНрд╖рдХ рдпреВрдЬреАрди рд╡рд┐рдЧреНрдирд░ рдХреЗ рдПрдХ рд▓реЗрдЦ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ, "рдкреНрд░рд╛рдХреГрддрд┐рдХ рд╡рд┐рдЬреНрдЮрд╛рди рдореЗрдВ рдЧрдгрд┐рдд рдХреА рдЕрддреБрд▓рдиреАрдп рдкреНрд░рднрд╛рд╡рдХрд╛рд░рд┐рддрд╛ ред "
рдПрдХрд╛рдзрд┐рдХ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдЬреВрд▓рд┐рдпрд╛ рднрд╛рд╖рд╛ рдХрд╛ рдПрдХ рдкреНрд░рдореБрдЦ рдкреНрд░рддрд┐рдорд╛рди рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рджреМрд░рд╛рди, рд╣рдо, рднрд╛рд╖рд╛ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдХреБрдЫ рдЕрдкреЗрдХреНрд╖рд┐рдд рджреЗрдЦрд╛, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ puzzlingред рдХрдо рд╕реЗ рдХрдо рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереА рдХрд┐ рд╣рдордиреЗ рдЗрд╕реЗ рдХрд┐рд╕ рд╣рдж рддрдХ рджреЗрдЦрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рд╣реИ - рдЬреВрд▓рд┐рдпрд╛ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреЛрдб рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд╛ рдПрдХ рдЪреМрдВрдХрд╛ рджреЗрдиреЗ рд╡рд╛рд▓рд╛ рд╕реНрддрд░, рдЬреЛ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рдЬрд┐рддрдирд╛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рд╣реИред
рд╣рдо рд▓рдЧрд╛рддрд╛рд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреБрдЫ рд▓реЛрдЧ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдХреЛрдИ рдФрд░ рдирдП рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпреЗ рд▓реЛрдЧ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдХреЛрдИ рдЗрд╕ рдХреЛрдб рдХреЛ рдЗрд╕ рдЕрд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ ... рдФрд░ рд╕рдм рдХреБрдЫ рдмрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдЕрдХреНрд╕рд░ рд╣реЛрддрд╛ рд╣реИ ред
рдореИрдВрдиреЗ рд╣рдореЗрд╢рд╛ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕реЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХрдИ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЖрдорддреМрд░ рдкрд░ рд╕рдм рдХреБрдЫ рдмрд╕ рдЙрдирдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛: рдЬреВрд▓рд┐рдпрд╛ рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдЗрддрдиреА рдкреНрд░рднрд╛рд╡реА рднрд╛рд╖рд╛ рдХреНрдпреЛрдВ рд╣реИ? рдХреЛрдб рдкреБрди: рдЙрдкрдпреЛрдЧ рд╕реНрддрд░ рдЗрддрдирд╛ рдЙрдЪреНрдЪ рдХреНрдпреЛрдВ рд╣реИ? рдФрд░ рдпрд╣ рднреА - рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рд╕рдмрдХ рд╕реАрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдБ рдмреЗрд╣рддрд░ рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЬреВрд▓рд┐рдпрд╛ рд╕реЗ рдЙрдзрд╛рд░ рд▓реЗ рд╕рдХрддреА рд╣реИрдВ?
рдХрднреА-рдХрднреА, рдЬрдм рдореИрдВ рдпрд╣ рдХрд╣рддрд╛ рд╣реВрдВ, рддреЛ рдЬрдирддрд╛ рдореБрдЭ рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреВрд▓рд┐рдпрд╛рдХреЙрди рдкрд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП - рдореЗрд░реЗ рдкрд╕рдВрджреАрджрд╛ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХред

рд╕реНрд▓рд╛рдЗрдб рдореЗрдВ рдХреНрд░рд┐рд╕ рд░рд╛рдХрд╛рдХрд╛рд╕ рдХреЗ рдХрд╛рдо рдХрд╛ рдирддреАрдЬрд╛ рд╣реИред рд╡рд╣ рдЕрдВрддрд░ рд╕рдореАрдХрд░рдгреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╣реБрдд рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдкреИрдХреЗрдЬ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЖрдк рдЬреЛ рдЪрд╛рд╣реЗрдВ, рджреЛрд╣рд░реА рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдмрд┐рдЧрдлреНрд▓реЛрдЯ рдлрд╝реАрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдХрд┐рд╕реА рддрд░рд╣ рдЙрд╕рдиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рд╡рд╣ рдПрдХреАрдХрд░рдг рдкрд░рд┐рдгрд╛рдо рдХреА рддреНрд░реБрдЯрд┐ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдФрд░ рдПрдХ рдорд╛рдк рдкреИрдХреЗрдЬ рдерд╛ рдЬреЛ рд╕реВрддреНрд░реЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреМрддрд┐рдХ рдорд╛рддреНрд░рд╛ рдХреЗ рдореВрд▓реНрдп рдФрд░ рддреНрд░реБрдЯрд┐ рдХреЗ рдкреНрд░рд╕рд╛рд░ рджреЛрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдкреИрдХреЗрдЬ рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдг also рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЕрдирд┐рд╢реНрдЪрд┐рддрддрд╛ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╕реНрд▓рд╛рдЗрдб рдкрд░ рдпрд╣ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдХрд╛ рддреНрд╡рд░рдг, рдкреЗрдВрдбреБрд▓рдо рдХреА рд▓рдВрдмрд╛рдИ, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡реЗрдЧ, рд╡рд┐рдЪрд▓рди рдХреЗ рдХреЛрдг рд╕рднреА рдХреЛ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ, рдЖрдк рдПрдХ рд╕рд░рд▓ рдкреЗрдВрдбреБрд▓рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЧрддрд┐ рдХреЗ рд╕рдореАрдХрд░рдгреЛрдВ рдХреЛ рд╕реЙрд▓реНрд╡рд░ ODE рдФрд░ - bam рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ ! - рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ред рдФрд░ рдЖрдк рдореВрдВрдЫреЗрдВ рдЧрд▓рдд рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдЧреНрд░рд╛рдл рджреЗрдЦрддреЗ рд╣реИрдВред рдФрд░ рдореИрдВ рдЕрднреА рднреА рдирд╣реАрдВ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдЖрд░реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рднреА рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рд╣реИ, рдФрд░ рдЖрдк рдорд╛рдк рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдореВрд▓реНрдп рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ редjl рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЧреНрд░рд╛рдл рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдХреБрд▓ рдФрд░ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХреЛрдб рдЖрд╕рд╛рди mozgovynosyaschy рдХреА рдЕрдиреБрдХреВрд▓рддрд╛ рдХрд╛ рд╕реНрддрд░ред рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ? рдпрд╣ рд╣рд╛рдБ рдирд┐рдХрд▓рддрд╛ рд╣реИред
рдареАрдХ рд╣реИ, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереАред рдЖрдЦрд┐рд░рдХрд╛рд░, рд╣рдордиреЗ рднрд╛рд╖рд╛ рдореЗрдВ рдХрдИ рдкреНрд░реЗрд╖рдг рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдкрд╛рдЧрд▓ рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рдд рд╣реИ, рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЖрдЦрд┐рд░рдХрд╛рд░, C ++ рдореЗрдВ рд╕рд┐рдВрдЧрд▓ рдбрд┐рд╕реНрдкреИрдЪрд┐рдВрдЧ рдФрд░ рдСрдкрд░реЗрдЯрд░ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рднреА рдПрдХ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП - рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реЗ рдЕрдХреНрд╕рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рд╡реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣рдо рдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рдПрдХ рднрд╛рд╖рд╛ рдХреЗ рд╡рд┐рдХрд╛рд╕: рди рд╕рд┐рд░реНрдл рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рд▓рд┐рдЦрд╛ред рддреЛ рдлрд┐рд░ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдирд╛ рдХреНрдпрд╛, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдЕрдзрд┐рдХ рд╣реИ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред
рддреЛ, рдХреЛрдб рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рджреЛ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ, рдФрд░ рд╡реЗ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИрдВред рдПрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИ, рдФрд░ рдпрд╣ рдкрд╣рд▓реА рдЪреАрдЬ рд╣реИ рдЬреЛ рд╡реЗ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░рд╛, рдХрдо рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╣рд▓реВ рд╡рд╣ рд╕рд╛рджрдЧреА рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЬреВрд▓рд┐рдпрд╛ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдХреБрдЫ рд╣рдж рддрдХ, рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдХрд╛рд░ рд╡рд┐рдзрд┐рдпрд╛рдБ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдмрд╛рдзрд╛ рдирд╣реАрдВ рдмрдирддреА рд╣реИрдВ: рдЖрдкрдХреЛ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦрдХ рд╕реЗ рд╕рд╣рдордд рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЙрд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рддреЗ рд╣реИрдВ; рдЖрдк рдмрд╕ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ: "рдУрд╣, рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХрд╛ RGB рдкрд╕рдВрдж рд╣реИред рдореИрдВ рдЗрд╕ рдкрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд╛рде рдЖрдКрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдкрд╕рдВрдж рд╣реИред"
рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛ред рдПрдХрд╛рдзрд┐рдХ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдмрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ
рдЕрдм рдореБрдЭреЗ C ++ рдпрд╛ Java рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЙрдирд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рд╕рд╡рд╛рд▓ рдкреВрдЫреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдпрд╣ рдХрдИ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ рдФрд░ рдХреНрдпреЛрдВ рдХрд╛рд░реНрдп рдЕрдзрд┐рднрд╛рд░ рдмрджрддрд░ рд╣реИ?
рдореИрдВ рдЬреВрд▓рд┐рдпрд╛ рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реВрдБрдЧрд╛:
abstract type Pet end struct Dog <: Pet; name::String end struct Cat <: Pet; name::String end function encounter(a::Pet, b::Pet) verb = meets(a, b) println("$(a.name) meets $(b.name) and $verb") end meets(a::Dog, b::Dog) = "sniffs" meets(a::Dog, b::Cat) = "chases" meets(a::Cat, b::Dog) = "hisses" meets(a::Cat, b::Cat) = "slinks"
$ (b.name) рдФрд░ $ рдХреНрд░рд┐рдпрд╛") abstract type Pet end struct Dog <: Pet; name::String end struct Cat <: Pet; name::String end function encounter(a::Pet, b::Pet) verb = meets(a, b) println("$(a.name) meets $(b.name) and $verb") end meets(a::Dog, b::Dog) = "sniffs" meets(a::Dog, b::Cat) = "chases" meets(a::Cat, b::Dog) = "hisses" meets(a::Cat, b::Cat) = "slinks"
рдмрд┐рд▓реНрд▓реА) = "рдкреАрдЫрд╛" abstract type Pet end struct Dog <: Pet; name::String end struct Cat <: Pet; name::String end function encounter(a::Pet, b::Pet) verb = meets(a, b) println("$(a.name) meets $(b.name) and $verb") end meets(a::Dog, b::Dog) = "sniffs" meets(a::Dog, b::Cat) = "chases" meets(a::Cat, b::Dog) = "hisses" meets(a::Cat, b::Cat) = "slinks"
рдХреБрддреНрддрд╛) = "hisses" abstract type Pet end struct Dog <: Pet; name::String end struct Cat <: Pet; name::String end function encounter(a::Pet, b::Pet) verb = meets(a, b) println("$(a.name) meets $(b.name) and $verb") end meets(a::Dog, b::Dog) = "sniffs" meets(a::Dog, b::Cat) = "chases" meets(a::Cat, b::Dog) = "hisses" meets(a::Cat, b::Cat) = "slinks"
рд╣рдо Pet
рдХреЗ рд╕рд╛рд░ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП Dog
рдФрд░ Cat
рдХреЗ рдЙрдкрдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рдирд╛рдо рдлрд╝реАрд▓реНрдб рд╣реИ (рдХреЛрдб рдереЛрдбрд╝рд╛ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╣рди рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ) рдФрд░ рдПрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд "рдореАрдЯрд┐рдВрдЧ" рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рддрд░реНрдХреЛрдВ рдХреЗ Pet
рдкреНрд░рдХрд╛рд░ Pet
рджреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реЗрддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдореАрдЯрд┐рдВрдЧ meet()
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд "рдХрд╛рд░реНрд░рд╡рд╛рдИ" рдХреА рдЧрдгрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдореАрдЯрд┐рдВрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд╛рдХреНрдп рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВред meets()
рдлрдВрдХреНрд╢рди рдореЗрдВ, рд╣рдо рдЙрд╕ рдПрдХреНрд╢рди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд▓реНрдЯреАрдкрд▓ рдбрд┐рд╕реНрдкреИрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдЬрд╛рдирд╡рд░ рддрдм рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЙрд╕рдХрд╛ рджреВрд╕рд░реЗ рд╕реЗ рд╕рд╛рдордирд╛ рд╣реЛрддрд╛ рд╣реИред
рдХреБрддреНрддреЛрдВ рдХреЗ рдЬреЛрдбрд╝реЗ рдФрд░ рдмрд┐рд▓реНрд▓рд┐рдпреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдмреИрдардХ рдХреЗ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВ:
fido = Dog("Fido") rex = Dog("Rex") whiskers = Cat("Whiskers") spots = Cat("Spots") encounter(fido, rex) encounter(rex, whiskers) encounter(spots, fido) encounter(whiskers, spots)
рдЕрдм рд╣рдо C ++ рдореЗрдВ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ "рдЕрдиреБрд╡рд╛рдж" рдХрд░реЗрдВрдЧреЗред name
рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рд╛рде Pet
рд╡рд░реНрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ - C ++ рдореЗрдВ рд╣рдо рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╡реИрд╕реЗ, C ++ рдХреЗ рдлрд╛рдпрджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдХреЛ рдЕрдореВрд░реНрдд рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░ рд╣рдо рдмреЗрд╕ meets()
рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, encounter()
рдХреЛ рдЯрд╛рдЗрдк рдХрд░реЗрдВ encounter()
рдФрд░ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ Pet
рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рдиред рдЕрдВрдд рдореЗрдВ, рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧреЛрдВ Dog
рдФрд░ Cat
рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдУрд╡рд░рд▓реЛрдб meets()
рдХрд░реЗрдВ:
class Pet { public: string name; }; string meets(Pet a, Pet b) { return "FALLBACK"; } void encounter(Pet a, Pet b) { string verb = meets(a, b); cout << a.name << " meets " << b. name << " and " << verb << endl; } class Cat : public Pet {}; class Dog : public Pet {}; string meets(Dog a, Dog b) { return "sniffs"; } string meets(Dog a, Cat b) { return "chases"; } string meets(Cat a, Dog b) { return "hisses"; } string meets(Cat a, Cat b) { return "slinks"; }
) { class Pet { public: string name; }; string meets(Pet a, Pet b) { return "FALLBACK"; } void encounter(Pet a, Pet b) { string verb = meets(a, b); cout << a.name << " meets " << b. name << " and " << verb << endl; } class Cat : public Pet {}; class Dog : public Pet {}; string meets(Dog a, Dog b) { return "sniffs"; } string meets(Dog a, Cat b) { return "chases"; } string meets(Cat a, Dog b) { return "hisses"; } string meets(Cat a, Cat b) { return "slinks"; }
) {рд╡рд╛рдкрд╕реА "sniffs"; class Pet { public: string name; }; string meets(Pet a, Pet b) { return "FALLBACK"; } void encounter(Pet a, Pet b) { string verb = meets(a, b); cout << a.name << " meets " << b. name << " and " << verb << endl; } class Cat : public Pet {}; class Dog : public Pet {}; string meets(Dog a, Dog b) { return "sniffs"; } string meets(Dog a, Cat b) { return "chases"; } string meets(Cat a, Dog b) { return "hisses"; } string meets(Cat a, Cat b) { return "slinks"; }
) {рд╡рд╛рдкрд╕реА "hisses"; class Pet { public: string name; }; string meets(Pet a, Pet b) { return "FALLBACK"; } void encounter(Pet a, Pet b) { string verb = meets(a, b); cout << a.name << " meets " << b. name << " and " << verb << endl; } class Cat : public Pet {}; class Dog : public Pet {}; string meets(Dog a, Dog b) { return "sniffs"; } string meets(Dog a, Cat b) { return "chases"; } string meets(Cat a, Dog b) { return "hisses"; } string meets(Cat a, Cat b) { return "slinks"; }
рдЬреВрд▓рд┐рдпрд╛ рдХреЛрдб рдореЗрдВ main()
рдлрд╝рдВрдХреНрд╢рди, рдХреБрддреНрддреЛрдВ рдФрд░ рдмрд┐рд▓реНрд▓рд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ:
int main() { Dog fido; fido.name = "Fido"; Dog rex; rex.name = "Rex"; Cat whiskers; whiskers.name = "Whiskers"; Cat spots; spots.name = "Spots"; encounter(fido, rex); encounter(rex, whiskers); encounter(spots, fido); encounter(whiskers, spots); return 0; }
рдЗрд╕рд▓рд┐рдП, рдлрдВрдХреНрд╢рди рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрдИ рдкреНрд░реЗрд╖рдгред рдШрдВрдЯрд╛!

рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рдкреНрд░реЗрд╖рдг рдХреЗ рд╕рд╛рде рдХреЛрдб рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПрдЧрд╛?
$ рдЬреВрд▓рд┐рдпрд╛ pets.jl Fido meets Rex and sniffs Rex meets Whiskers and chases Spots meets Fido and hisses Whiskers meets Spots and slinks
рдЬрд╛рдирд╡рд░реЛрдВ рдХрд╛ рдорд┐рд▓рдирд╛, рд╕реВрдБрдШрдирд╛, рдлреБрдлрдХрд╛рд░рдирд╛ рдФрд░ рдкрдХрдбрд╝рдирд╛-рдЦреЗрд▓рдирд╛ - рдЬреИрд╕рд╛ рдХрд┐ рдЗрд░рд╛рджрд╛ рдерд╛ред
$ g ++ -o Pets Pets.cpp &&/pets Fido meets Rex and FALLBACK Rex meets Whiskers and FALLBACK Spots meets Fido and FALLBACK Whiskers meets Spots and FALLBACK
рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, "рдлрд╝реЙрд▓рдмреИрдХ" рд╡рд┐рдХрд▓реНрдк рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рд╣реИред
рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рд░реНрдп рдЕрдзрд┐рднрд╛рд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░реЗрд╖рдг рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рддреЛ meets(a, b)
рдХреЗ рднреАрддрд░ encounter()
рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдЬрд┐рдирдореЗрдВ рд╕реЗ рд╕рд╛рде рд╣реА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ a
рдФрд░ b
рдХреЙрд▓ рдХреЗ рд╕рдордп рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП meets()
рд╕реНрдереИрддрд┐рдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ a
рдФрд░ b
, рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рджреЛрдиреЛрдВ Pet
ред
рдЗрд╕рд▓рд┐рдП, C ++ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдп рдЬреВрд▓рд┐рдпрд╛ рдХреЛрдб рдХрд╛ рдкреНрд░рддреНрдпрдХреНрд╖ "рдЕрдиреБрд╡рд╛рдж" рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдХрд▓рдХ рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рдВрдХрд▓рд┐рдд рд╕реНрддрд░ рдкрд░ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред рдФрд░ рдкреВрд░реЗ рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдареЛрд╕ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЪрд░ рдореЗрдВ рд░рдирд╡реЗ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВред рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡реЗ рдХреБрдЫ рд╣рдж рддрдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдлрд┐рд░ рднреА рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рд╕рдВрдХрд▓рд┐рдд рд╕рдордп рдкрд░ рд╕рдВрд╡реИрдзрд╛рдирд┐рдХ рд░реВрдк рд╕реЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рдпрд╣ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдЕрд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред
рдореЗрд░реЗ рд▓рд┐рдП, рдРрд╕реЗ рдЙрджрд╛рд╣рд░рдг рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХрд╛рдзрд┐рдХ рдкреНрд░реЗрд╖рдг рд╕рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдиреНрдп рд╕рднреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдЕрдиреБрдорд╛рди рдирд╣реАрдВ рд╣реИрдВред
рдЕрдм рдЖрдЗрдП рдРрд╕реА рддрд╛рд▓рд┐рдХрд╛ рджреЗрдЦреЗрдВред рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рд╕рд╛рд░реНрдердХ рдкрд╛рдПрдВрдЧреЗ:
рдкреНрд░реЗрд╖рдг рдХреЗ рдмрд┐рдирд╛ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдЖрдк рдмрд╕ f(x, y, ...)
рд▓рд┐рдЦрддреЗ рд╣реИрдВ f(x, y, ...)
рд╕рднреА рддрд░реНрдХреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░ рдирд┐рд╢реНрдЪрд┐рдд рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рдХреЙрд▓ рдЯреВ f()
рд╕рд┐рдВрдЧрд▓ рдлрдВрдХреНрд╢рди f()
рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рд╣реИ, рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдирд┐рд░рдВрддрд░ рдХреА рдбрд┐рдЧреНрд░реА: рдХреЙрд▓ f()
рд╣рдореЗрд╢рд╛ рдПрдХ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рдд рдмрдирд╛ рджреЗрддрд╛ рд╣реИред 1990 рдФрд░ 2000 рдХреЗ рджрд╢рдХ рдореЗрдВ рдУрдУрдкреА рдХреЗ рд╕рдВрдХреНрд░рдордг рдореЗрдВ рдПрдХрд▓ рдкреНрд░реЗрд╖рдг рдПрдХ рдмрдбрд╝реА рд╕рдлрд▓рддрд╛ рдереАред рдбреЙрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдорддреМрд░ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд▓реЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рдЕрд╡рд╕рд░ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ: рдХреЙрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдПрдХреНрд╕ 1 рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ рдЕрд╡рд╕рд░ рд╕реЗрдЯ рдХреА рд╢рдХреНрддрд┐ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред X 1 | f()
рд╡рд┐рдзрд┐ рд╡рд╛рд▓реЗ рдкреНрд░рдХрд╛рд░ред рдХрдИ рдкреНрд░реЗрд╖рдг рдореЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдлрд╝рдВрдХреНрд╢рди f()
рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдЙрддреНрдкрд╛рдж рдХреА рд╢рдХреНрддрд┐ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдЬрд┐рдирдХреЗ рд▓рд┐рдП рддрд░реНрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╢рд╛рдпрдж рд╣реА рдХрд┐рд╕реА рдХреЛ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдХрд┐рд╕реНрдо рдХреЗ рдХрд┐рд╕реА рднреА рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдПрдХ рд╕рд░рд▓ рдФрд░ рдкреНрд░рд╛рдХреГрддрд┐рдХ рддрд░реАрдХрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд╕реЗ рдЕрд╡рд╕рд░реЛрдВ рдХреА рддреЗрдЬреА рд╕реЗ рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИред
рднрд╛рдЧ 1. рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
рдЖрдЗрдП рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ - рдХрдИ рдкреНрд░реЗрд╖рдг рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ред
рдпрд╣рд╛рдБ рдЬреЗрдиреЗрд░рд┐рдХ рдХреЛрдб рдХрд╛ рдПрдХ (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреГрддреНрд░рд┐рдо) рдЙрджрд╛рд╣рд░рдг рд╣реИ:
using LinearAlgebra function inner_sum(A, vs) t = zero(eltype(A)) for v in vs t += inner(v, A, v)
рдпрд╣рд╛рдБ A
рдХреБрдЫ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЬреИрд╕рд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдореИрдВрдиреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдореИрдВ рдирд╛рдо рд╕реЗ рдХреБрдЫ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдБ), vs
рдХреБрдЫ рд╡реЗрдХреНрдЯрд░-рдЬреИрд╕реЗ рддрддреНрд╡реЛрдВ рдХрд╛ рд╡реЗрдХреНрдЯрд░ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕реНрдХреЗрд▓рд░ рдЙрддреНрдкрд╛рдж рдХреЛ рдЗрд╕ "рдореИрдЯреНрд░рд┐рдХреНрд╕" рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдкрд░рд┐рднрд╛рд╖рд╛ рджреА рдЧрдИ рд╣реИред рдпрд╣рд╛рдВ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рд▓реВрдк рдХреЗ inner()
рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЗрд╕ рдмрд╣реБрдд рдХреЙрд▓ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рдкреЗрд╢реЗрд╡рд░ рд╕рд▓рд╛рд╣: рдпрджрд┐ рдЖрдк рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдмрд╕ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ рд╣рдЯрд╛ рджреЗрдВ)ред
рддреЛ, "рджреЗрдЦреЛ, рдорд╛рдБ, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ":
julia> A = rand(3, 3) 3├Ч3 Array{Float64,2}: 0.934255 0.712883 0.734033 0.145575 0.148775 0.131786 0.631839 0.688701 0.632088 julia> vs = [rand(3) for _ in 1:4] 4-element Array{Array{Float64,1},1}: [0.424535, 0.536761, 0.854301] [0.715483, 0.986452, 0.82681] [0.487955, 0.43354, 0.634452] [0.100029, 0.448316, 0.603441] julia> inner_sum(A, vs) 6.825340887556694
рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ, рдпрд╣ рдХреБрдЫ рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди - рдХреЛрдб рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╢реИрд▓реА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА A
рдФрд░ vs
рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдпрджрд┐ рдХреЗрд╡рд▓ рдЙрдирдХреЗ рд▓рд┐рдП рдЗрд╕реА рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред
рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рджрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП - рдХрд┐рддрдирд╛ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реИред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдШрдиреЗ рд╡реИрдХреНрдЯрд░ рдФрд░ рдореИрдЯреНрд░рд┐рд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреЛрдб "рдЬреИрд╕рд╛ рдХрд┐ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП" - рдпрд╣ рдмреАрдПрд▓рдПрдПрд╕ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рдЖрд╣реНрд╡рд╛рди рдХреЗ рд╕рд╛рде рдорд╢реАрди рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛, рдЖрджрд┐ред рдЖрджрд┐ рдпрджрд┐ рдЖрдк рд╕реНрдерд┐рд░ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдХрд▓рдХ рдЗрд╕реЗ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦреЗрдЧрд╛, рдЪрдХреНрд░реЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдЧрд╛, рд╡реИрд╢реНрд╡реАрдХрд░рдг рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ - рд╕рдм рдХреБрдЫ рд╡реИрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рдЗрд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдХреЛрдб рдирдП рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдФрд░ рдЖрдк рдЗрд╕реЗ рди рдХреЗрд╡рд▓ рд╕реБрдкрд░-рдХреБрд╢рд▓, рдмрд▓реНрдХрд┐ рд╕реБрдкрд░-рдбреБрдкрд░-рдХреБрд╢рд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ! рд╣рдореЗрдВ (рдпрд╣ рд╣реИ рдХрд┐ рдорд╢реАрди рд╕реАрдЦрдиреЗ рдореЗрдВ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ) рдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛, рдПрдХ рдПрдХрд╛рддреНрдордХ рд╡реЗрдХреНрдЯрд░ (рдПрдХ рдЧрд░реНрдо рд╡реЗрдХреНрдЯрд░) рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рд╡реЗрдХреНрдЯрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ 1 рд╣реИ, рдФрд░ рдЕрдиреНрдп рд╕рднреА рд╢реВрдиреНрдп рд╣реИрдВред рдЖрдк рдЗрд╕реЗ рдмрд╣реБрдд рдХреЙрдореНрдкреИрдХреНрдЯ рд░реВрдк рд╕реЗ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рд╕рднреА рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рд╡реЗрдХреНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ рдФрд░ рдиреЙрдирдЬреЗрд░реЛ рдШрдЯрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред
import Base: size, getindex, * struct OneHotVector <: AbstractVector{Int} len :: Int ind :: Int end size(v::OneHotVector) = (v.len,) getindex(v::OneHotVector, i::Integer) = Int(i == v.ind)
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬ рд╕реЗ рдкреВрд░реА рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИред рдФрд░ рдЗрд╕ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде, inner_sum()
рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:
julia> vs = [OneHotVector(3, rand(1:3)) for _ in 1:4] 4-element Array{OneHotVector,1}: [0, 1, 0] [0, 0, 1] [1, 0, 0] [1, 0, 0] julia> inner_sum(A, vs) 2.6493739294755123
рд▓реЗрдХрд┐рди рдПрдХ рд╕реНрдХреЗрд▓рд░ рдЙрддреНрдкрд╛рдж рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдпрд╣ рдзреАрдорд╛ рд╣реИ, рдардВрдбрд╛ рдирд╣реАрдВ рд╣реИ!
рдЗрд╕рд▓рд┐рдП, рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдПрдХ рдЗрд╖реНрдЯрддрдо рддрд░реАрдХреЗ рд╕реЗ рдирд╣реАрдВ, рдФрд░ рдЖрдк рдХрднреА-рдХрднреА рдЬреВрд▓рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЗрд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: "рдареАрдХ рд╣реИ, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдпрд╣ GPU рдХреЛрдб рдкрд╛рдВрдЪрд╡реЗрдВ рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ ..."
inner()
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╡реЗрдХреНрдЯрд░ рдЙрддреНрдкрд╛рдж рджреНрд╡рд╛рд░рд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЙрддреНрдкрд╛рдж рдХреА рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЬрдм рдПрдХ рдПрдХрд╛рддреНрдордХ рд╡реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ Vector{Float64}
рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрддрдВрднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рджреЗрддрд╛ рд╣реИред рдлрд┐рд░ рд╕реНрдХреЗрд▓рд░ рдЙрддреНрдкрд╛рдж dot()
рдХреА рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдПрдХрд╛рддреНрдордХ рд╡реЗрдХреНрдЯрд░ рдФрд░ рдЗрд╕ рдХреЙрд▓рдо рдХреЗ рд╕рд╛рде рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ "рдХреНрдпрд╛ рдЖрдк рдПрдХ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИрдВ? рдФрд░ рдЖрдк?" рдЖрджрд┐
рд╣рдо рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрд╣реБрдд рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдПрдХ рдХреЙрд▓рдо рдХрд╛ рдЪрдпрди рдХрд░рдХреЗ OneHotVector
рд╕рд╛рде рдореИрдЯреНрд░рд┐рдХреНрд╕ рдЧреБрдгрд╛ рдХреА рдЬрдЧрд╣ред рдареАрдХ рд╣реИ, рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдпрд╣ рдмрд╛рдд рд╣реИ
*(A::AbstractMatrix, v::OneHotVector) = A[:, v.ind]
рдФрд░ рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ, рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ, "рд╣рдо рджреВрд╕рд░рд╛ рддрд░реНрдХ рдХреЛ рд╕рдордп-рдирд┐рд░реНрдзрд╛рд░рдг рдЪрд╛рд╣рддреЗ рд╣реИрдВ," рдпрд╣ рдХреЛрдИ рдмрд╛рдд рдирд╣реАрдВ рдХреНрдпрд╛ рдореИрджрд╛рди рдореЗрдВ рд╣реИред рдРрд╕реА рдкрд░рд┐рднрд╛рд╖рд╛ рдмрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕реЗ рдкрдВрдХреНрддрд┐ рдХреЛ рдЦреАрдВрдЪ рд▓реЗрдЧреА рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдзрд┐ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬ рд╣реЛрдЧреА - рд╕реНрддрдВрднреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдФрд░ рд╕рдВрдХреНрд╖реЗрдкрдг рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдЖрдк рдЖрдЧреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реАрдзреЗ inner()
рдЕрдиреБрдХреВрд▓рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ inner()
, рдХреНрдпреЛрдВрдХрд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рджреЛ рдПрдХрд╛рддреНрдордХ рд╡реИрдХреНрдЯрд░ рдХреЛ рдЧреБрдгрд╛ рдХрд░рдирд╛ рдмрд╕ рдЗрд╕ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдПрдХ рддрддреНрд╡ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ:
inner(v::OneHotVector, A, w::OneHotVector) = A[v.ind, w.ind]
рдпрд╣ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рд╕реБрдкрд░ рдбреБрдкрд░ рджрдХреНрд╖рддрд╛ рд╣реИред рдФрд░ рдЬреЛ рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рд╡рд╣ рдЗрд╕ inner()
рд╡рд┐рдзрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реИред
рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХрдИ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ: рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рд╣рдо рдПрдХ рдРрд╕рд╛ рддрд░реАрдХрд╛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреБрд╢рд▓рддрд╛ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдХреНрд╖реЗрддреНрд░ рд╣реИ - рдЬрдм рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреА рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдлрд┐рд░ рдЖрдк рдЗрд╕реЗ рдиреНрдпреВрдирддрдо рдкреНрд░рдпрд╛рд╕ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк - рдЖрдк рдмрд╕ рдПрдХ рд╣реА рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдм рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдФрд░ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ред
рдПрдХрд▓ рдкреНрд░реЗрд╖рдг рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ? рдпрд╣ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рд╕рдорд╕реНрдпрд╛: рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдУрд╡рд░рд▓реЛрдб рдХрд░рддреЗ рд╕рдордп *
рджреВрд╕рд░реЗ рддрд░реНрдХ рдкрд░ рдкреНрд░реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдФрд░ рдкрд╣рд▓реЗ рдкрд░ рдирд╣реАрдВред рдЖрдк рдбрдмрд▓ рдкреНрд░реЗрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдкрд╣рд▓рд╛, рдкрд╣рд▓реЗ рддрд░реНрдХ рд╕реЗ рдкреНрд░реЗрд╖рдг рдХрд░реЗрдВ рдФрд░ AbstractMatrix.*(v)
рдХреЙрд▓ рдХрд░реЗрдВ AbstractMatrix.*(v)
рд╡рд┐рдзрд┐ред рдФрд░ рдпрд╣ рд╡рд┐рдзрд┐, рдмрджрд▓реЗ рдореЗрдВ, v.__rmul__(A)
, рдЬреИрд╕реЗ рдХреБрдЫ рдХрд╣рддреА рд╣реИред рдореВрд▓ рдХреЙрд▓ рдореЗрдВ рджреВрд╕рд░рд╛ рддрд░реНрдХ рдЕрдм рд╡рд╣ рд╡рд╕реНрддреБ рдмрди рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рддрд░реАрдХрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред __rmul__
рдпрд╣рд╛рдВ рдкрд╛рдпрдерди рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдПрдХ рдорд╛рдирдХ рдкреИрдЯрд░реНрди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ рдЬреЛрдбрд╝ рдФрд░ рдЧреБрдгрд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА рдбрдмрд▓ рдбрд┐рд╕реНрдкреИрдЪрд┐рдВрдЧ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИ рдЕрдЧрд░ рд╣рдо +
рдпрд╛ *
рдирд╛рдордХ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ - рдЕрдлрд╕реЛрд╕, рд╣рдорд╛рд░рд╛ рджрд┐рди рдирд╣реАрдВред C ++ рдФрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ - рдЖрдкрдХреЛ рдЕрдкрдиреА рдмрд╛рдЗрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдареАрдХ рд╣реИ, inner()
рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдЕрдм рддреАрди рддрд░реНрдХ рд╣реИрдВ, рдФрд░ рдкреНрд░реЗрд╖рдг рдкрд╣рд▓реЗ рдФрд░ рддреАрд╕рд░реЗ рдкрд░ рдЬрд╛рддрд╛ рд╣реИред рдПрдХрд▓ рдкреНрд░реЗрд╖рдг рд╡рд╛рд▓реА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред "рдЯреНрд░рд┐рдкрд▓ рдбрд┐рд╕реНрдкреИрдЪ" рдореИрдВ рдХрднреА рднреА рд▓рд╛рдЗрд╡ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рдЙрдкрд╛рдп рдирд╣реАрдВ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░, рдЬрдм рдПрдХ рд╕рдорд╛рди рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ (рдФрд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдХреЛрдб рдореЗрдВ рдпрд╣ рдмрд╣реБрдд рдмрд╛рд░ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ), рддреЛ рд▓реЛрдЧ рдЕрдВрддрддрдГ рдЕрдкрдиреЗ рдХрдИ рдкреНрд░реЗрд╖рдг рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдкрд╛рдпрдерди рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛрдВрдЧреЗ рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рддрдиреЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рд╕реНрдерд┐рддрд┐рдЬрдиреНрдп рд░реВрдк рд╕реЗ, рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдХрд┐рдП рдЧрдП, рдмрдЧ рд╕реЗ рднрд░реЗ рдФрд░ рдзреАрдореЗ ( рдЧреНрд░реАрдирд╕реНрдкреИрди рдХреЗ рджрд╕рд╡реЗрдВ рдирд┐рдпрдо - рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ ) рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЬреЗрдл рдмреЗрд╕рдирдХреЙрди рдиреЗ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ ( рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдЯрд╛рдЗрдк рдкреНрд░реЗрд╖рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓реЗрдЦрдХ рдФрд░ рдореБрдЦреНрдп рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ ) рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛ред рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджред )ред
рднрд╛рдЧ 2. рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░
рдореИрдВ рдЬреВрд▓рд┐рдпрд╛ рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рдкреАрдЫреЗ рдХреА рддрд░рдл рд╕реЗ рдЧреБрдЬрд░реВрдВрдЧрд╛ - рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ред рдпрд╣, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рднрд╛рд╖рд╛ рдХрд╛ рдореБрдЦреНрдп "рд╡рд░реНрдХрд╣реЙрд░реНрд╕" рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рдХреЛрдб рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ RGB рдЯрд╛рдЗрдк рд╣реИ, рдЬреИрд╕реЗ ColorTypes.jl рдореЗрдВред рдЬрдЯрд┐рд▓ рдХреБрдЫ рдирд╣реАрдВ, рдмрд╕ рдПрдХ рд╕рд╛рде рддреАрди рдорд╛рдиреЛрдВ рдбрд╛рд▓ рдирд╣реАрдВ рд╣реИред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдкреИрд░рд╛рдореАрдЯреНрд░рд┐рдХ рдирд╣реАрдВ рд╣реИ (рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рдФрд░ рд▓реЗрдЦрдХ рдиреЗ рдЙрдирдХреЗ рд▓рд┐рдП рдХрдИ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЙрдкрдпреЛрдЧреА рд▓рдЧрд╛ред рдЖрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рд╕реЛрдЪрддреЗ рд╣реИрдВ: "рд╣рдореНрдо, рдореИрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрдЪрд╛рд▓рди рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред" рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрд░рдЬреАрдмреА рдХреЛ рдПрдХ рд╡реЗрдХреНрдЯрд░ рд╕реНрдерд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ (рдЬреЛ, рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рдирд╛ рдЧрд▓рдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕рдиреНрдирд┐рдХрдЯрди рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖ рдЬрд╛рдПрдЧрд╛)ред рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ, рдЖрдк рдмрд╕ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЙрди рд╕рднреА рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рд▓реЗрддреЗ рдФрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдЧрд╛рдпрдм рд╣реИрдВред
рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ - рдФрд░ рдЪреЛ? рдореИрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд╛рдиреЗ рдореЗрдВ рдХреНрдпреЛрдВ рд╣реВрдВ? рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдХрдард┐рди рд╣реИред рдЪреВрдВрдХрд┐ рдЗрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╡рд┐рдзрд┐ рдкрд░рд┐рднрд╛рд╖рд╛рдПрдВ рд╡рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдВрджрд░ рд╣реЛрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкрджреНрдзрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ - рдпрд╛ рддреЛ рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧ рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ, рдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд░реНрдЧ рдмрдирд╛рдПрдВред
рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ, рдФрд░ рдХреЛрдб рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рд╕рднреА рдЬреЛрдбрд╝реЗ рдЧрдП рддрд░реАрдХреЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреЗ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рднреА рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рдРрд╕реЗ рд╡рд░реНрдЧ рдХреЛ рдПрдХ рджрд┐рди рдХреНрдпрд╛ рдЕрд╕рдорд░реНрде рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ "рдЕрдиреБрд╢рдВрд╕рд┐рдд" рд╡рд┐рдХрд▓реНрдк рд╣реИ, рд▓реЗрдХрд┐рди рдЦрд╛рдорд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рднреА рдирд╣реАрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рд╡рд░реНрдЧ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЪрд▓реЛ рдЕрдм рдпрд╣ RGB
рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди MyRGB
ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдирдП рддрд░реАрдХреЗ рдЕрдм рдореВрд▓ RGB
рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ; рдЕрдЧрд░ рдореИрдВ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдирдИ рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ RGB
, рдХрд┐рд╕реА рдФрд░ рдХреЗ рдХреЛрдб рдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ - рдпрд╣ рд░реВрдкрд╛рдВрддрд░рдг, рдпрд╛ рдореЗрдВ рдЖрд╡рд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ MyRGB
ред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИред рдЕрдЧрд░ рдореИрдВрдиреЗ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде MyRGB
рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛, рддреЛ рдХрд┐рд╕реА рдФрд░ рдиреЗ OurRGB
, рдЖрджрд┐ред - рдлрд┐рд░ рдЕрдЧрд░ рдХреЛрдИ рдРрд╕рд╛ рд╡рд░реНрдЧ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реЛ, рддреЛ рдЖрдкрдХреЛ рдХрдИ рд╡рд┐рд░рд╛рд╕рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рддрднреА рд╣реИ рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдЗрд╕реЗ рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ!)ред
рддреЛ, рджреЛрдиреЛрдВ рд╡рд┐рдХрд▓реНрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рд╣реИрдВ:
- рдХрдХреНрд╖рд╛ рд╡рд┐рдзрд┐ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░рдЦреЛ -
xf(y)
рдмрдЬрд╛рдп f(x, y)
рдЬрд╛рдПрдВред рд▓реЗрдХрд┐рди рддрдм рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдЦреЛ рджрд┐рдпрд╛ рд╣реИред - рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЛрдб рдкрд░ рдереВрдХ (рдФрд░, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ)ред рдмрд╕ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдПрдХ рд╡рд┐рджреЗрд╢реА
RGB
рдХреНрд▓рд╛рд╕ рдХреЙрдкреА рдХрд░реЗрдВ рдФрд░ рдЬреЛ рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИ рдЙрд╕реЗ рдЬреЛрдбрд╝реЗрдВред
рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЛрдб рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЬреВрд▓рд┐рдпрд╛ рдХреА рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛ рдЗрд╕ рддрдереНрдп рд╕реЗ рд▓рдЧрднрдЧ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрдо рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд╣рд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рдЧрдИ рд╣реИ ред рд╡рд╣ рд╕рдм рд╣реИред рдФрд░ рдкреНрд░рдХрд╛рд░ рдЖрдк рдПрдХ рд╣реА рдЖрд╕рд╛рдиреА рдХреЗ рд╕рд╛рде рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдПрдХ рд╣реА рдкреНрд░реЗрд╖рдг рдХреЗ рд╕рд╛рде рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рднреА рдРрд╕рд╛ рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рддреЛ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ - рдпрд╣ рдкреВрд░реА "рдХреА рдХрдХреНрд╖рд╛ рдХреЗ рддрд░реАрдХреЛрдВ рдХрд░рддреЗ рд╣реИрдВ"ред рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ - рд▓реЗрдХрд┐рди рд╡рд╣рд╛рдБ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдордп рд╣реИ,,ред рдпрджрд┐ рдореИрдВ xf(y)
- f()
рд╡рд░реНрддрдорд╛рди рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реВрдБ, рддреЛ рдЙрд╕реЗ рдирд╛рдо рд╕реНрдерд╛рди x
рдореЗрдВ рдЦреЛрдЬрдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рдВ, рдпрд╣ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╣реИ - рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдЕрдиреНрдп рд╕рднреА рдкрд░реЗрд╢рд╛рдирд┐рдпреЛрдВ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ? рдореИрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдирд╣реАрдВ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореЗрд░реА рд░рд╛рдп, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдереЛрдбрд╝рд╛ рдкрдХреНрд╖рдкрд╛рддреА рд╣реИ)ред
рдЙрдкрд╕рдВрд╣рд╛рд░ред рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рд╕рдорд╕реНрдпрд╛
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ, рдЬреЛ 70 рдХреЗ рджрд╢рдХ рдореЗрдВ рджреЗрдЦрд╛ рдЧрдпрд╛ рдерд╛ рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдпрд╣ рдХрд╛рдлреА рд╣рдж рддрдХ рд╕реНрдереИрддрд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдРрд╕реА рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рд╕рдЪ рд╣реИ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рд╕реНрдереИрддрд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рд╕реЗ рдХреЛрдИ рд▓реЗрдирд╛-рджреЗрдирд╛ рдирд╣реАрдВ рд╣реИред рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ: рдХреНрдпрд╛ рд╕рдВрджрд┐рдЧреНрдз рддрдХрдиреАрдХреЛрдВ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓рд┐рдП рдмрд┐рдирд╛ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдбреЗрдЯрд╛ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕реЗрдЯ рдХреЛ рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ:
- рдЪрд╛рд╣реЗ рд╡рд╣ рдирдпрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬреЛ рд▓рд╛рдЧреВ рдФрд░ рдЙрдкрд▓рдмреНрдз рддрдХрдиреАрдХреЛрдВ рд╣реИрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрднрд╡ рд╣реИ
- рдХреНрдпрд╛ рдореМрдЬреВрджрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдирдП рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИред
(1) рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд╕реНрддреБ рдЙрдиреНрдореБрдЦ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, (2) - рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдкрд░ред рдЗрд╕ рдЕрд░реНрде рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рдУрдУрдкреА рдФрд░ рдПрдлрдкреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рджреНрд╡реИрддрд╡рд╛рдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдмрд╣реБ-рдкреНрд░реЗрд╖рдг рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рджреЛрдиреЛрдВ рдСрдкрд░реЗрд╢рди рдЖрд╕рд╛рди рд╣реИрдВред (1) , (2) тАФ . , . ( https://en.wikipedia.org/wiki/Expression_problem ), . ? , , . , " , " тАФ " " . " , " , , .
, . , , тАФ .
, Julia ( ), . .