рд╣рд╛рд╕реНрдХреЗрд▓ рдорд┐рд╢рдирд░реА рдФрд░ рдирд░рднрдХреНрд╖реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди

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

рдХрд╛рд░реНрдп рд╡рд┐рд╡рд░рдг


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

рдирд┐рд░реНрдгрдп


рдерд┐рдПрдЯрд░ рдПрдХ рдкрд┐рдЫрд▓рдЧреНрдЧреВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╣рд╛рд╕реНрдХреЗрд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЖрдпрд╛рдд рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЪрд▓реЛ рдЙрдирдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

import Data.List 

рдорд┐рд╢рдирд░рд┐рдпреЛрдВ, рдирд░рднрдХреНрд╖реА рдФрд░ рдЬрд┐рд╕ рдХрд┐рдирд╛рд░реЗ рдкрд░ рдирд╛рд╡ рд╕реНрдерд┐рдд рд╣реИ, рдЙрд╕рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

 data State = State { missioners :: Int, cannibals :: Int, bank :: Char} deriving (Eq, Show) 

рдПрдХ рдЪреМрдХрд╕ рдкрд╛рдардХ рдкреВрдЫ рд╕рдХрддрд╛ рд╣реИ, "рд▓реЗрдХрд┐рди рд░рд╛рдЬреНрдп рдореЗрдВ рдХреЗрд╡рд▓ рджреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдлрд╝реАрд▓реНрдб рдХреНрдпреЛрдВ рд╣реИрдВ? рдорд┐рд╢рдирд░реА рдмрд╛рдПрдВ рдХрд┐рдирд╛рд░реЗ рдкрд░ рдФрд░ рджрд╛рдИрдВ рдУрд░ рджреЛрдиреЛрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ; рдпрд╣реА рдмрд╛рдд рдирд░рднрдХреНрд╖реА рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИред рдпрд╣ рдЪрд╛рд░ рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред тАЭ
рдПрдХ рд╕рдЪреНрдЪреА рдЯрд┐рдкреНрдкрдгреА, рд▓реЗрдХрд┐рди рдХреБрдЫ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдмрд┐рдирд╛ рдирд╛рд╡ рдХреЗ рд▓реЛрдЧреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдмреЗрдорд╛рдиреА рд╣реИ (рдХреБрдЫ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛)ред

рд╣рдорд╛рд░реА рдирд╛рд╡ рдХреЛ рдПрдХ рддрдЯ рд╕реЗ рджреВрд╕рд░реЗ рддрдЯ рддрдХ рддреИрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рднреА рд╕рдВрднрд╡ рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдкрд╛рдБрдЪ рд╣реИрдВ:

 move01 (State msn cnb bk) = State (3 - msn + 2) (3 - cnb) (oppositeBank bk) move02 (State msn cnb bk) = State (3 - msn) (3 - cnb + 2) (oppositeBank bk) move03 (State msn cnb bk) = State (3 - msn + 1) (3 - cnb + 1) (oppositeBank bk) move04 (State msn cnb bk) = State (3 - msn + 1) (3 - cnb) (oppositeBank bk) move05 (State msn cnb bk) = State (3 - msn) (3 - cnb + 1) (oppositeBank bk) 

рдХреНрдпрд╛ рдЖрдк рдиреЛрдЯрд┐рд╕ рдХрд░рддреЗ рд╣реИрдВ? рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рдкрд░реАрдд рдмреИрдВрдХ рдореЗрдВ рдХрд┐рддрдиреЗ рдорд┐рд╢рдирд░реА рд╣реИрдВ - рд╣рдо рд╣рдореЗрд╢рд╛ рд╡рд░реНрддрдорд╛рди рдмреИрдВрдХ рдкрд░ рддреАрди рд╕реЗ рдорд┐рд╢рдирд░рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдШрдЯрд╛рдХрд░ рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд╣реА рдирд░рднрдХреНрд╖реА рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╡рд┐рдкрд░реАрддрдмреИрдВрдХ - рд╕рдмрд╕реЗ рд╕рд░рд▓ рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рддрдЯ рд▓реЗрдмрд▓ рдХреЛ рд╡рд┐рдкрд░реАрдд рдореЗрдВ рдмрджрд▓рддрд╛ рд╣реИред

 oppositeBank :: Char -> Char oppositeBank bank | bank == 'L' = 'R' | otherwise = 'L' 

рдПрдХ рдирдпрд╛ рд░рд╛рдЬреНрдп рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдБрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ (рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ, рддреЛ рд╣рдо рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд╣реАрдВ рдЖрдП рд╣реИрдВ, рдЬрд╣рд╛рдБ рдирд╛рд╡ рдХреЗ рд╕рд╛рде рдХрд┐рдирд╛рд░реЗ рдкрд░ рдЪрд╛рд░ рдорд┐рд╢рдирд░рд┐рдпрд╛рдБ рдереАрдВ, рдпрд╛ рдлрд┐рд░ рдФрд░ рднреА рдордЬрд╝реЗрджрд╛рд░, рдбреЗрдврд╝ рд▓реАрдЯрд░ рдХрд╛ рднрд╛рд░ рдШрдЯрд╛рдХрд░ рдПрдХ рдирд░рднрдХреНрд╖реА)ред

 isStatePossible :: State -> Bool isStatePossible (State msn cnb bk) = msn >= 0 && msn <= 3 && cnb >= 0 && cnb <= 3 

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

 isStateSafe :: State -> Bool isStateSafe (State msn cnb bk) = (cnb == msn) || (msn == 3) || (msn == 0) 


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

 bfsSolution :: [[State]] -> [State] bfsSolution (path:tail') | State 3 3 'R' `elem` extensions = State 3 3 'R' : path | otherwise = bfsSolution $ tail' ++ [ext : path | ext <- extensions, (not . elem ext) path] where headState = head path extensions = filter (\x -> isStatePossible x && isStateSafe x) [move01 headState, move02 headState, move03 headState, move04 headState, move05 headState] 

bfsSolution рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд░реНрдорд┐рдд рдкрдереЛрдВ рдХреА рд╕реВрдЪреА рд╕реЗ рд╕рд┐рд░ рдореЗрдВ рд╕реНрдерд┐рдд рдкрде рд╕реЗ рд▓реЗрддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕реЗ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╕рднреА рд╕рдВрднрд╡ (рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд) рдирд┐рд░рдВрддрд░рддрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдирд┐рд░реНрдорд┐рдд рдирд┐рд░рдВрддрд░рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЕрдВрддрд┐рдо рд╕реНрдерд┐рддрд┐ рд╣реИ, рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдкрдирд╛ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рддреА рд╣реИ рдФрд░ рдЬрд╛рд░реА рдкрде рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреА рд╣реИред рдЕрдиреНрдпрдерд╛, рд╣рдо рд╕реВрдЪреА рдХреА рдкреВрдВрдЫ рдореЗрдВ рд╕рднреА рдЙрддреНрдкрдиреНрди рдкрде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд╣рддреЗ рд╣реИрдВред
рд╣рд╛рд▓рдд рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

 (not . elem ext) path 

рдпрд╣ рдЖрдкрдХреЛ рдЗрд╕ рдкрде рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрд▓реНрдЧреЛрд░рд┐рдердо рджреНрд╡рд╛рд░рд╛ рдкрд╛рд░рд┐рдд рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рд╡рд╛рдкрд╕ рдЬрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдЧрд░ рдЪрд░рдг n рдореЗрдВ рд╣рдордиреЗ рдмрд╛рдПрдВ рдорд┐рд╢рди рд╕реЗ рджреЛ рдорд┐рд╢рдирд░рд┐рдпреЛрдВ рдХреЛ рджрд╛рдИрдВ рдУрд░ рднреЗрдЬрд╛ рд╣реИ, рддреЛ рдЪрд░рдг (n + 1) рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдмрд╛рдПрдВ рдмреИрдВрдХ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓реМрдЯрдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ - рд╣рдо рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░реЗрдВрдЧреЗ рдФрд░ рд╣рдо рдПрдХ рднреА рдХрджрдо рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝рд╛рдПрдВрдЧреЗ (рджрд┐рдП рдЧрдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ) рдореЗрд░реА рдиреЗрдЯрдмреБрдХ рдкрд░, рд╕рдорд╛рдзрд╛рди 0.85 рд╕реЗрдХрдВрдб рдореЗрдВ рд╣реИ, рдЙрдкрд░реЛрдХреНрдд рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реБрдП, рдореБрдЭреЗ рдЧрдгрдирд╛рдУрдВ рдореЗрдВ рдмрд╣реБрдд рдмрдбрд╝реА рд╡реГрджреНрдзрд┐ рдорд┐рд▓рддреА рд╣реИ - рдЙрддреНрддрд░ рдЦреЛрдЬрдиреЗ рдореЗрдВ 45 рд╕реЗрдХрдВрдб рд▓рдЧрддреЗ рд╣реИрдВ)ред

рдЕрдВрддрд┐рдо рд╕реНрдкрд░реНрд╢ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╣реИред
 main = do mapM_ (putStrLn . show) $ (reverse . bfsSolution) ([[State 3 3 'L']]) 


рдирд┐рд╖реНрдХрд░реНрд╖


рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреА рд╡реНрдпрд╛рдкрдХ рд╕рдореАрдХреНрд╖рд╛ рдФрд░ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рд╡рд┐рд╕реНрддреГрдд рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрдЪреНрдЫреБрдХ рдкрд╛рдардХ рд░рд┐рдЯрд░реНрди рдХреЗ рд╕рд╛рде рдПрдХ рдЧрд╣рд░реА рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╛рдзрд╛рди "рджрд┐рдорд╛рдЧ рдореЗрдВ рд▓рд╛рдиреЗ" рдХрд╛ рдПрдХ рдФрд░ (рдЕрднреА рддрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдирд╣реАрдВ) рд╡рд┐рдЪрд╛рд░ рднреА рд╣реИ - рд╕реВрдЪрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рд╕рднреА рдЙрддреНрдкрдиреНрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рд╕реЗ рджреВрд░ рдЬрд╛рдиреЗ рдФрд░ рдПрди-рдПрд░реА рдЯреНрд░реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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


All Articles