рдЬреВрд▓рд┐рдпрд╛ред рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдФрд░ рдореЗрдЯрд╛рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ


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


рдкрдВрдХреНрддрд┐рдпрд╛рдВ


рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡реИрд░рд┐рдПрдмрд▓ рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдореЗрдВ рд╡рд░реНрдгреЛрдВ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдХреЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдПрдХрд▓ рд╡рд░реНрдг рдкреНрд░рдХрд╛рд░ рд╡рд░реНрдг рдХреЗ рдПрдХрд▓ рд╡рд░реНрдгреЛрдВ рдкрд░ рд╕реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВред рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдЧреБрдгрди "*" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


cats = 4 s1 = "How many cats "; s2 = "is too many cats?"; s3 = s1*s2 Out[]: "How many cats is too many cats?" 

рдпрд╣реА рд╣реИ, рдШрд╛рддрд╛рдВрдХ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ:


 s1^3 Out[]: "How many cats How many cats How many cats " 

рджреВрд╕рд░реА рдУрд░, рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


 s1[3] Out[]: 'w': ASCII/Unicode U+0077 (category Ll: Letter, lowercase) s1[5:13] Out[]: "many cats" s1[13:-1:5] Out[]: "stac ynam" s2[end] Out[]: '?': ASCII/Unicode U+003f (category Po: Punctuation, other) 

рддрд╛рд░ рддрд╛рд░ рдФрд░ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рд╕реЗ рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:


 s4 = string(s3, " - I don't know, but ", cats, " is too few.") #   s4 = "$s3 - I don't know, but $cats is too few." Out[]: "How many cats is too many cats? - I don't know, but 4 is too few." 

рд╢рд╕реНрддреНрд░рд╛рдЧрд╛рд░ рдореЗрдВ рдХрдИ рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдп рд╣реИрдВ , рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рддрддреНрд╡ рдХреА рдЦреЛрдЬ:


 findfirst( isequal('o'), s4 ) Out[]: 4 findlast( isequal('o'), s4 ) Out[]: 26 findnext( isequal('o'), s4, 7 ) #      Out[]: 11 

рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реАрдЬрд╝рд░ рдХреЗ рд╕рд┐рдлрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ


 caesar(X, n) = prod( [x += n for x in X] ) str3 = "    "; caesar(str3, 3) Out[]: "####" str4 = caesar(str3, -32) Out[]: "\0\0\0\0" "Latin letters go before Cyrillic" < str4 < str3 Out[]: true 

рдпрд╣рд╛рдБ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рднреА рд╡рд░реНрдгреЛрдВ рдкрд░ рдПрдХ рд░рди рд╣реЛрддрд╛ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдХреЛрдб рдореЗрдВ n рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЪрд╛рд░ рд╡рд░реНрдгреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИ рдЬреЛ рдареЗрд╕ () рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕рд╛рде рдЪрд┐рдкрдХреЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рд╛рдкреНрдд рд╕рд░рдгреА рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рдЧреБрдгрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред


рдЪрд░рд┐рддреНрд░ рдХрдореНрдкреНрдпреВрдЯрд┐рдВрдЧ


рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рддрддреНрдкрд░рддрд╛ рдХреА рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбрд┐рдЧреНрд░реА рдХреЗ рдкреИрдХреЗрдЬ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:



рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдХрд┐рд╕реА рддрд░рд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдЧреЛрдВрдж рдХрд░рдирд╛ рд╕реАрдЦрд╛, рдХреНрдпреЛрдВ рди рдореИрдЯреНрд░рд┐рдХ рдХреЗ рд╕рд╛рде рд╕рд╛рдВрдХреЗрддрд┐рдХ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рджреЛ рд╡рд┐рд╖рдо рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:


 m1 = [1 1 "a"; 1 0 1] Out[]: 2├Ч3 Array{Any,2}: 1 1 "a" 1 0 1 m3 = [1 2 "ln(3)"; 2 1 0] Out[]: 2├Ч3 Array{Any,2}: 1 2 "ln(3)" 2 1 0 m1+m3 Out[]: MethodError: no method matching +(::String, ::String) ... 

рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рдЪрдВрдЪрд▓ рдХрд▓рдо рдХреЛ рдореВрд▓ рдСрдкрд░реЗрдЯрд░реЛрдВ рдореЗрдВ рдЪрд▓рд╛рдПрдВ:


 import Base: *, -, + 

рдпрджрд┐ C ++ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдСрдкрд░реЗрдЯрд░ рдУрд╡рд░рд▓реЛрдбрд┐рдВрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рд╣рдо рдореМрдЬреВрджрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред


 +(a::String, b::String) = a * "+" * b Out[]: + (generic function with 164 methods) 

рдбреЗрдврд╝ рд╕реМ рд╕реЗ рдЕрдзрд┐рдХ рддрд░реАрдХреЗ, рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рдПрдХ рд╣реИ рдЬреЛ рд╕рддреНрд░ рдХреЗ рдЕрдВрдд рддрдХ рдЬреАрд╡рд┐рдд рд░рд╣реЗрдЧрд╛ред


 m1+m3 Out[]: 2├Ч3 Array{Any,2}: 2 3 "a+ln(3)" 3 1 1 

рдЕрдм рдЧреБрдгрд╛ рдЧреБрдгрд╛ рдХрд░реЗрдВ, рдЕрд░реНрдерд╛рддреН, рд╣рдо рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:


 function *(a::String, b::Number) if b == 0 0 else if b == 1 a else "$b" * "*(" * a * ")" end end end Out[]: * (generic function with 344 methods) 

рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╢реВрдиреНрдп рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рд╢реВрдиреНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдпрджрд┐ рдПрдХ рдХреЗ рдмрд╛рдж, рддреЛ рд╣рдореЗрдВ рдПрдХ рд╣реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд┐рд▓рддреА рд╣реИ, рдФрд░ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣рдо "*" рдЪрд┐рдиреНрд╣ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЕрдВрдзрд╛ рдХрд░ рджреЗрддреЗ рд╣реИрдВ (рд╣рдордиреЗ рдмреНрд░реИрдХреЗрдЯ рдЬреЛрдбрд╝реЗ рддрд╛рдХрд┐ рдкрд╛рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЕрдирд┐рд╢реНрдЪрд┐рддрддрд╛ рди рд╣реЛ)ред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдПрдХ-рд▓рд╛рдЗрди рджреГрд╢реНрдп рдкрд╕рдВрдж рд╣реИ, рдЬреЛ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ:


 *(a::String, b::Number) = (b==0) ? 0 : (b==1) ? a : "$b" * "*(" * a * ")" Out[]: 

рд╣рдо рд╢реЗрд╖ рдорд╛рдорд▓реЛрдВ рдХреЛ рднреА рдЗрд╕реА рддрд░рд╣ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рдХреБрдЫ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдВрдЧреЗ:


 import Base: *, -, + +(a::String, b::String) = a * "+" * b *(a::String, b::String) = a * "*(" * b * ")" *(a::String, b::Number) = (b==0) ? 0 : (b==1) ? a : "$b" * "*(" * a * ")" *(b::Number, a::String) = (b==0) ? 0 : (b==1) ? a : "$b" * "*(" * a * ")" +(a::String, b::Number) = (b==0) ? a : a * "+" * "$b" +(b::Number, a::String) = (b==0) ? a : a * "+" * "$b" -(b::Number, a::String) = (b==0) ? "-" * a : "$b" * "-" * a -(a::String, b::Number) = (b==0) ? a : a * "-" * "$b" # m1 = [1 1 "a"; 1 0 1] m2 = [2 0 2; 2 "b" 2; 2 2 2] m1*m2 Out[]: 2├Ч3 Array{Any,2}: "2*(a)+4" "b+2*(a)" "2*(a)+4" 4 2 4 

рдФрд░ рдЪрд▓реЛ рдирд┐рд░реНрдзрд╛рд░рдХ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ! рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдлрд╝рдВрдХреНрд╢рди рдЬрдЯрд┐рд▓ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рддрд░реАрдХреЗ рдЗрд╕реЗ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЦрд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВ - рд╣рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдо рд▓реЗрд╡реА-рд╕рд┐рд╡рд┐рдЯрд╛ рдкреНрд░рддреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЦреБрдж рдХреЛ рдХреЛрдбрд╝рд╛ рдорд╛рд░рддреЗ рд╣реИрдВ


 ╬╡ = zeros(Int, 3,3,3) ╬╡[1,2,3] = ╬╡[2,3,1] = ╬╡[3,1,2] = 1 ╬╡[3,2,1] = ╬╡[1,3,2] = ╬╡[2,1,3] = -1 ╬╡ Out[]: 3├Ч3├Ч3 Array{Int64,3}: [:, :, 1] = 0 0 0 0 0 1 0 -1 0 [:, :, 2] = 0 0 -1 0 0 0 1 0 0 [:, :, 3] = 0 1 0 -1 0 0 0 0 0 

рдорд┐рд╢реНрд░рд┐рдд рдЙрддреНрдкрд╛рдж рд╕реВрддреНрд░


 left[ veca vecb vecc right]= sumi,j,k=13 varepsilonijkaibjck


рдПрдХ 3x3 рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдирд┐рд░реНрдзрд╛рд░рдХ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрд░рдорд╢рдГ, рдмреА , рд╕реА рдХреЛ рдкрд╣рд▓реА, рджреВрд╕рд░реА рдФрд░ рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ (рд╕реНрддрдВрдн) рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрдирд╛


 detrmnt(arr) = sum( ╬╡[i,j,k]*arr[1,i]*arr[2,j]*arr[3,k] for i in 1:3, j in 1:3, k in 1:3 ) detrmnt(["a" 2 "b"; 1 0 1; "c" 2 "d"]) Out[]: "2*(c)+2*(b)+2*(-1*(a))+-2*(d)" 

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


 Rx = [1 0 0 0; 0 "cos(╧Х)" "sin(╧Х)" 0; 0 "-sin(╧Х)" "cos(╧Х)" 0; 0 0 0 1]; Rz = ["cos(╧Х)" "sin(╧Х)" 0 0; "-sin(╧Х)" "cos(╧Х)" 0 0; 0 0 1 0; 0 0 0 1]; T = [1 0 0 0; 0 1 0 0; 0 0 1 0; "x0" "y0" "z0" 1]; Rx*Rz Out[]: MethodError: no method matching zero(::String) ... 

рдХреЛрдИ рддреНрд░реБрдЯрд┐ рджреЗрдЧрд╛ред рд╕реНрдкрд╖реНрдЯ рд╡реНрдпрд╡рд╕рд╛рдп, рддреАрди рд╕реЗ рдЕрдзрд┐рдХ рдЖрдпрд╛рдо рд╡рд╛рд▓реЗ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдФрд░ рдЬрдЯрд┐рд▓ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреЙрд▓ рд╣рдордиреЗ "рдЕрдзрд┐рднрд╛рд░" рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЦреИрд░, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореМрдЬреВрдж рддрд░реАрдХреЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЧреБрдгрдХ рдХреЗ рд╕рд╛рде рдХрд╡рд░ рдХрд░реЗрдВрдЧреЗ (рдпрд╣, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдЕрдиреБрд╢рдВрд╕рд┐рдд рдирд╣реАрдВ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдВрддрд░рд┐рдХ рд╕рдВрдШрд░реНрд╖ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрддреНрдкрдиреНрди рд╣реЛрдВрдЧреЗ)ред


 function *( a::Array{Any,2}, b::Array{Any,2} ) if size(a)[2] == size(b)[1] res = Array{Any}(undef, size(a)[1], size(b)[2] ) fill!(res, 0) for i = 1:size(a)[1], j = 1:size(b)[2], k = 1:size(a)[2] res[i,j] = res[i,j] + a[i,k]*b[k,j] end res else error("Matrices must have same size mult") end end Out[]: * (generic function with 379 methods) 

рдЕрдм рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЧреБрдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 X = Rx*Rz*T Out[]: 4?4 Array{Any,2}: "cos(╧Х)" "sin(╧Х)" 0 0 "cos(╧Х)*(-sin(╧Х))" "cos(╧Х)*(cos(╧Х))" "sin(╧Х)" 0 "-sin(╧Х)*(-sin(╧Х))" "-sin(╧Х)*(cos(╧Х))" "cos(╧Х)" 0 "x0" "y0" "z0" 1 

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


metaprogramming


рдХреЛрдЯреА Rovkov


рдЬреВрд▓рд┐рдпрд╛ рдореЗрдЯрд╛рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдо рднрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВ (рдЬреИрд╕реЗ 6 * 7) рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд (рдЬреИрд╕реЗред 42)ред рджреБрднрд╛рд╖рд┐рдпрд╛ рдореЗрдВ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЦреАрдВрдЪрдиреЗ рд╕реЗ, рд╣рдореЗрдВ рддреБрд░рдВрдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рджреЗрдЦрд╛ рд╣реИ, рд▓рд╛рдЗрдиреЛрдВ рдХреА рдорджрдж рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:


 x = "6*7" Out[]: "6*7" 

рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдкрд╛рд░реНрд╕ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╡рд▓ () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:


 eval(Meta.parse(ans)) Out[]: 42 

рдпреЗ рд╕рд╛рд░реА рдореБрд╢реНрдХрд┐рд▓реЗрдВ рдХреНрдпреЛрдВ? рдЪрд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ , рддреЛ рд╣рдо рдЗрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рджрд┐рд▓рдЪрд╕реНрдк рддрд░реАрдХреЛрдВ рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:


 x = replace(x, "*" => "+") eval(Meta.parse(x)) Out[]: 13 

рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрджреНрд░рд╡ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдлреНрд░реЙрд╕реНрдЯрд┐рдВрдЧ рдлреЗрд╕ рдСрдкрд░реЗрдЯрд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ :()


 y = :(2^8-1) Out[]: :(2^8-1) eval(y) Out[]: 255 

рдЖрдк рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рдлрд╝рдВрдХреНрд╢рди, рдХреЛрдб рдмреНрд▓реЙрдХ "рдЙрджреНрдзрд░рдг" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ...


 quote x = 2 + 2 hypot(x, 5) end Out[]: quote #= In[13]:2 =# x = 2 + 2 #= In[13]:3 =# hypot(x, 5) end :(function mysum(xs) sum = 0 for x in xs sum += x end end) Out[]: :(function mysum(xs) #= In[14]:2 =# sum = 0 #= In[14]:3 =# for x = xs #= In[14]:4 =# sum += x end end) 

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


 X = [ "cos(╧Х)" "sin(╧Х)" 0 0; "cos(╧Х)*(-sin(╧Х))" "cos(╧Х)*(cos(╧Х))" "sin(╧Х)" 0; "-sin(╧Х)*(-sin(╧Х))" "-sin(╧Х)*(cos(╧Х))" "cos(╧Х)" 0; "x0" "y0" "z0" 1; ] for i = 1:size(X,1), j = 1:size(X,2) if typeof(X[i,j]) == String X[i,j] = Meta.parse(X[i,j]) end end X Out[]: 4├Ч4 Array{Any,2}: :(cos(╧Х)) :(sin(╧Х)) 0 0 :(cos(╧Х) * -(sin(╧Х))) :(cos(╧Х) * cos(╧Х)) :(sin(╧Х)) 0 :(-(sin(╧Х)) * -(sin(╧Х))) :(-(sin(╧Х)) * cos(╧Х)) :(cos(╧Х)) 0 :x0 :y0 :z0 1 

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


 ╧Х = 20*pi/180 x0 = 4 y0 = -0.5 z0 = 1.3 Xtr = [ eval(x) for x in X] Out[]: 4├Ч4 Array{Real,2}: 0.939693 0.34202 0 0 -0.321394 0.883022 0.34202 0 0.116978 -0.321394 0.939693 0 4 -0.5 1.3 1 

рдпрд╣ рдореИрдЯреНрд░рд┐рдХреНрд╕ X рдФрд░ Z рдЕрдХреНрд╖реЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддрд╛ рд╣реИ 20 circрдФрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рдг \ vec {R} = \ {x0, y0, z0 \}


 x = [-1 -1 1 1 -1 -1 1 1 -1 -1]; y = [-1 -1 -1 -1 -1 1 1 1 1 -1]; z = [1 -1 -1 1 1 1 1 -1 -1 -1] R = [ x' y' z' ones( length(x) ) ] plot(x', y', z', w = 3) 


 R2 = R*Xtr plot!( R2[:,1], R2[:,2], R2[:,3], w = 3) 


рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╡реГрдХреНрд╖ рдХрд╛ рдлрд▓


рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦрд╛ рд╣реИ, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ "рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди" рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╣рдореЗрдВ рдЫреЛрдЯреЗ рдШрдЯрдХреЛрдВ рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдбрд╝реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред


 x = "" print("$x $x $x  ...") Out[]:     ... 

рдЙрджреНрдзрд░рдг (рдЙрджреНрдзрд░рдг) рдХреЗ рд╕рд╛рде - рдПрдХ рд╣реА рдХрд╣рд╛рдиреА:


 x = :(6*7) y = :($x + $x) Out[]: :(6 * 7 + 6 * 7) eval(y) Out[]: 84 

рд╕рднреА Eval рдХреА рдЬрдбрд╝


eval() рди рдХреЗрд╡рд▓ рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдореВрд▓реНрдп рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЪрд▓реЛ рд╕рдорд╛рд░реЛрд╣ рдШреЛрд╖рдгрд╛ рдХреЛ рдЙрджреНрдзреГрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:


 ex = :( cats() = println("Meow!") ) cats() Out[]: UndefVarError: cats not defined 

рдЕрдм рдЙрд╕реЗ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░реЗрдВ:


 eval(ex) Out[]: cats (generic function with 1 method) cats() Out[]: Meow! 

рдкреНрд░рдХреНрд╖реЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рд╣рдо рдордХреНрдЦреА рдкрд░ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рддреБрд░рдВрдд рдХрдИ рдХрд╛рд░реНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


 for name in [:dog, :bird, :mushroom] println(:($name() = println($("I'm $(name)!")))) end Out[]: dog() = begin #= In[27]:2 =# println("I'm dog!") end bird() = begin #= In[27]:2 =# println("I'm bird!") end mushroom() = begin #= In[27]:2 =# println("I'm mushroom!") end for name in [:dog, :bird, :mushroom] eval(:($name() = println($("I'm $(name)!")))) end dog() Out[]: I'm dog! mushroom() Out[]: I'm mushroom! 

рдПрдкреАрдЖрдИ рд▓рдкреЗрдЯрддреЗ рд╕рдордп рдпрд╣ рдмреЗрд╣рдж рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕реЗ, рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдпрд╛ рдПрдЪрдЯреАрдЯреАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред рдПрдкреАрдЖрдИ рдЕрдХреНрд╕рд░ рдЙрдкрд▓рдмреНрдз рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХреИрдкреНрдЪрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕рдВрдкреВрд░реНрдг рд╢реЗрд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ! Clang.jl, TensorFlow.jl, рдпрд╛ рдмреЗрд╕рд┐рдХ рд░реИрдЦрд┐рдХ рдмреАрдЬрдЧрдгрд┐рдд рдХреЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред


рдореВрд▓ рдкрд╛рдк


рдпрд╣рд╛рдБ рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЯреЗрд▓рд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкрд░ рдЖрдзрд╛рд░рд┐рдд sin() рдлрд╝рдВрдХреНрд╢рди рдХреА рдирд┐рдореНрди рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:


рдкрд╛рдк(x)= sumk=1 infty frac(тИТ1)k(1+2k)!x1+2k


 mysin(x) = sum((-1)^k/factorial(1+2*k) * x^(1+2k) for k = 0:5) mysin(0.5), sin(0.5) Out[]: (0.4794255386041834, 0.479425538604203) using BenchmarkTools @benchmark mysin(0.5) Out[]: BenchmarkTools.Trial: memory estimate: 112 bytes allocs estimate: 6 -------------- minimum time: 1.105 ╬╝s (0.00% GC) median time: 1.224 ╬╝s (0.00% GC) mean time: 1.302 ╬╝s (0.00% GC) maximum time: 9.473 ╬╝s (0.00% GC) -------------- samples: 10000 evals/sample: 10 

рдЕрдм рдпрд╣ рдЬрд┐рддрдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЙрд╕рд╕реЗ рдХрд╣реАрдВ рдЬреНрдпрд╛рджрд╛ рдзреАрдорд╛ рд╣реИред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдХрд╢реНрдореАрд░ рдХреЗ рдКрдкрд░ рд╕реЗ рдЪрд▓рддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдорд╣рдВрдЧрд╛ рд╣реИред рд╕реНрдкрд╖реНрдЯ рд▓рд┐рдЦрдирд╛ рдмрд╣реБрдд рддреЗрдЬрд╝ рд╣реИ:


 mysin(x) = x - x^3/6 + x^5/120 # + ... 

рд▓реЗрдХрд┐рди рдпрд╣ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдердХрд╛рдК рд╣реИ рдФрд░ рдЕрдм рдореВрд▓ рдЯреЗрд▓рд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреА рддрд░рд╣ рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреМрдзреЗ рдХреЗ рдПрдХ рдЙрдЪреНрдЪ рдЬреЛрдЦрд┐рдо рд╣реИред рдХреНрдпрд╛ рджреЛ рд╢реЙрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд░рдЧреЛрд╢ рдХреЛ рдорд╛рд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ? рдЬреВрд▓рд┐рдпрд╛ рдиреЗ рд╣рдореЗрдВ рдпрд╣ рдХреЛрдб рдХреИрд╕реЗ рд▓рд┐рдЦрд╛? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, + рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред


 plus(a, b) = :($a + $b) plus(1, 2) Out[]: :(1 + 2) 

plus() рд╣рдо рдХрдИ рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдпреЛрдЧ:


 reduce(+, 1:10) Out[]: 55 reduce(plus, 1:10) Out[]: :(((((((((1 + 2) + 3) + 4) + 5) + 6) + 7) + 8) + 9) + 10) eval(ans) Out[]: 55 reduce(plus, [:(x^2), :x, 1]) Out[]: :((x ^ 2 + x) + 1) 

рдпрд╣ рд╣рдореЗрдВ рдкрд╣реЗрд▓реА рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдпрд╣ рднреА рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рд╣рдо рдХреНрдпрд╛ рд╕рдореЗрдЯ рд░рд╣реЗ рд╣реИрдВред рдЖрдЗрдП рдЙрдкрд░реЛрдХреНрдд рдЯреЗрд▓рд░ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдПрдХ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдПрдВ рдЬреЛ k рдХреЗ рдорд╛рди рдХреЛ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рддрд╛ рд╣реИред


 k = 2 :($((-1)^k) * x^$(1+2k) / $(factorial(1+2k))) Out[]: :((1 * x ^ 5) / 120) 

рдЕрдм рдЖрдк рдПрдХ рдХрдиреНрд╡реЗрдпрд░ рдкрд░ рдкрдВрдХреНрддрд┐ рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ:


 terms = [:($((-1)^k) * x^$(1+2k) / $(factorial(1+2k))) for k = 0:5] Out[]: 6-element Array{Expr,1}: :((1 * x ^ 1) / 1) :((-1 * x ^ 3) / 6) :((1 * x ^ 5) / 120) :((-1 * x ^ 7) / 5040) :((1 * x ^ 9) / 362880) :((-1 * x ^ 11) / 39916800) 

рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░реЗрдВ:


 reduce(plus, ans) Out[]: :((((((1 * x ^ 1) / 1 + (-1 * x ^ 3) / 6) + (1 * x ^ 5) / 120) + (-1 * x ^ 7) / 5040) + (1 * x ^ 9) / 362880) + (-1 * x ^ 11) / 39916800) :(mysin(x) = $ans) Out[]: :(mysin(x) = begin #= In[52]:1 =# (((((1 * x ^ 1) / 1 + (-1 * x ^ 3) / 6) + (1 * x ^ 5) / 120) + (-1 * x ^ 7) / 5040) + (1 * x ^ 9) / 362880) + (-1 * x ^ 11) / 39916800 end) eval(ans) mysin(0.5), sin(0.5) Out[]: (0.4794255386041834, 0.479425538604203) @benchmark mysin(0.5) Out[]: BenchmarkTools.Trial: memory estimate: 0 bytes allocs estimate: 0 -------------- minimum time: 414.363 ns (0.00% GC) median time: 416.328 ns (0.00% GC) mean time: 431.885 ns (0.00% GC) maximum time: 3.352 ╬╝s (0.00% GC) -------------- samples: 10000 evals/sample: 201 

рднреЛрд▓реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ! рдлреЛрдЯреЙрди рдХреЗ рдкрд╛рд╕ рдбреЗрдврд╝ рд╕реМ рдореАрдЯрд░ рдЪрд▓рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╕рд╛рдЗрди рдХреА рдЧрдгрдирд╛ рдкрд╣рд▓реЗ рд╣реА рдХреА рдЬрд╛ рдЪреБрдХреА рд╣реИ!
рдпрд╣ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХрд╛ рд╣реИред рдЬреЛ рд▓реЛрдЧ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдЖрдЧреЗ рдЫрд╛рдВрдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореИрдВ рдЬреНрдпреВрдкрд┐рдЯрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдПрдХ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ , рдЬрд┐рд╕рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдЬреНрдпрд╛рджрд╛рддрд░ рдпрд╣рд╛рдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдПрдХ рд╡реАрдбрд┐рдпреЛ рдХреЛрд░реНрд╕ , рдФрд░ рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрднрд╛рдЧ ред рдирдИ рдЖрд╡рдХ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрдкрдХреЛ рд╣рдм рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЪрд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрд╡реАрдХрд╛рд░реНрдп рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рд╣реИред

Source: https://habr.com/ru/post/hi431438/


All Articles