рдЪрд┐рдВрддрд╛ рдХреЛ рдХреИрд╕реЗ рд░реЛрдХреЗрдВ рдФрд░ рд╕рдВрдкрддреНрддрд┐-рдЖрдзрд╛рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ

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

рддреАрди рдЫреЛрдЯреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рднрдВрдбрд╛рд░рдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг


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

  • рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдорд╛рди рд▓рд┐рдЦреЗрдВ
  • рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдХреЛрдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╡рд╛рдВрдЫрд┐рдд рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдореМрдЬреВрдж рд╣реИ рдпрд╛ рдирд╣реАрдВ
  • рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рдореВрд▓реНрдп рдкрдврд╝реЗрдВ
  • рджрд░реНрдЬ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
  • рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреА рдПрдХ рдкреНрд░рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рд╢рд╛рд╕реНрддреНрд░реАрдп рдЙрджрд╛рд╣рд░рдг-рдЖрдзрд╛рд░рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:

storage = Storage() storage['a'] = 42 assert len(storage) == 1 assert 'a' in storage assert storage['a'] == 42 

рдпрд╛ рддреЛ:

 storage = Storage() storage['a'] = 42 storage['b'] = 73 assert len(storage) == 2 assert 'a' in storage assert 'b' in storage assert storage['a'] == 42 assert storage['b'] == 73 

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

 storage = Storage() key = arbitrary_key() value = arbitrary_value() storage[key] = value assert len(storage) == 1 assert key in storage assert storage[key] == value 

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

 storage = arbitrary_storage() storage_copy = storage.copy() assert len(storage) == len(storage_copy) assert all(storage_copy[key] == storage[key] for key in storage) assert all(storage[key] == storage_copy[key] for key in storage_copy) 

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

 storage = arbitrary_storage() backup = storage.copy() key = arbitrary_key() value = arbitrary_value() if key in storage: return storage[key] = value assert len(storage) == len(backup) + 1 assert key in storage assert storage[key] == value assert all(storage[key] == backup[key] for key in backup) 

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

  • рд╣рдо рдЧреБрдг рдкрд╛рддреЗ рд╣реИрдВ
  • рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛ рдХреЗ рдвреЗрд░ рдкрд░ рдЧреБрдгреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
  • рд▓рд╛рдн!

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

рдпрд╣ рд╕рдм рдареАрдХ рд╣реИ рдФрд░ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ...


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

 input = arbitrary_list() output = sort(input) assert all(a <= b for a, b in zip(output, output[1:])) 

рдФрд░ рдЗрд╕рдХрд╛ рдРрд╕рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧреБрдЬрд░ рдЬрд╛рдПрдЧрд╛

 def sort(input): return [1, 2, 3] 

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдиреИрддрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИред

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

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

рд╕рд╛рдордпрд┐рдХ рдЖрд▓реЛрдЪрдирд╛ рднреА рд╣реИ рдХрд┐ рдЧреБрдгреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рддрд░реНрдХ рдкрд░реАрдХреНрд╖рдг рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд╢реИрд▓реА рдореЗрдВ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ

 data = totally_arbitrary_data() perform_actions(sut, data) if is_category_a(data): assert property_a_holds(sut) else if is is_category_b(data): assert property_b_holds(sut) 

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

 data = totally_arbitrary_data() assume(is_category_a(data)) perform_actions(sut, data) assert property_a_holds(sut) 

рдФрд░

 data = data_from_category_b() perform_actions(sut, data) assert property_b_holds(sut) 

рдЙрдкрдпреЛрдЧреА рдЧреБрдг, рдФрд░ рдЙрдирдХреЗ рдирд┐рд╡рд╛рд╕ рд╕реНрдерд╛рди


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

рдХрдо рд╕реЗ рдХрдо рдордд рдЧрд┐рд░реЛ


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

рдкрд░реАрдХреНрд╖рдг рдХрд╛ рддрд╛рдВрдбрд╡


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

 input = arbitrary_list() assert quick_sort(input) == bubble_sort(input) 

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

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

рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдФрд░ рдЖрдХреНрд░рдордгрдХрд╛рд░реА


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

рдЧреБрдгреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╡рд┐рднрд┐рдиреНрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдПрдХ рдЫреЛрдЯреА рд╕реВрдЪреА:

  • рд╡рд░реНрдЧ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЧреЗрдЯрдЯрд░-рд╕реЗрдЯрд░)
  • рднрдВрдбрд╛рд░ рдкрд╣рд▓реЗ рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХреА рдЧрдИ рд╡рд╕реНрддреБ рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
  • рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдХрд┐рд╕реА рднреА рдЖрдЗрдЯрдо рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рдЬреЛрдбрд╝реЗ рдЧрдП рдЖрдЗрдЯрдо рдкрд░ рдХреЛрдИ рдЕрд╕рд░ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ
  • рдХрдИ рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  • рд╕рдВрддреБрд▓рд┐рдд рдкреЗрдбрд╝ рдХреА рдКрдВрдЪрд╛рдИ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдХрд╢реНрдореАрд░ рдЧ рдШ рдУ рдЯреА рд▓ реЙ рдЧ ( рдПрди ) рд▓реЙрдЧ рдЬрд╣рд╛рдБ рдП рдПрдирдПрди - рджрд░реНрдЬ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛
  • рдХреНрд░рдордмрджреНрдз рдкрд░рд┐рдгрд╛рдо рдЖрджреЗрд╢рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ
  • base64 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рдХреЗрд╡рд▓ base64 рд╡рд░реНрдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
  • рдорд╛рд░реНрдЧ-рдирд┐рд░реНрдорд╛рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдЕрдиреБрдореЗрдп рдЖрдВрджреЛрд▓рдиреЛрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдмрд┐рдВрджреБ рдП рд╕реЗ рдмрд┐рдВрджреБ рдмреА рддрдХ рд▓реЗ рдЬрд╛рдПрдЧрд╛
  • рдирд┐рд░реНрдорд┐рдд рдЖрдЗрд╕реЛрд▓рд╛рдЗрди рдХреЗ рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрддреБрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП f ( x , y ) = c o n s t
  • рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╕рддреНрдпрд╛рдкрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЕрдЧрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдФрд░ рдЧрд▓рдд рд╣реИ рддреЛ
  • orthonormalization рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рднреА рд╡реИрдХреНрдЯрд░ рдореЗрдВ рдпреВрдирд┐рдЯ рдХреА рд▓рдВрдмрд╛рдИ рдФрд░ рд╢реВрдиреНрдп рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рд╕реНрдХреЗрд▓рд░ рдЙрддреНрдкрд╛рдж рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП
  • рд╡реЗрдХреНрдЯрд░ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдФрд░ рд░реЛрдЯреЗрд╢рди рдСрдкрд░реЗрд╢рдВрд╕ рдХреЛ рдЗрд╕рдХреА рд▓рдВрдмрд╛рдИ рдирд╣реАрдВ рдмрджрд▓рдиреА рдЪрд╛рд╣рд┐рдП

рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХреЛрдИ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдЦ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдкрд░реАрдХреНрд╖рдг oracles рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рдЧреБрдгреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк "рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ" рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рдЕрд▓рдЧ рд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдкреНрд░реЗрд░рдг рдФрд░ рд░рд╛рдЬреНрдп рдкрд░реАрдХреНрд╖рдг


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

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

рдЧрдгрд┐рддреАрдп рдкреНрд░реЗрд░рдг рдХреЗ рд╕рдорд╛рди:

  • рд╕рд┐рджреНрдз рдХрдерди рез
  • рдХрдерди N + 1 рдХреЛ рд╕рд┐рджреНрдз рдХрд░реЗрдВ, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдХрдерди N рд╕рддреНрдп рд╣реИ

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

рдкреАрдЫреЗ-рдкреАрдЫреЗ


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

 input = arbitrary_data() assert decode(encode(input)) == input 

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдорд╣рд╛рди:

  • рдХреНрд░рдордмрджреНрдзрддрд╛-рдЕрдХреНрд░рдорд╛рдВрдХрди
  • рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдбрд┐рдХреНрд░рд┐рдкреНрд╢рди
  • рдПрдиреНрдХреЛрдбрд┐рдВрдЧ-dekodirvaniya
  • рдЖрдзрд╛рд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЛ рдЪрддреБрд░реНрдзрд╛рддреБрдХ рдореЗрдВ рдмрджрд▓рдирд╛ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд
  • рдкреНрд░рддреНрдпрдХреНрд╖ рдФрд░ рд╡реНрдпреБрддреНрдХреНрд░рдо рд╕рдордиреНрд╡рдп рдкрд░рд┐рд╡рд░реНрддрди
  • рдкреНрд░рддреНрдпрдХреНрд╖ рдФрд░ рдЙрд▓рдЯрд╛ рдлреВрд░рд┐рдпрд░ рд░реВрдкрд╛рдВрддрд░рдг

рдПрдХ рд╡рд┐рд╢реЗрд╖, рд▓реЗрдХрд┐рди рджрд┐рд▓рдЪрд╕реНрдк рдорд╛рдорд▓рд╛ рдЙрд▓рдЯрд╛ рд╣реИ:

 input = arbitrary_data() assert invert(invert(input)) == input 

рдПрдХ рд╣рдбрд╝рддрд╛рд▓реА рдЙрджрд╛рд╣рд░рдг рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЙрд▓рдЯрд╛ рдпрд╛ рдЯреНрд░рд╛рдВрд╕рдкреЛрдЬрд╝рди рд╣реИред

idempotency


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

  • рдЫрдВрдЯрд╛рдИ
  • рд╡реИрдХреНрдЯрд░ рдФрд░ рдард┐рдХрд╛рдиреЛрдВ рдХрд╛ рдХреЛрдИ рднреА рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг
  • рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рд╡рд╕реНрддреБ рдХреЛ рдХрд┐рд╕реА рд╕реЗрдЯ рдпрд╛ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдирд╛
  • рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдХреБрдЫ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдЙрд╕реА рдбреЗрдЯрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдирд╛
  • рдХреИрдиреЛрдирд┐рдХрд▓ рдлреЙрд░реНрдо рдореЗрдВ рдбреЗрдЯрд╛ рдбрд╛рд▓рдирд╛ (JSON рдореЗрдВ рд╕реНрдерд╛рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХреАрдХреГрдд рд╢реИрд▓реА рдореЗрдВ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ)

рдпрджрд┐ рд╕рд╛рдорд╛рдиреНрдп рдбрд┐рдХреЛрдб (рдЗрдирдкреБрдЯ)) == рдЗрдирдкреБрдЯ рд╡рд┐рдзрд┐ рд╕рдорддреБрд▓реНрдп рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ (рдлрд┐рд░ рд╕реЗ, рдХреБрдЫ JSON рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд░рд┐рдХреНрдд рд╕реНрдерд╛рди) рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрднрд╛рд╡рд┐рдд рдЕрднреНрдпрд╛рд╡реЗрджрди рдХреЗ рдХрд╛рд░рдг рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдХреНрд░рдорд┐рдХ-рдирд┐рд░реВрдкрдг рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

 def normalize(input): return decode(encode(input)) input = arbitrary_data() assert normalize(normalize(input)) == normalize(input) 

рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ, рдПрдХ рдкрд░рд┐рдгрд╛рдо


рдпрд╣рд╛рдВ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рддрдереНрдп рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рддрд╛ рд╣реИ рдХрд┐ рдХрднреА-рдХрднреА рдПрдХ рд╣реА рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдХреА рддрд░рд╣ рдкреНрд░рддреАрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреБрдЫ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреА рдХрдореНрдпреВрдЯреЗрдЯрд┐рд╡рд┐рдЯреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ:

 a = arbitrary_value() b = arbitrary_value() assert a + b == b + a 

рдпрд╣ рддреБрдЪреНрдЫ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИ:

  • рдЧреИрд░-рдорд╛рдирдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдЬреЛрдбрд╝ рдФрд░ рдЧреБрдгрд╛ (bigint, rational, рдмрд╕ рдЗрддрдирд╛ рд╣реА)
  • рдкрд░рд┐рдорд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рдЕрдгреНрдбрд╛рдХрд╛рд░ рд╡рдХреНрд░реЛрдВ рдкрд░ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ "рдЬреЛрдбрд╝" (рд╣реИрд▓реЛ, рдХреНрд░рд┐рдкреНрдЯреЛрдЧреНрд░рд╛рдлреА!)
  • рд╕реЗрдЯ рдХрд╛ рд╕рдВрдШ (рдЬрд┐рд╕рдХреЗ рдЕрдВрджрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧреИрд░-рддреБрдЪреНрдЫ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ)

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЗ рдЬреЛрдбрд╝ рдореЗрдВ рдПрдХ рд╣реА рдЧреБрдг рд╣реИ:

 A = dict() A[key_a] = value_a A[key_b] = value_b B = dict() B[key_b] = value_b B[key_a] = value_a assert A == B 

рд╡рд┐рдХрд▓реНрдк рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ - рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рдЗрд╕реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рдЧрдгрд┐рддреАрдп рд╕рдВрдХреЗрддрди рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдРрд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдЖрдо рд╣реИрдВ рдЪ ( x )рдЪ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐ рд░рдЦрддреА рд╣реИ f ( x + y ) = f ( x ) c d o t f ( y )  , рдФрд░ рджреЛрдиреЛрдВ рддрд░реНрдХ рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдЪрд╛рд▓рди + рдФрд░  рдХ рд╛ рдбрдХрд╛рдб - рдЗрди рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдмрд╕ рдХреБрдЫ рдмрд╛рдЗрдирд░реА рд╕рдВрдЪрд╛рд▓рдиред рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдЬреАрдм рд╕рдВрдЦреНрдпрд╛, рд╡реИрдХреНрдЯрд░, рдореЗрдЯреНрд░рд┐рд╕реЗрд╕, рдХреНрд╡рд╛рдЯрд░рдирд┐рдпрди ( a cdot(x+y)=a cdotx+a cdoty )
  • рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЗрдВрдЯреАрдЧреНрд░рд▓, рдбрд┐рдлрд░реЗрдВрд╢рд┐рдпрд▓, рдХреЙрдиреНрдлреЛрд▓реНрдпреВрд╢рди, рдбрд┐рдЬрд┐рдЯрд▓ рдлрд┐рд▓реНрдЯрд░, рдлреВрд░рд┐рдпрд░ рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдЗрддреНрдпрд╛рджрд┐, рд▓реАрдирд┐рдпрд░ рдСрдкрд░реЗрдЯрд░реНрд╕ F[x+y]=F[x]+F[y] )
  • рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рдЕрднреНрдпрд╛рд╡реЗрджрди рдореЗрдВ рд╕рдорд╛рди рд╡рд╕реНрддреБрдУрдВ рдкрд░ рд╕рдВрдЪрд╛рд▓рди

    • M(qa cdotqb)=M(qa) cdotM(qb) рдЬрд╣рд╛рдБ qa рдФрд░ qb рдПрдХрд▓ рдЪрддреБрд░реНрднреБрдЬ рд╣реИрдВ, рдФрд░ рдПрдо(рдХреНрдпреВ) - рдПрдХ рдЪрддреБрд░реНрдзрд╛рддреБрдХ рдХреЛ рдПрдХ рд╕рдорд╛рди рдЖрдзрд╛рд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп
    • F[a circb]=F[a] cdotF[b] рдЬрд╣рд╛рдБ рдПрдХ рдФрд░ рдм рд╕рд┐рдЧреНрдирд▓ рд╣реИрдВ \ _ - рдЖрдХреНрд╖реЗрдк  рдХрд╛рдб - рдЧреБрдгрди, рдФрд░ рдПрдл - рдлреВрд░рд┐рдпрд░ рд░реВрдкрд╛рдВрддрд░рдг


рдереЛрдбрд╝рд╛ рдФрд░ "рд╕рд╛рдзрд╛рд░рдг" рдХрд╛рд░реНрдп рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг - рдХреБрдЫ рдореБрд╢реНрдХрд┐рд▓ рд╢рдмреНрджрдХреЛрд╢ рд╡рд┐рд▓рдп рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 a = arbitrary_list_of_kv_pairs() b = arbitrary_list_of_kv_pairs() result = as_dict(a) result.merge(as_dict(b)) assert result == as_dict(a + b) 

рдПрдХ рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрдЬрд╛рдп


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


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

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


All Articles