
рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ
рдлреЗрд╕рдмреБрдХ рдХреЛ рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИред рдХрдИ рдиреЗ рдЗрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдкреНрд░рд╢рд╛рд╕рди рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП (рд╣рд╛рд▓рд╛рдВрдХрд┐, рдордВрдЪ рдкрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдЗрд╕ рдЕрднреНрдпрд╛рд╕ рдХреЛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдирд┐рд▓рдВрдмрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдХреБрдЫ
рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИред рдХреБрдЫ рдиреЗ рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдХреБрдЫ рдЗрд╕рдореЗрдВ рд╕рдлрд▓ рднреА рд╣реБрдПред рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреБрдЫ рдиреЗ рд╣реА рдЕрдкрдирд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ред рдФрд░ рдЕрдиреБрднрд╡, рдореБрдЭреЗ рдХрд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдЗрд╕ рдЪреВрдХ рдХреЛ рдереЛрдбрд╝рд╛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред
рд▓рдШреБ рдЕрд╕реНрд╡реАрдХрд░рдг: рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдПрдХ рд╕реБрдВрджрд░ рдХреЛрдб рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдкреАрдПрд▓рдУ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди, рд╕реНрд╡реАрдХреГрдд рд╕рдореНрдореЗрд▓рдиреЛрдВ рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдЬреЛ рдЕрдм рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИрдВред рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рд╡рд░реНрдХрд┐рдВрдЧ рдХреЛрдб рдХреЛ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреВрд░реЗ рд▓реЗрдЦ рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХрд╛рд░реНрдп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реИред
рддреЛ, рд╢реНрд╡рд╛рд╕рдирд▓реАред рд╡рд╣ рдПрдХ
рд╕рд╛рдВрд╕ рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ ред рдпрд╣ рдлреЗрд╕рдмреБрдХ рдХреЗ рд╡рд░реНрдЧреАрдХрд░рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрдиреИрдХ-рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕рд┐рдЯреА рдХрд╛ рдХрд╛рд░реНрдп рд╣реИ, рдЕрд░реНрдерд╛рдд рдЙрдирдХреЗ рдорд╛рдирдХреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЬреЛ рдореБрдЭреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣рдлрд╝реНрддреЗ рдмрд┐рддрд╛рдиреЗ рд╕реЗ рд░реЛрдХ рдирд╣реАрдВ рдкрд╛рдпрд╛ (рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд░реВрдмреА рдореЗрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдПрдХ рдореМрд▓рд┐рдХ рдЗрдЪреНрдЫрд╛ рдХреЗ рдХрд╛рд░рдг)ред рдореИрдВрдиреЗ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдмрджрд▓реЗ рдореЗрдВ рдХрд┐рдпрд╛, рдФрд░ рдпрд╣ рд╡рд╣ рдерд╛ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдПрдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдФрд░ рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдерд╛ - рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреИрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдирд╛ рд╣реИ ...
рд╣рд╛рдВред рдореИрдВрдиреЗ рдЖрдИрдЯреА-рд╕реНрдкреЗрд╢рд┐рдпрд▓рд┐рдЯреА рдореЗрдВ рди рдЬрд╛рдиреЗ рдХрд┐рддрдиреЗ рдЦрд░рд╛рдм рддрдХрдиреАрдХреА рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рд╕реЗ рд╕реНрдирд╛рддрдХ рдХреА рдЙрдкрд╛рдзрд┐ рдкреНрд░рд╛рдкреНрдд рдХреА рд╣реИ, рдореИрдВ рдбреЗрд▓реНрдлреА рдореЗрдВ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрдорд╛ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдкрдиреЗ рдЕрд╡рдХрд╛рд╢ рдкрд░ рдореИрдВ рдЕрдкрдиреЗ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдПрдлрдПрдХреНрдпреВ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд░рдУрдЖрд░ рдкрд░ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХрднреА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдирд╛ рдирд╣реАрдВ рд╕реАрдЦрд╛ред рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдиреЗ рдореБрдЭреЗ рдХреНрдпрд╛ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛? рдЖрдЗрдП рдПрдХ рд╕рд╛рде рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред
рдЯрд╛рд╕реНрдХ рдХреА рд╢рд░реНрддреЗрдВ
рддреЛ, рдЖрдк рдПрдХ рдлреЗрд╕рдмреБрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реИрдВ, рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦрд░рд╛рдм рдирд╣реАрдВ рд╣реИред рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдкреНрд░рд╢рд╛рд╕рди рдиреЗ рдирд╢реЗ рдореЗрдВ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреА рдЧрдИ рджреАрд╡рд╛рд░реЛрдВ рдкрд░ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ (рдЬреЛ рд╡реЗ рдХрднреА-рдХрднреА рдкрдЫрддрд╛рддреЗ рд╣реИрдВ), рдЬрд┐рд╕рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЖрдкрдХреЛ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЙрд╕рдХреЗ рд▓рд┐рдЦреЗ рдЧрдП рдкрд╛рда рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд╢реЗ рдХреА рдбрд┐рдЧреНрд░реА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдирд▓рд╛рдЗрди рд╕рд╛рдВрд╕ рд▓реЗрдиреЗ рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рджреАрд╡рд╛рд░реЛрдВ рдкрд░ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдореЙрдбрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрдбрд╝реА рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдмрд╛рдзрд╛ рдирд╣реАрдВ рд╣реИ - рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд╕рд░рд▓ рд╣реИрдВред рдпрджрд┐ рд╣рдо рд╕реНрд░реЛрдд рдЧреНрд░рдВрдереЛрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдкреНрд░рд╛рд░реВрдкрдг рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдХреЛрдб рдХреЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рдХреНрд╖реНрдп рдХреНрд╖реЗрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХреБрдЫ рдкрд╛рда рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд╕рд╣реА рд╢рдмреНрджреЛрдВ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд╕рд╛рде рджрд┐рдП рдЧрдП рд╣реИрдВред рдХрд╛рд░реНрдп рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдФрд░ рдкрд╛рда рдХреЗ рд▓рд┐рдП рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдХреБрд▓ рд░рд╛рд╢рд┐ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИред рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЙрди рд╕реБрдзрд╛рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╢рдмреНрдж рдореЗрдВ рдХрд┐рд╕реА рдПрдХ рд╢рдмреНрдж рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рдЕрдиреБрдкрд╛рд▓рди рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рдмреНрдж рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕реБрдзрд╛рд░ рд╣реИрдВ: рдПрдХ рдЕрдХреНрд╖рд░ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛, рдПрдХ рдЕрдХреНрд╖рд░ рдХреЛ рд╣рдЯрд╛рдирд╛, рдПрдХ рдЕрдХреНрд╖рд░ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд╕рд╛рде рдмрджрд▓рдирд╛ред рд╣рдореНрдо ... рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдареАрдХ рд╣реИ, рдЖрдБрдЦреЗрдВ рдбрд░рддреА рд╣реИрдВ, рдФрд░ рд╣рд╛рде рд╣реБрдХ рд╣реИрдВред рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВред рдУрд╣ рд╣рд╛рдБ, рдХрд╛рд░реНрдп рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрддрд┐рд░рд┐рдХреНрдд рдиреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рдордп рдореЗрдВ рдкреНрд░рднрд╛рд╡реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдирд┐рд░реНрдгрдпред Iteration 1
рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рд╕рдорд╕реНрдпрд╛ рдПрдХ рд╢рдмреНрдж рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЧрдгрдирд╛ рд╣реИред Google рдореЗрдВ рдПрдХ рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╣рдорд╛рд░реЗ рд╕рд╛рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рдФрд░ рджрд┐рдП рдЧрдП рд╢рд░реНрддреЛрдВ рдХреЗ рддрд╣рдд рд╢рдмреНрдж рдЕрдВрддрд░ рдХрд╛ рдПрдХ рдорд╛рддреНрд░рд╛рддреНрдордХ рд╕реВрдЪрдХ "рд▓реЗрд╡реЗрдВрд╕рд╣рд╛рдЗрдЯ рджреВрд░реА" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рджреВрд░реА рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╡рд░реНрдгрди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИрдмреЗ рдкрд░ рдореМрдЬреВрдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдзреНрдпрд╛рди рдирд╣реАрдВ рджрд┐рдпрд╛, рдореИрдВ рд░реВрдмреА рдореЗрдВ рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреВрдВрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдирд┐рд░реНрдгрдп рдХрд╛ рджрд┐рд▓ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
def calc_levenshtein_distance(s,t) n = s.length m = t.length return m if n==0 return n if m==0 d = Array.new(n+1).map!{Array.new(m+1)} for i in 0..n d[i][0]=i end for j in 0..m d[0][j]=j end for i in 1..n for j in 1..m do if s[i-1]==t[j-1] cost=0 else cost=1 end d[i][j] = [d[i-1][j]+1, d[i][j-1]+1, d[i-1][j-1] + cost].min end end return d[n][m] end
рдбрд┐рдХреНрд╢рдирд░реА рдХрд╛ рдПрдХ рд▓рд┐рдВрдХ рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдХреЗрд╡рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рдореИрдВ
рдЗрд╕реЗ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛ ), рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдЧреНрд░рдВрдереЛрдВ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рдордВрдЪ рдкрд░ рднрд╛рдЧ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдЙрддреНрд╕рд╛рд╣реА (
187.in ,
david_22719.in ,
4.in ,
12.in ) рджреНрд╡рд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП рдереЗ, рдЖрдк рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЫреЛрдЯреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдорд▓рд╛ред рд╣рдо рдкреВрд░реЗ рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдкрд░ рд╢рдмреНрдж рджреНрд╡рд╛рд░рд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрд╡рд░реВрдкрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╡рд░реНрдгрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз рд╣реЛрддрд╛ рд╣реИ), рд╣рдо рд╕реНрд░реЛрдд рдкрд╛рда рдкрдврд╝рддреЗ рд╣реИрдВ, рдЪрдХреНрд░ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ: рд╕реНрд░реЛрдд рдкрд╛рда рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рд╣рдо рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдирд┐рдХрдЯрддрдо рд╢рдмреНрдж рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо рдХреИрд╕реЗ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ? рд╣рдо рдкреВрд░реЗ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднрд╛рдЧрддреЗ рд╣реИрдВ, рд▓реЗрд╡реЗрдВрд╕рд╣реЗрдЯрд┐рди рджреВрд░реА рдЦреЛрдЬ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╣рд░рд╛рддреЗ рд╣реИрдВ:
def find_word(word, dic) result_word = '' result_cost = 999 dic.each do |dic_word| ld = calc_levenshtein_distance(word, dic_word) if ld<result_cost result_word = dic_word result_cost = ld end end return {:word => result_word, :cost => result_cost} end
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рдорд╛рдЗрдирд╕ рд░реАрдбрд┐рдВрдЧ рдбрд┐рдХреНрд╢рдирд░реА:
total_cost = 0 words.each do |word| total_cost += find_word(word, dic_words)[:cost] end
рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдкреВрд░рд╛ рдкрд╛рда
рдпрд╣рд╛рдВ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред рдпрд╣рд╛рдВ рдореБрдЭреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрджреЗрд╣ рдХрд╛ рджреМрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдареАрдХ рд╣реИ, рдореЗрд░реА рдкрд╕рдВрджреАрджрд╛ рдЯреЗрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдкрд╣рд▓рд╛ рд░рди рдЬреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рдмрди рдЧрдпрд╛ (рдореИрдВрдиреЗ
рдкрд╣рд▓реЗ 187.in рдлрд╛рдЗрд▓ рдкрд░ рд▓рдЧрднрдЧ рд╕рднреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА
рдЬрд╛рдВрдЪ рдХреА ) ... рд╣рдореНрдоред рджрд╕ рдорд┐рдирдЯ рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдордп рдкрд░ рдкреНрд░рднрд╛рд╡реА рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рдереАред
рдЦреИрд░, рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдмреНрд░реЗрдХ рдХрд╣рд╛рдБ рдкрд░ рджрдлрди рд╣реИред рддреЛ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рд▓реЗрд╡реЗрдВрд╕рд╣рд╛рдЗрдЯ рдбрд┐рд╕реНрдЯреЗрдВрд╕ рд╕рд░реНрдЪ рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЬреЛ рджреЛ рдЪрдХреНрд░реЛрдВ рдореЗрдВ рд▓рд┐рдкрдЯреЗ рд╣реБрдП рд╣реИрдВ - рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рда рдФрд░ рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ред рдФрд░ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рд▓рдЧрднрдЧ 180 рд╣рдЬрд╛рд░ рд╢рдмреНрдж рд╣реИрдВред рдХреБрдЫ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ ...
рдирд┐рд░реНрдгрдпред Iteration 2
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЕрдиреБрдХреВрд▓рди рдХрд░реЗрдВрдЧреЗред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрджрд┐ рдкреНрд░рд╢реНрди рдореЗрдВ рд╢рдмреНрдж рдмрд┐рдирд╛ рдмрджрд▓рд╛рд╡ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЖрдЧреЗ рдХреА рд╣рд▓рдЪрд▓ рдХреЗ рдмрд┐рдирд╛, рд╣рдо рдЗрд╕рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╢реВрдиреНрдп рдорд╛рди рд▓реЗрдВрдЧреЗред
return {:word => word, :cost => 0} if dic.include?(word)
рджреВрд╕рд░реЗ, рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╢рдмреНрдж рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рд╢реНрди рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рд╣рдо рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдмрдЪрд╛рдПрдВрдЧреЗ:
res = already_found.include?(word) ? already_found[word] : find_word(word, dic_words) already_found[word] ||= res
рддреАрд╕рд░рд╛, рдбрд┐рдмрдЧ рдЖрдЙрдЯрдкреБрдЯ рдЬреЛрдбрд╝реЗрдВред рдХрд╛рд░реНрдп рдХреА рд╢рд░реНрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдПрдХ рд╣реА рдирдВрдмрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реА рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА (рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдкреВрд░рд╛ рдкрд╛рда
рдпрд╣рд╛рдВ рд╣реИ ) рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдиреЗ рд╣рдореЗрдВ рд╕рд╣реА рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдлрд╛рдЗрд▓реЛрдВ
4.in рдФрд░
12.in (рдореЗрд░реЗ рд╣реЛрдо рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд▓рдЧрднрдЧ рддреАрди рдорд┐рдирдЯ) рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд╛рдиреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред
187.in рдХреЗ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЕрднреА рднреА рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЗ рдХрдВрд╕реЛрд▓ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдареАрдХ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рдЕрдм рддрдХред
рдирд┐рд░реНрдгрдпред Iteration 3
рдХрд╛рд░реНрдп рдХреА рд╢рд░реНрддреЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рд╢рдмреНрджреЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рдХреЗрд╡рд▓ рддреАрди рддрд░реАрдХреЗ рд╣реИрдВ: рдПрдХ рдкрддреНрд░ рдЬреЛрдбрд╝реЗрдВ, рдПрдХ рдкрддреНрд░ рдирд┐рдХрд╛рд▓реЗрдВ, рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдкрддреНрд░ рдХреЛ рдмрджрд▓реЗрдВред рдЗрд╕рдХрд╛ рдЕрд░реНрде рдпрд╣ рд╣реИ рдХрд┐ 1 рд╕реЗ рд▓рдВрдмрд╛рдИ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╢рдмреНрдж рдЕрдкрдиреЗ рдмреАрдЪ рдХрдо рд╕реЗ рдХрдо 1 рдХреА рд▓реЗрд╡реЗрдВрд╕рд╣рд╛рдЗрдЯ рджреВрд░реА рд░рдЦрддреЗ рд╣реИрдВред рдпрд╣ рдХреНрдпрд╛ рджреЗрддрд╛ рд╣реИ? рд╣рдо рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рд╢рдмреНрджреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкрд╛рда рд╕реЗ рдЕрдЧрд▓реЗ рд╢рдмреНрдж рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдХреЗ, рд╣рдо рдЙрди рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рд╢рдмреНрджрдХреЛрд╖ рдХреА рдЦреЛрдЬ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рд╢реНрди рдореЗрдВ рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд░рдЦреЗрдВ рдЬреЛ 1 рдФрд░ рдЗрддрдиреЗ рдкрд░ рд╣реИрдВред рдЬреИрд╕реЗ рд╣реА рд▓рдВрдмрд╛рдИ рдореЗрдВ рдЕрдВрддрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдорд┐рд▓реА рдиреНрдпреВрдирддрдо рджреВрд░реА рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдореЗрдВ рдкрддрд╛ рдЪрд▓ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рд╣рдореЗрдВ рдЖрдЧреЗ рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдмрдирд╛рдПрдВ:
dictionary = {} dic_words.each do |w| dictionary[w.length] ||= [] dictionary[w.length] << w end
рдлрд┐рд░ рд╣рдордиреЗ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╢рдмреНрджрдХреЛрд╢ рдЦреЛрдЬ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рддрд╛рдХрд┐ рдпрд╣ рд╡рд╛рдВрдЫрд┐рдд рдХреНрд░рдо рдореЗрдВ рд╢рдмреНрджреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╣реЛ рдЬрд╛рдП:
def find_word(word, dic) if dic[word.length] return {:word => word, :cost => 0} if dic[word.length].include?(word) end result_word = '' result_cost = 999 for offset in 0..15 do return {:word => result_word, :cost => result_cost} if result_cost<=offset indexes = [word.length-offset,word.length+offset].uniq indexes.each do |index| next unless dic[index] dictionary_part = dic[index] dictionary_part.each do |dic_word| ld = calc_levenshtein_distance(word, dic_word) if ld<result_cost result_word = dic_word result_cost = ld end end end end return {:word => result_word, :cost => result_cost} end
рд╣реБрд░реНрд░реЗ!
12.in рдФрд░
4.in рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди 70 рд╕реЗрдХрдВрдб рддрдХ рдХрдо рд╣реЛ
рдЧрдпрд╛ рдерд╛ (рд╣рдо
рдпрд╣рд╛рдВ рдкреВрд░реНрдг рдкрд╛рда рдХреА рддрд▓рд╛рд╢ рдХрд░рддреЗ
рд╣реИрдВ )ред рдФрд░ рдпрд╣ рднреА
187.in рдлрд╝рд╛рдЗрд▓ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд▓рд╛ - рд▓рдЧрднрдЧ 17 рдорд┐рдирдЯред рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реЗ рдЧрдгрд┐рдд рд╢рд┐рдХреНрд╖рдХ рдиреЗ рдХрд╣рд╛, рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рджреЛ рд╣реИрдВред
David_22719.in рдлрд╝рд╛рдЗрд▓ рдЕрднреА рднреА рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред
рдирд┐рд░реНрдгрдпред рдЧрд░реНрднрд╛рдзрд╛рди рек
рдореБрдЭреЗ рдорд╛рдлрд╝ рдХрд░рдирд╛ рд░реВрдмреА-рдЬреЛрдбрд╝реЛрдВ рдФрд░ рдЕрдиреНрдп рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЧрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдкреНрд░реЗрдорд┐рдпреЛрдВ, рд▓реЗрдХрд┐рди рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЬреЛ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд╕рдордп рддрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ, рд╡реЗ
.. рдЦрд░рд╛рдм рддрд░реАрдХреЗ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдореИрдВрдиреЗ рд╕реА рдореЗрдВ рдХрд╛рд░реНрдп рдХреЛ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдФрд░ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ред
187.in рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХрд╛
bruteforce рд╕реЗрдХрдВрдб рдореЗрдВ рдкреВрд░рд╛ рд╣реБрдЖред рдХреБрдЫ рд╣реА рдорд┐рдирдЯреЛрдВ рдореЗрдВ, рдХрд╛рд░реНрдпрдХреНрд░рдо
рдиреЗ david_22719.in рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рднреА
рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░ рд▓реА ред рдлреЗрд╕рдмреБрдХ рдмреЙрдЯ рдХреЛ рднреЗрдЬрд╛ рдЧрдпрд╛ рд╕рдорд╛рдзрд╛рди рдиреЛрдЯ рдХреЗ рд╕рд╛рде рд▓реМрдЯрд╛:
рд╢реНрд╡рд╛рд╕рдирд▓реА рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж (18 рдЬрдирд╡рд░реА, 2011, 10:40 рдмрдЬреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛), рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рд╣реА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди рдЕрдкрдиреЗ рд╕рдмрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ 1585.775 рдПрдордПрд╕ рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛ред
рд░реВрдмреА рдкрд░ рд╕рдорд╛рдзрд╛рди рдПрдХ рдирд┐рд╢рд╛рди рдХреЗ рд╕рд╛рде рд╕рдордп рдХреЗ рдмрд╛рдж рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛
рдлреЗрд╕рдмреБрдХ рдкрд░ рдПрдХ рдкрд╣реЗрд▓реА рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рд╢реНрд╡рд╛рд╕рдирд▓реА рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж (18 рдЬрдирд╡рд░реА, 2011 рдХреЛ 12:20 рдмрдЬреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛), рдореИрдВрдиреЗ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдХреБрдЫ рдХреАрдбрд╝реЗ рдкрд╛рдП рдФрд░ рдЗрд╕реЗ рдЧрд▓рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ред
рдареАрдХ рд╣реИ, рдлрд┐рд░ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рджрд┐рд▓ Levenshtein рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИ, рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╕реЗ рд╕рднреА рдХреЛ рдЫреЛрдбрд╝рдХрд░, рд╕рдмрд╕реЗ рд╕рд░рд▓ ... рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд╣реЗрдВ ... рдХреБрдЫ рд╣рдж рддрдХ nontrivial рд╣реИрдВред рдХрдИ рдШрдВрдЯреЛрдВ рддрдХ рд░рдордиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдПрдХ рдФрд░ рдЙрдкрд╛рдп рдЦреЛрдЬрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдФрд░ рдорд┐рд▓ рдЧрдпрд╛ред рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, рдореБрдЭреЗ рдЕрдм рд▓рд┐рдВрдХ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдЪреЛрдЯ рд▓рдЧреА рдереА, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдерд╛ - рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕рдВрднрд╡ рдкреНрд░рдердо-рдХреНрд░рдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдЧрд░ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╣реИ рддреЛ рдЬрд╛рдВрдЪреЗрдВред рдЯрд╛рдЗрдкреЛ рд╕рдорд╛рд░реЛрд╣:
def get_possible_edits(word) letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split(//) res = [] for i in 0..(word.length-1) str = String.new(word) str[i] = '' res << str end for c in letters for i in 0..(word.length-1) next if word[i]==c str = String.new(word) str[i]=c res << str end end for c in letters for i in 0..(word.length) str = String.new(word).insert(i,c) res << str end end return res end
рдФрд░ рдбрд┐рдХреНрд╢рдирд░реА рдЦреЛрдЬ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рд▓рд╛рдЗрдиреЗрдВ рдЬреЛрдбрд╝реЗрдВ:
minimum_errors = 1
рдареАрдХ рд╣реИ, рд╣рдо рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдХреА рдЦреЛрдЬ рдХреЛ рдХрдо рдХрд░ рджреЗрдВрдЧреЗ, рдЗрд╕ рддрдереНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рдЗрд╕ рд╢рдмреНрдж рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ (рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╕рднреА рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ):
for offset in 0..15 do return {:word => result_word, :cost => result_cost} if ((result_cost<=offset) or (result_cost<=minimum_errors)) ... end
рдЗрд╕ рддрд░рд╣ рдХреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдиреЗ
187.in рдХреЛ 14 рдорд┐рдирдЯ,
12.in рд╕реЗ 64 рд╕реЗрдХрдВрдб рддрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рдпрд╛, рдФрд░
4.in рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рджреВрд╕рд░реЗ рд╡рд┐рднрд╛рдЬрди рдореЗрдВ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ (рдЬреЛ рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рддреНрд░реБрдЯрд┐ рд╡рд╛рд▓реЗ рд╢рдмреНрдж рдирд╣реАрдВ рд╣реИрдВ)ред рдЫреЛрдЯреА рдЬреАрддред рдЕрдм рдЖрдк рдЖрдЧреЗ рднреА рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реА рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рджреВрд╕рд░реЗ рдХреНрд░рдо рддрдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд╣рд▓реЗ рд╕реНрддрд░ рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬреНрдпрд╛рдорд┐рддреАрдп рд░реВрдк рд╕реЗ рдкреНрд░рд╢реНрди рдореЗрдВ рд╢рдмреНрдж рдХреА рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдмрдврд╝рддреА рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд╣рд▓реЗ рд╕реНрддрд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рд╣рдо рдХреЗрд╡рд▓ рдПрдХ рдХреЛрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
edits.each do |edit| edits2 = get_possible_edits(edit) edits2.each do |edit2| return {:word => edit2, :cost => 2} if dic[edit2.length] ? dic[edit2.length].include?(edit2) : false end end minimum_errors = 3
, рдлрд┐рд░ рдЖрд╕рд╛рдиреА рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ
12.in рдлрд╝рд╛рдЗрд▓ рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЛ рджрд╕ рдЧреБрдирд╛ рддрдХ
рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ ред рдЗрд╕ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдХрдо рд╢рдмреНрджреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИред рдореИрдВрдиреЗ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд▓рд╛рдн рдЙрдиреНрд╣реЗрдВ рдЙрди рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдЬрд╛рдВрдЪ рдХрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рд▓рдВрдмрд╛рдИ рдЫрд╣ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИ
if word.length<=6 edits.each do |edit| edits2 = get_possible_edits(edit) edits2.each do |edit2| return {:word => edit2, :cost => 2} if dic[edit2.length] ? dic[edit2.length].include?(edit2) : false end end minimum_errors = 3 end
рдлрд╝рд╛рдЗрд▓ 187.in рдкрд░, рдпрд╣ рддрддреНрд╡ рдЖрдкрдХреЛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХрд╛ рдПрдХ рдФрд░ 10% рдЦреЗрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рд╕рднреА рддреБрдЪреНрдЫ рдЕрдиреБрдХреВрд▓рди рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ рдЧрдгрд┐рдд рдореЗрдВ рдбреБрдмрдХреА рд▓рдЧрд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рдирд┐рд░реНрдгрдпред Iteration 5
рд▓реЗрд╡реЗрдиреНрд╢реЗрдЯрд┐рди рдХреА рджреВрд░реА рдЧрдгрд┐рдд рдореЗрдВ рдХреЛрдИ рдирдИ рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдирдХреЗ рдХрд╛рдо рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдЪреНрдЫреА рдЧрдгрд┐рддреАрдп рддреИрдпрд╛рд░реА, рдЕрдВрддрд╣реАрди рд╕рдордп рдФрд░ рдЕрдЯрд▓ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд░рд┐рд╢реНрддреЗрджрд╛рд░реЛрдВ рдореЗрдВ рдУрд▓рдВрдкрд┐рдпрди рджреЗрд╡рддрд╛ рдереЗред рдореИрдВрдиреЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╢рд╛рдо рдмрд┐рддрд╛рдИ, рдЧрдгрд┐рддреАрдп рдФрд░ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдЧрдгрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд┐рдпрд╛, рдЕрдВрддрддрдГ
рдЙрдХреЛрдиреЛрди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдкрд░ рдмрд╕ рдЧрдпрд╛ред
рдпрд╣рд╛рдВ, рдХреЛрдб рд▓рд┐рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдЧрдгрд┐рдд рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рд░ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рд╡рд░реНрдгрд┐рдд рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рд╢рд╛рдмреНрджрд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рдХреНрдпрд╛ рд╕рдордЭрд╛ рдФрд░ рдХреНрдпрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ред
рд▓реЗрд╡реЗрдВрд╕рд╣рд╛рдЗрдЯ рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрд╕ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдпрд╣ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд▓рдВрдмрд╡рдд рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рд╣реЛрддрд╛ рд╣реИ (рд╣рдо рд╕рд╛рдорд╛рдиреНрдпрддрд╛ рдирд╣реАрдВ рдЦреЛрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рд╣рдореЗрд╢рд╛ рд╢рдмреНрджреЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ)ред рд╣рдо рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдирд┐рдЪрд▓реЗ рджрд╛рдПрдВ рд╕реЗрд▓ рдореЗрдВ рдореВрд▓реНрдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЗрд╕рдХреА рдЧрдгрдирд╛ рдЕрдВрддрд┐рдо рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд╛рд▓рд┐рдХрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ! рдЙрдХреЛрдХреЛрди рд╡рд┐рдзрд┐ рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдХрдИ рд╡рд┐рдХрд░реНрдгреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред рдХрд┐рд╕ рд╡рд┐рдХрд░реНрдг рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдЪреБрдиреЗрдВ? рдпрд╣ рдореБрдЦреНрдп рдкреНрд░рд╢реНрди рд╣реИред
рд╣рдо рдореБрдЦреНрдп рд╡рд┐рдХрд░реНрдг рдХрд╣рддреЗ рд╣реИрдВ рдЬреЛ рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ рд╕реЗ рдмрд╛рд╣рд░ рдЖрддрд╛ рд╣реИред рдпрджрд┐ рд╢рдмреНрджреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдХреНрд╖рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕рдорд╛рди рд╣реИ, рддреЛ рдпрд╣ рд╣рдорд╛рд░реЗ рд╡рд╛рдВрдЫрд┐рдд рдирд┐рдЪрд▓реЗ рджрд╛рдПрдВ рдХреЛрдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЯрд┐рдХреА рд╣реБрдИ рд╣реИред рдЗрд╕ рд╡рд┐рдХрд░реНрдг рдХреА рдЧрдгрдирд╛ рд╣рдореЗрд╢рд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдЪрд╛рд╣реЗ рдХреБрдЫ рднреА рд╣реЛред рдХреБрд▓ рдХрд┐рддрдиреЗ рд╡рд┐рдХрд░реНрдгреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдореИрдВ рдЧрдгрд┐рддреАрдп рдФрдЪрд┐рддреНрдп рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЖрдиреБрднрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рддреАрди рд╡рд┐рдХрд░реНрдг рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рдпрджрд┐ рд╢рдмреНрдж рдХреА рд▓рдВрдмрд╛рдИ рдореЗрдВ рдЕрдВрддрд░ рдХрдо рд╕реЗ рдХрдо рджреЛ рдЕрдХреНрд╖рд░ рд╣реИ, рддреЛ рдореБрдЦреНрдп рдХреЗ рджрд╛рдИрдВ рдУрд░ рдХреЗ рд╕рднреА рд╡рд┐рдХрд░реНрдгреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЗрд╡рд▓ рдЙрд╕ рддрдХ рдХреА рдЬрд╛рддреА рд╣реИ рдЬреЛ рдирд┐рдЪрд▓реЗ рджрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдореБрдЭреЗ рдпрд╛рдж рд╣реИ, рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рдмреНрдж рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде, рдЕрдм рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ)ред

рдпрджрд┐ рд╢рдмреНрдж рдПрдХ рдЕрдХреНрд╖рд░ рд╕реЗ рд▓рдВрдмрд╛рдИ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдПрдХ рд╡рд┐рдХрд░реНрдг рдХреЛ рдореБрдЦреНрдп рдХреЗ рдмрд╛рдИрдВ рдУрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрджрд┐ рд╢рдмреНрдж рд▓рдВрдмрд╛рдИ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВ, рддреЛ рдПрдХ рд╡рд┐рдХрд░реНрдг рдХреЛ рдмрд╛рдИрдВ рдУрд░ рдФрд░ рдореБрдЦреНрдп рдХреЗ рджрд╛рдИрдВ рдУрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдореБрдЦреНрдп рд╡рд┐рдХрд░реНрдг рдХреЛ рд╣рд░реЗ рд░рдВрдЧ рдореЗрдВ, рдкреАрд▓реЗ рд░рдВрдЧ рдореЗрдВ рдЧрдгрдирд╛ рд╡рд╛рд▓реЗ рдФрд░ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЯреЗрдмрд▓ рдЧрдгрдирд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдирдП рд╕реЗрд▓ рдХреЗ рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЙрд╕рдХреЗ рдЖрд╕-рдкрд╛рд╕ рдХреЗ рддреАрдиреЛрдВ (рдиреНрдпреВрдирддрдо рд╕рдВрдХреНрд░рдордг рд▓рд╛рдЧрдд рдЧреБрдгрд╛рдВрдХ) рдХреЗ рдиреНрдпреВрдирддрдо рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕реНрдХрд┐рдк рдХреА рдЧрдИ рдХреЛрд╢рд┐рдХрд╛рдПрдВ рдЧрдгрдирд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рди рдХрд░реЗрдВ, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 50ред рдКрдкрд░реА рдмрд╛рдПрдВ рд╕реЗрд▓, рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рд╢реВрдиреНрдп рд╕реЗ рдЖрд░рдВрднрд┐рдХ рд╣реИред рдХреЛрдб рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
def min3(a,b,c) m = a < b ? a : b return m < c ? m : c end def calc_levenshtein_distance(s,t) return calc_levenshtein_distance(t,s) if s.length<t.length n = s.length m = t.length return m if n==0 return n if m==0 d = Array.new(m+1).map!{Array.new(n+1).map!{50}} d[0][0]=0 p = (n==m) ? 1 : 0
рд╕реБрдзрд╛рд░ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ,
187.in рд╕рд┐рд░реНрдл 6 рдорд┐рдирдЯ рдореЗрдВ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдФрд░
12.in - 25 рд╕реЗрдХрдВрдб рдореЗрдВред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдХреБрдЫ рдФрд░ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдкрд╛рдВрдЪрд╡реЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд╛ рдкреВрд░рд╛ рдкрд╛рда
рдпрд╣рд╛рдБ рд╣реИ ред
рдирд┐рд░реНрдгрдпред рдЧрд░реНрднрд╛рдзрд╛рди рем
рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреИрд╕реЗ рддреЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рддреНрд╡рд░рд┐рдд рд╣реИ? рдареАрдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕реЗ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЙрди рд╢рдмреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрд╡реЗрдВрд╕рд╣рд╛рдЗрдЯ рджреВрд░реА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд░рд╛рд╢рд┐ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рдХрдо рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЧрддрд┐ рдореЗрдВ рдХреБрдЫ рд▓рд╛рдн рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдФрд░ рд▓реЗрд╡реЗрдиреНрд╕рд╣рд╛рдЗрдЯ рджреВрд░реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рднреА рддреЗрдЬреА рд╕реЗред рдореИрдВ рдЖрджрд░реНрд╢ рд╣реЛрдиреЗ рдХрд╛ рджрд┐рдЦрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдХреБрдЫ рд▓реЗрдХрд░ рдЖрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рдореИрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рд╢рдмреНрдж рдХреЗ рд▓рд┐рдП 26 рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдЗрд╕ рд╢рдмреНрдж рдореЗрдВ рдЕрдВрдЧреНрд░реЗрдЬреА рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдХреНрд╖рд░ рдХреЛ рдХрд┐рддрдиреА рдмрд╛рд░ рдорд┐рд▓рд╛ред рдЗрди рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджреЛ рд╢рдмреНрджреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреА рдЧрдгрдирд╛ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рдВрдЧрдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЕрдВрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
def arr_diff(a1,a2) res = 0 for i in 0..25 do res += (a1[i]-a2[i]).abs end return res end
рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЕрдВрддрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рд▓реЗрд╡реЗрдВрд╕рд╣рд╛рдЗрдЯ рджреВрд░реА рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рддреЗрдЬреА рд╕реЗ рдЧрдгрдирд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рд╡рд╣ рдХреИрд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдРрд╕реЗ рд╣реИрд╢ рдореЗрдВ рдЕрдВрддрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрд╡рдиреНрд╕рд╣рд╛рдЗрдЯ рджреВрд░реА рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддреА рд╣реИ? рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрдиреЗрдХреНрд╢рди рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд╢рдмреНрдж рдореЗрдВ рдПрдХ рдЕрдХреНрд╖рд░ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдФрд░ рд╣рдЯрд╛рдирд╛ рдЗрди рджреЛрдиреЛрдВ рдЕрд░реНрдереЛрдВ рдореЗрдВ рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐ рд╢рдмреНрдж рдореЗрдВ рджреЛ рдЕрдХреНрд╖рд░ рдЖрдкрд╕ рдореЗрдВ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ, рддреЛ рдореВрд▓ рд╢рдмреНрдж рд╕реЗ рдирдП рд╢рдмреНрдж рдХреА рд▓реЗрд╡реЗрдиреНрд╕рд╣рд╛рдЗрдЯ рджреВрд░реА 2 рд╣реЛ рдЬрд╛рдПрдЧреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдЕрдВрддрд░ рд╢реВрдиреНрдп рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдХреНрд╖рд░реЛрдВ рдХреА рд░рдЪрдирд╛ рд╕рдВрд░рдХреНрд╖рд┐рдд рд╣реИред рдФрд░ рдЕрдЧрд░ рд╣рдо рд╢рдмреНрдж рдХреЛ рдЕрдХреНрд╖рд░ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдВрддрд░ 2 рд╕реЗ рдмрдврд╝ рдЬрд╛рдПрдЧрд╛, рдЬрдмрдХрд┐ рд▓реЗрд╡реЗрдВрд╕рд╣рд╛рдЗрдЯ рдХреА рджреВрд░реА рдХреЗрд╡рд▓ 1 рд╣реЛрдЧреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░,
рдиреАрдЪреЗ рд╕реЗ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рдмрд▓реНрдХрд┐ рдХрдордЬреЛрд░ рд╣реИ: рд╢рдмреНрдж рдореЗрдВ рд▓рдВрдмрд╛рдИ рдХреЗ рдЕрдВрддрд░ рдХреЛ рдШрдЯрд╛рддреЗ рд╣реБрдП, рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрд╡реЗрдВрд╕рд╣рд╛рдЗрдЯ рджреВрд░реА рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рдкрддреНрд░, рд▓реЗрдХрд┐рди рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдЕрдВрддрд░ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ (рдХреЗрд╡рд▓ рдирд┐рдореНрди рд╕реАрдорд╛ рдЬреЛ рд╣рдо рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рд╣реИ, рдЕрдЧрд░ рд╢рдмреНрдж рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рд╡рд┐рд╖рдо рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрд╡реЗрди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╡рд┐рд╖рдо рд╕рдВрдЦреНрдпрд╛ред рдореИрдЯ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рдФрд░
рдКрдкрд░ - рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рд▓реЗрд╡реЗрдВрд╕рд╣реЗрдЯрд┐рди рдХреА рджреЛрд╣рд░реА рджреВрд░реА рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдкреВрд░реНрд╡рдЧрд╛рдореА рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдпрд╣ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд▓реЗрд╡реЗрдиреНрд╕рд╣рд╛рдЗрдЯрд┐рди рджреВрд░реА рдХреЗ рд╕рд╛рде рджреЛ рд╢рдмреНрджреЛрдВ рдХреЗ рд▓рд┐рдП рдФрд░
рдСрдлрд╕реЗрдЯ рдореЗрдВ рд▓рдВрдмрд╛рдИ рдореЗрдВ рдЕрдВрддрд░ рд╣реИ, рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рд╕реАрдорд╛
[2, рдЕрдВрддрд░ * рдСрдлрд╕реЗрдЯ] рдореЗрдВ рд╣реЛрдЧрд╛ ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдиреАрдЪреЗ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдХрд┐рд╕реА рд╢рдмреНрдж рдореЗрдВ рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдЕрдиреБрдорд╛рди рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдЖрджреЗрд╢ рдХреЗ рд╕рднреА рдЯрд╛рдЗрдкреЛ рдХреЛ рдорд╛рдирдХрд░ рдПрдХ рд╢рдмреНрдж рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИ, рддреЛ рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдо рд╕реЗ рдХрдо рджреЛ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ)ред рдпрджрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рдФрд░ рд╢рдмреНрдж рд▓рдВрдмрд╛рдИ рдореЗрдВ рдЕрдВрддрд░ рд╡рд┐рд╖рдо рд╣реИ (рдЕрд░реНрдерд╛рдд, рдХрд┐рд╕реА рд╢рдмреНрдж рдореЗрдВ рд▓рдВрдмрд╛рдИ рдХреЗ рдЕрдВрддрд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдо рд╕реЗ рдХрдо N рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдФрд░ N рд╡рд┐рд╖рдо рднреА рд╣реИрдВ), рддреЛ рд╢рдмреНрдж рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдиреНрдпреВрдирддрдо рд╕рдВрднрд╡ рдЕрдВрддрд░ рдХреЛ рдПрдХ рд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ -
[рдСрдлрд╕реЗрдЯ + (min_errors - рдСрдлрд╕реЗрдЯ) )% 2, 2 * рдЕрдВрддрд░ - рдСрдлрд╕реЗрдЯ] (рд╕рдо рдПрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрд╡реЗрдВрд╕рд╣рд╛рдЗрдЯ рдХреА рдПрдХ рднреА рд╕рдВрдЦреНрдпрд╛ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рдХреНрд░рдордкрд░рд┐рд╡рд░реНрддрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдЬреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИ)ред
рдЗрд╕ рдЬреНрдЮрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрд╡реЗрдВрд╢рд┐рди рджреВрд░реА рдЧрдгрдирд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджрд┐рдП рдЧрдП рд╢рдмреНрджреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рдкрдврд╝рддреЗ рд╕рдордп рд╢рдмреНрджрдХреЛрд╖реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рддреБрд░рдВрдд рдирд╣реАрдВ рдЧрд┐рдирд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддрд╛рдХрд┐ рд╢реЙрд░реНрдЯ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЧрдгрдирд╛ рди рдХрд░реЗрдВ, рдЬрдм рдкрдврд╝рдиреЗ рд╕реЗ рд╣рдо рдХреЗрд╡рд▓ рд╕рдВрдмрдВрдзрд┐рдд рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдЖрд░рдВрдн рдХрд░реЗрдВрдЧреЗ:
dictionary = {} dic_words.each do |w| dictionary[w.length] ||= {} dictionary[w.length][w] = Array.new(26,0) end
рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд╕рд╛рде рд╡рд░реНрддрдорд╛рди рд╢рдмреНрдж рдХреА рдкреНрд░рддреНрдпреЗрдХ рддреБрд▓рдирд╛ рдкрд░, рд╣рдо рдкрд┐рдЫрд▓реЗ рддреБрд▓рдирд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЬрд╛рдирддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 3 рдХреА рдЦреЛрдЬ рд╕реЗ рджреВрд░реА рдХреЗ рд╕рд╛рде рдПрдХ рд╢рдмреНрдж рдкрд╛рдпрд╛ рд╣реИ, рддреЛ рдЕрдзрд┐рдХ рджреВрд░реА рд╡рд╛рд▓реЗ рд╢рдмреНрдж рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХреЛрдИ рд░реБрдЪрд┐ рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╢рдмреНрджреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдбрд┐рдХреНрд╢рдирд░реА рд╕рд░реНрдЪ рдлрдВрдХреНрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
def find_word(word, dic) if dic[word.length] return {:word => word, :cost => 0} if dic[word.length].include?(word) end minimum_errors = 1
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐
187.in рдлрд╛рдЗрд▓ рдХреЛ 66 рд╕реЗрдХрдВрдб (
12.in - 5.5 рд╕реЗрдХрдВрдб) рдореЗрдВ
рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдкрд╣рд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рджрд┐рдЦрд╛рдП рдЧрдП рд╕рдордп (рдпрд╛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЖрдкрдХреЛ
david_22719.in рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдШрдВрдЯреЛрдВ рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдлреЗрд╕рдмреБрдХ рдмреЙрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред
рдирд┐рд░реНрдгрдпред Iteration 7
рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВрдиреЗ рдЭрд╛рдВрд╕рд╛ рджрд┐рдпрд╛ред рдореБрдЭреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рддреЗрдЬреА рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд░реВрдмреА рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг 1.8.6 рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рддрдХрдиреАрдХреА рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдирд╛ рдкрдбрд╝рд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкрд╛рдпрд╛ рдХрд┐ рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░ (рдП? рдмреА: рд╕реА) рдкрд╛рд░рдВрдкрд░рд┐рдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬ рд╣реИ рдЕрдЧрд░-рдФрд░ред рдореИрдВрдиреЗ рд╕реАрдЦрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдмрджрд╕реВрд░рдд рдЧрдгрдирд╛ рдЖрдкрдХреЛ рдЕрд╕реНрдерд╛рдпреА рдЪрд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд▓реНрдк рд╕реЗ рдПрдХ рд╡рд┐рднрд╛рдЬрди рджреВрд╕рд░рд╛ рдЬреАрддрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдорд┐рдердХ рдХрд╛ рдЦрдВрдбрди рдХрд┐рдпрд╛ рдХрд┐ рдЫреЛрдЯреЗ рдЪрд░ рдирд╛рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЗрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдПрдХ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдкреВрд░реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛ рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ... рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХреБрдЫ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдпрд╛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдореЗрдореЛрд░реА рдПрд▓реЛрдХреЗрд╢рди рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдореЗрдВ рдХреЛрдб рдЪрд╛рдЯ рдХреЗ рдХрдИ рдШрдВрдЯреЛрдВ рдиреЗ рдореБрдЭреЗ рд╕реЗрдХрдВрдб рдХреЗ рдПрдХ рдФрд░ рдЬреЛрдбрд╝реЗ рдХреЛ рдЦреЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреА, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛ рдмреЙрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдорд┐рд▓рддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рдореИрдВрдиреЗ рд╣рд╛рд░ рдорд╛рди рд▓реАред
рдирд┐рд░реНрдгрдпред рд╕рдлреЗрдж рдЭрдВрдбрд╛
рдореИрдВрдиреЗ рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд╛рд░ рди рдорд╛рдирдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рд░реВрдмреА рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдЦрд╛рд░рд┐рдЬ рдХрд░ рджрд┐рдпрд╛ред рдХрдо рд╕реЗ рдХрдо рд╢реБрджреНрдз рд░реВрдмреА рдореЗрдВ ... рд╣рд╛рдБ, рдЖрдк рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭ рдЧрдП, рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рдзреЛрдЦрд╛ рджреЗрдиреЗ рдФрд░ рд╕реА рдХреА рд╢рдХреНрддрд┐ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдореИрдиреБрдЕрд▓ рдХреЛ рд╕реНрдореЛрдХреНрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдПрдХ рд░реВрдмреА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦрд╛, рдЬреЛ рджреЛ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрд╡реЗрдиреНрд╕реЗрдЯрд┐рди рджреВрд░реА рдорд╛рдирддрд╛ рд╣реИред
#include <ruby.h> #ifndef max #define max( a, b ) ( ((a) > (b)) ? (a) : (b) ) #endif #ifndef min #define min( a, b ) ( ((a) < (b)) ? (a) : (b) ) #endif void Init_levenshtein(); VALUE distance(VALUE self, VALUE rwm, VALUE rwn); void Init_levenshtein() { VALUE cLevenshtein = rb_define_class("Levenshtein",rb_cObject); rb_define_singleton_method(cLevenshtein, "distance", distance, 2); } VALUE distance(VALUE self, VALUE rwm, VALUE rwn) { char *wm, *wn; int res; wm = StringValuePtr(rwm); wn = StringValuePtr(rwn); res = LeveDist(wm,wn); return INT2NUM(res); } int min3(int a, int b, int c) { int Min = a; if (b < Min) Min = b; if (c < Min) Min = c; return Min; } int LeveDist(char *s, char *t) { char* wm; char* wn; int m, n, q, p, cost, i, j; int loop1, loop2; char* d; int res = -1; if (strlen(s) > strlen(t)) { wm = t; wn = s; } else { wm = s; wn = t; } m = strlen(wm); n = strlen(wn); d = calloc((m + 1)*(n + 1),sizeof(char)); memset(d, 50, (m + 1)*(n + 1)); p = (n==m) ? 1 : 0; q = (nm<=1)? 1 : 0; *d = 0; loop1 = min(n, n - m + p); for (j = 1; j <= loop1; j++) *(d + j) = *(d + j - 1) + 1; for (i = 1; i <= m; i++) { loop2 = min(n, i + n - m + p); for (j = (iq); j <= loop2; j++) { if (j == 0) { *(d + i * (n + 1) + j) = *(d + (i - 1)*(n + 1) + j) + 1; } else { cost = 1; if (*(wm + i - 1) == *(wn + j - 1)) cost = 0; *(d + i * (n + 1) + j) = min3(*(d + (i - 1)*(n + 1) + j) + 1, *(d + i * (n + 1) + j - 1) + 1, *(d + (i - 1)*(n + 1) + j - 1) + cost); } } } res = *(d + m * (n + 1) + n); free(d); return res; }
рдЦреИрд░, рдлрд┐рд░ рдпрд╣ рдиреАрдЪреЗ рдЖрдпрд╛: require 'levenshtein' ... Levenshtein.distance(word,dic_word)
рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЫрдареЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдореЗрд░рд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдЕрдиреБрдХреВрд▓рди, рдореБрдЦреНрдп рдмреНрд░реЗрдХ рдмрди рдЧрдпрд╛, рдФрд░ рдЗрд╕реЗ рдЕрдирд┐рдЪреНрдЫрд╛ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ (рдЗрд╕реЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд▓рдЧрд╛)редрдирд┐рд░реНрдгрдпред рдЬреАрдд!
рдореБрдЭреЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдореИрдВрдиреЗ рдЕрдВрддрддрдГ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдореА рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдирд╣реАрдВ рдХреАред рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд рдПрдХ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рдмреЙрдЯ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдХреЗ рдмрд╛рдж рдореЗрд▓рдмреЙрдХреНрд╕ рдкрд░ рдирд┐рдореНрди рдлреЙрд░реНрдо рдХрд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ:рдлреЗрд╕рдмреБрдХ рдкрд░ рдПрдХ рдкрд╣реЗрд▓реА рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рд╢реНрд╡рд╛рд╕рдирд▓реА рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рдж (25 рдЬрдирд╡рд░реА, 2011 рдХреЛ 3:04 рдмрдЬреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛), рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рд╣реА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИред рдЖрдкрдХрд╛ рд╕рдорд╛рдзрд╛рди 5097.469 рдПрдордПрд╕ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕рдмрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЪрд▓рд╛ред
рдпрд╣, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕реА рдореЗрдВ рдкреВрд░реНрдг рдЦреЛрдЬ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреАрди рдЧреБрдирд╛ рдзреАрдорд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рддреЗрдЬрд╝ рд╣реИрдирд┐рд╖реНрдХрд░реНрд╖
рдЕрдВрдд рдореЗрдВ, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред рдкрд╛рда рдХреА рдЗрд╕ рддрд░рд╣ рдХреА рджреАрд╡рд╛рд░ рдХреЗ рдмрд╛рдж, рдпрд╣ рдереЛрдбрд╝рд╛ рдиреИрддрд┐рдХ рд░реВрдк рд╕реЗ рдкрд╛рдк рдХрд░рдирд╛ рдкрд╛рдк рдирд╣реАрдВ рд╣реИред рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХреЛрдб рдХреА рд╕рднреА рд╕рдВрдЧрдгрдирд╛рдУрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рд╕реАрдзреЗ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЪрд▓реЗ рдЧрдП рд╣реИрдВ, рдпрд╣ рд▓реЗрдЦ рдСрдирд▓рд╛рдЗрди рд╕рд╛рдВрд╕ рд▓реЗрдиреЗ рд╡рд╛рд▓реЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рд╡рд╣ рд░реВрдмреА рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рдЦреЛрдЬрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рд╣рдо рд╕рднреА рдХрд╛ рдХрд░реНрддрд╡реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдВред рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдкрд╣рд▓рд╛ рд╕рдорд╛рдзрд╛рди рднреЗрдЬрддреЗ рд╣реИрдВ рдЬреЛ рд╡реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдХреА рдкреНрд░рднрд╛рд╡рд╢реАрд▓рддрд╛, рдкреНрд░рджрд░реНрд╢рди, рд╕реБрдВрджрд░рддрд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдмрд╕ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ - рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрд╕рд╛рдзрди рд╣реИрдВ, рдФрд░ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдкреНрд░рдерд╛ рджрд┐рдорд╛рдЧ рдХреЛ рдЬрдВрдЧ рд▓рдЧрд╛ рджреЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдордп-рд╕рдордп рдкрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рдорд╛рди рд╢реБрд▓реНрдХ рджреЗрдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред рдорди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрд╛ рдореБрдЦреНрдп рд╣рдерд┐рдпрд╛рд░ рд╣реИ, рдФрд░ рдирд╛рдЗрдЯ рдХреА рддрд▓рд╡рд╛рд░ рдХреА рддрд░рд╣ рд╣реИредрдЗрд╕реЗ рддреЗрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд▓рдбрд╝рд╛рдИ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред- (Core-i7 2.66 GHz)
- ,
- , , - , Ruby -
- , facebook-
- facebook-
- snack- ( thrift-), ,
- рд╕реА рдореЗрдВ рдЖрдк рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ 187.in рдлрд╛рдЗрд▓ рдХреЛ рд╕реЗрдХрдВрдб рдХреЗ рдХреБрдЫ рджрд╕рд╡реЗрдВ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдЖ
- рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕рдордп рдорд╛рдкрди рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ