"рдкрд╛рдпрдерди рдореЗрдВ рд╢рд╛рд╕реНрддреНрд░реАрдп рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдХрд╛рд░реНрдп" рдкреБрд╕реНрддрдХ

рдЫрд╡рд┐ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрдИ рдХрд╛рд░реНрдп, рдЬреЛ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдирдП рдпрд╛ рдЕрджреНрд╡рд┐рддреАрдп рд▓рдЧрддреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢рд╛рд╕реНрддреНрд░реАрдп рдПрд▓реНрдЧреЛрд░рд┐рджрдо, рдХреЛрдбрд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдФрд░ рд╡рд┐рдХрд╛рд╕ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВред рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рддрдХрдиреАрдХ рдЕрднреА рднреА рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ!

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

рдпрд╣ рдкреБрд╕реНрддрдХ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣реИ?


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

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

рдореИрдВ рдлрд┐рд░ рд╕реЗ рдЬреЛрд░ рджреЗрддрд╛ рд╣реВрдВ: рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд╛рдардХ рдкрд╛рдпрдерди рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рд╢рдмреНрджрд╛рд░реНрде рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рд╢реВрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрдиреБрднрд╡ рд╡рд╛рд▓реЗ рдкрд╛рдардХ рдХреЛ рдЗрд╕ рдкреБрд╕реНрддрдХ рд╕реЗ рд▓рд╛рдн рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкрд╛рдпрдерди рдореЗрдВ рд╢реВрдиреНрдп рдЕрдиреБрднрд╡ рд╡рд╛рд▓рд╛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╢рд╛рдпрдж рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, "рдкрд╛рдпрдерди рдореЗрдВ рд╢рд╛рд╕реНрддреНрд░реАрдп рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдХрд╛рд░реНрдп" рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдХреЗ рдЫрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХ рд╣реИред

рдЕрдВрд╢ред 1.5ред рд╣рдиреЛрдИ рдЯрд╛рд╡рд░


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

рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдЯреЙрд╡рд░ рдП рд╕реЗ рдЯреЙрд╡рд░ рд╕реА рддрдХ рд╕рднреА рдбреНрд░рд╛рдЗрд╡ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред

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

1.5.1ред рдЯреЙрд╡рд░ рдореЙрдбрд▓рд┐рдВрдЧ


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

рдЫрд╡рд┐

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1.20ред hanoi.py

from typing import TypeVar, Generic, List T = TypeVar('T') class Stack(Generic[T]): def __init__(self) -> None: self._container: List[T] = [] def push(self, item: T) -> None: self._container.append(item) def pop(self) -> T: return self._container.pop() def __repr__(self) -> str: return repr(self._container) 

рдкреНрд░рд╕реНрддреБрдд рд╕реНрдЯреИрдХ рд╡рд░реНрдЧ __repr __ () рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЯреЙрд╡рд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред __repr __ () рдХреНрдпрд╛ рд╣реИ рдЬрдм рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреИрдХ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдкрд░рд┐рдЪрдп рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдкреБрд╕реНрддрдХ рдореЗрдВ рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЗрдирдкреБрдЯ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЬреЗрдиреЗрд░рд┐рдХ рдЖрдпрд╛рдд рдХрд░рдирд╛ рд╕реНрдЯреИрдХ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рдкреИрд░рд╛рдореАрдЯреНрд░рд┐рдХ рд╡рд░реНрдЧ рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдордирдорд╛рдирд╛ рдкреНрд░рдХрд╛рд░ T рдХреЛ T = TypeVar ('T') рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред T рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рд╣рдиреЛрдИ рдЯреЙрд╡рд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕реНрдЯреИрдХ рдХреЗ рд▓рд┐рдП рдмрд╛рдж рдореЗрдВ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкреНрд░реЙрдореНрдкреНрдЯ рд╕реНрдЯреИрдХ [рдЗрдВрдЯ] рд╣реЛрдЧрд╛, рдЕрд░реНрдерд╛рдд, рдЯреА рдХреЗ рдмрдЬрд╛рдп рдЗрдВрдЯ рдЯрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣рд╛рдБ рд╕реНрдЯреИрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдХрд╛ рдПрдХ рд╕реНрдЯреИрдХ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рд╕реЗ рдХрдард┐рдирд╛рдИ рд╣реЛ рд░рд╣реА рд╣реИ, рддреЛ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ B рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

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

рд╕реНрдЯреИрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЯрд╛рд╡рд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдбрд┐рд╕реНрдХ рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдПрдХ рднрд░реЗрдВ (рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1.21)ред

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1.21ред hanoi.py (рдЬрд╛рд░реА)

 num_discs: int = 3 tower_a: Stack[int] = Stack() tower_b: Stack[int] = Stack() tower_c: Stack[int] = Stack() for i in range(1, num_discs + 1): tower_a.push(i) 

1.5.2ред рд╣рдиреЛрдИ рдЯрд╛рд╡рд░реНрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди


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

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

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

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

  1. рдПрдХ рдордзреНрдпрд╡рд░реНрддреА рдЯреЙрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ C рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЙрд╡рд░ A рд╕реЗ рдЯреЙрд╡рд░ B (рдЕрд╕реНрдерд╛рдпреА) рддрдХ рд╢реАрд░реНрд╖ n - 1 рдбреНрд░рд╛рдЗрд╡ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред
  2. рд▓реЛ рдбреНрд░рд╛рдЗрд╡ рдХреЛ A рд╕реЗ C рдкрд░ рд▓реЗ рдЬрд╛рдПрдВред
  3. рдЯреЙрд╡рд░ рдмреА рд╕реЗ рдЯреЙрд╡рд░ рд╕реА, рдПрди рдП рдХреЗ 1 рдбрд┐рд╕реНрдХреНрд╕, рдЯреЙрд╡рд░ рдП рдордзреНрдпрд╡рд░реНрддреА рд╣реИред

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

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1.22ред hanoi.py (рдЬрд╛рд░реА)

 def hanoi(begin: Stack[int], end: Stack[int], temp: Stack[int], n: int) -> None: if n == 1: end.push(begin.pop()) else: hanoi(begin, temp, end, n тАФ 1) hanoi(begin, end, temp, 1) hanoi(temp, end, begin, n - 1) 

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

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 1.23ред hanoi.py (рдЬрд╛рд░реА)

 if __name__ == "__main__": hanoi(tower_a, tower_c, tower_b, num_discs) print(tower_a) print(tower_b) print(tower_c) 

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

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

1.6ред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ


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

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

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

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

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

рдпреЗ рд╡рд┐рдзрд┐рдпрд╛рдВ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдЦрдВрдб рд╣реИрдВ, рдЕрдиреНрдп рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЙрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдзреНрдпрд╛рдпреЛрдВ рдореЗрдВ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╡реЗ рдХрд┐рддрдиреЗ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред

рд▓реЗрдЦрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ


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

┬╗рдкреБрд╕реНрддрдХ рдХреА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рдХрд╛рд╢рдХ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ
┬╗ рд╕рд╛рдордЧреНрд░реА
┬╗ рдЕрдВрд╢

рдлреЗрд░реАрд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХреВрдкрди рдкрд░ 25% рдХреА рдЫреВрдЯ - рдкрд╛рдпрдерди

рдкреБрд╕реНрддрдХ рдХреЗ рдкреЗрдкрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рднреБрдЧрддрд╛рди рдкрд░, рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдкреБрд╕реНрддрдХ рдИ-рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИред

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


All Articles