рдЕрдЬрдЧрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рдкреГрд╖реНрдарднреВрдорд┐
рдЕрдЬрдЧрд░ рдПрдХ рдорд╣рд╛рди рднрд╛рд╖рд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА: рд╕реНрдХреВрд▓ рдореЗрдВ рдкрд╛рд╕реНрдХрд▓; рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдп рдореЗрдВ рд╕реА, рд╕реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде, рд╕реА ++ред рдЕрдВрддрд┐рдо рджреЛ (рддреАрди) рдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЛ рдПрдХ рдордЬрдмреВрдд рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рджрд┐рдпрд╛: рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдЖрд╡рдВрдЯрди рдФрд░ рд╡рд┐рдзреНрд╡рдВрд╕рдХ (рдЕрддреАрдд рдХреЗ рдбрд░рд╛рд╡рдиреЗ рд╢рдмреНрдж) рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдкреНрд░рд╛рдЗрдореЗрдЯрд┐рд╡ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВред рдореЗрд░реА рд░рд╛рдп рд╣реИ рдХрд┐ рд╕реА рд╢реИрдХреНрд╖рд┐рдХ рдФрд░ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ (рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧрдгрд┐рдд рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ)ред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рд╡реЗ рдореБрдЭ рдкрд░ рдЖрдкрддреНрддрд┐ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдореИрдВ рдХрд┐рд╕реА рдкрд░ рдХреБрдЫ рднреА рдереЛрдкрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдХреЗрд╡рд▓ рдЕрдкрдиреА рд░рд╛рдп рд╡реНрдпрдХреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдЕрдЬрдЧрд░ рдПрдХ рдмрд╛рд░ рдПрдХ рд░рд╣рд╕реНрдпреЛрджреНрдШрд╛рдЯрди рдерд╛ред рдЕрдкрдиреЗ рдЬреАрд╡рди рдореЗрдВ рдкрд╣рд▓реА рдмрд╛рд░, рдореИрдВрдиреЗ рд╕реА рдореЗрдВ рдкреНрд░рдерд╛рдЧрдд рд╣реЛрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рдХрдИ рд╕реНрддрд░ рд▓рд┐рдЦреЗред рдХрд╛рд░реНрдп рдФрд░ рдХреЛрдб рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдкрд╣рд▓реЗ рдХреА рддрд░рд╣ рдХрдо рд╣реЛ рдЧрдИ рд╣реИред
рдЕрдЧрд░ рдореИрдВ рдЕрдЪрд╛рдирдХ NIST рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдерд╛, рддреЛ рдореИрдВ рд╢рд╛рдпрдж рдкрд╛рдпрдерди рдореЗрдВ рдпрд╣ рд╕рдм рдХрд░ рд╕рдХрддрд╛ рдерд╛ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рд░реНрдп рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: рд▓рдВрдмрд╛рдИ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИ рдХрдИ (> = 10) рдореЗрдЧрд╛рдмрд╛рдЗрдЯ, рдЗрд╕ рд╕рд░рдгреА рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИред
рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ?
рдПрд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЬрдЧрд░ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЦрд╕реНрддрд╛ рдкреИрдХреЗрдЬ рд╣реИ, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рддреЗрдЬреА рд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдЬреИрд╕реЗ рд▓реИрдкреИрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреВрд░реЗ рд╕рдЬреНрдЬрди рдХрд╛ рд╕реЗрдЯ рдЙрдкрд▓рдмреНрдз рд╣реИ (Sympy, Numpy, Scipy, Matplotlib), рдЖрдк рдФрд░ рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
рд╣рд░ рдХреЛрдИ рдЬреЛ рд╕реБрдиреНрди рд╕реЗ рдирд┐рдкрдЯ рдЧрдпрд╛ рд╣реИ, рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд░ рдЪреАрдЬ рдореЗрдВ рдирд╣реАрдВред рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдСрдкрд░реЗрд╢рди рд╡реЗрдХреНрдЯрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрд░ рдореЗрдВ), рдЕрд░реНрдерд╛рддреНред рдПрдХ рдЕрд░реНрде рдореЗрдВ, рдкреВрд░реЗ рд╕рд░рдгреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рдиред рдпрджрд┐ рдЕрдЪрд╛рдирдХ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдЗрд╕ рдкреНрд░рддрд┐рдорд╛рди рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕рдорд╕реНрдпрд╛ рд╣реИред
рдореИрдВ рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рдЧреИрд░-рд╡реЗрдХреНрдЯрд░рдХреГрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ? рд╣рд╛рдВ, рдХрдо рд╕реЗ рдХрдо рд╕рдорд╛рди NIST рд▓реЗрдВ: рдмрд░реНрд▓реЗрдХреИрдВрдк-рдореЗрд╕реНрд╕реА рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░реИрдЦрд┐рдХ рдмрджрд▓рд╛рд╡ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреА рд▓рдВрдмрд╛рдИ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ; рд▓рдЧрд╛рддрд╛рд░ рдЗрдХрд╛рдЗрдпреЛрдВ рдФрд░ рдЗрддрдиреЗ рдкрд░ рд╕рдмрд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рдХреА рд▓рдВрдмрд╛рдИ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВред рдореИрдВ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рдХрдо рдХрд░ рджреЗрдЧрд╛ред
рдЪрддреБрд░рд╛рдИ рд╕реЗ?рдЙрд╕реА рдПрдирдЖрдИрдПрд╕рдЯреА рд╕реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ: рдЕрдиреБрдХреНрд░рдо рдХреЗ "рд╕реНрд╡рд┐рдЪ" рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЬрд╣рд╛рдВ "рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ" рд╕реЗ рдореЗрд░рд╛ рдорддрд▓рдм рд▓рдЧрд╛рддрд╛рд░ рдЗрдХрд╛рдЗрдпреЛрдВ (... 1111 ...) рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рд╢реВрдиреНрдп (... 000) рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реИред ), рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдореВрд▓ рддрддреНрд╡ рдХреЛ рдЕрдВрддрд┐рдо рддрддреНрд╡ (x [: -1]) рдХреЗ рдмрд┐рдирд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдореЗрдВ рд╕реЗ рдШрдЯрд╛рдХрд░ рдЕрдиреБрдХреНрд░рдо 1 (x [2:]) рджреНрд╡рд╛рд░рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдкрд░рд┐рдгрд╛рдореА рдирдП рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдЧреИрд░-рдЕрдХреНрд╖реАрдп рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рдПрдХ рд╕рд╛рде рджрд┐рдЦреЗрдВрдЧреЗ:
np.count_nonzero(x[:-1] - x[1:])
рдпрд╣ рдорди рдХреЗ рд▓рд┐рдП рдПрдХ рдордиреЛрд░рдВрдЬрдХ рдХрд╕рд░рдд рдХреА рддрд░рд╣ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдХреБрдЫ рдЕрд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдпрд╣рд╛рдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдПрдХ рдЪрд╛рд▓ рдЬреЛ рдХреБрдЫ рд╕рдордп рдХреЗ рдмрд╛рдж рдкрд╛рдардХ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛрдЧреАред рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдзреАрдорд╛ рд╣реИ - рдХрд┐рд╕реА рдиреЗ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рд░рджреНрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдкрд╛рдпрдерди рдореЗрдВ рдЧреИрд░-рд╡реЗрдХреНрдЯрд░рдХреГрдд рд╕рдВрдЪрд╛рд▓рди рдПрдХ рд▓рдВрдмрд╛ рд╕рдордп рд╣реИред рдпрджрд┐ рдЦрд╕реНрддрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рддреЛ рдЙрдирд╕реЗ рдХреИрд╕реЗ рдирд┐рдкрдЯреЗрдВ? рдЖрдорддреМрд░ рдкрд░ рд╡реЗ рдХрдИ рд╕рдорд╛рдзрд╛рди рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВ:
- Numba JITред рдЕрдЧрд░ рд╡рд╣ рдиреБрдореНрдмрд╛ рд╢реАрд░реНрд╖рдХ рдкреГрд╖реНрда рдкрд░ рд╡рд░реНрдгрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╣рд╛рдиреА рдЦрддреНрдо рдХрд░рдирд╛ рд╕рд╛рд░реНрдердХ рд╣реЛрдЧрд╛ред рдореИрдВ рдЕрддреАрдд рдХреЛ рдереЛрдбрд╝рд╛ рднреВрд▓ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдЙрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдЧрд▓рдд рд╣реБрдЖ рдерд╛; рд▓рдмреНрдмреЛрд▓реБрдЖрдм рдпрд╣ рд╣реИ рдХрд┐ рддреНрд╡рд░рдг рдЙрддрдирд╛ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдирд╣реАрдВ рдерд╛ рдЬрд┐рддрдирд╛ рдореБрдЭреЗ рдЙрдореНрдореАрдж рдереА, рдЕрдлрд╕реЛрд╕ред
- Cythonред рдареАрдХ рд╣реИ, рдЕрдкрдиреЗ рд╣рд╛рдереЛрдВ рдХреЛ рдЙрдард╛рдПрдВ рдЬреЛ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рд╛рдЗрдерди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрдВрджрд░, рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдЕрдЬрдЧрд░ рдХреЗ рдмрд╣реБрдд рдЕрд░реНрде рдФрд░ рдЖрддреНрдорд╛ рдХреЛ рдирд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ? рдореБрдЭреЗ рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛; рдпрджрд┐ рдЖрдк рд╕рд╛рдЗрдерди рдХреЛ рдорд┐рд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦреБрдж рдХреЛ рдмреЗрд╡рдХреВрдл рдмрдирд╛рдирд╛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдХрдо рдкрд░рд┐рд╖реНрдХреГрдд рдЬреИрд╕реЗ рд╕реА ++ рдФрд░ рд╕реА рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рд╕реА рдореЗрдВ рдЕрдбрд╝рдЪрдиреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдкреНрдпрд╛рд░реЗ рдкрд╛рдпрдерди рд╕реЗ рджреЗрдВред рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдкреВрд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ - рдпрд╣ рд╕рдм рдЧрдгрдирд╛ рдФрд░ рдмрд╛рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ? рд╢реА рди рдЪрдврд╝рд╛рддрд╛ рд╣реИ! рдореИрдВ рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдПрдХ, рдмрд▓реНрдХрд┐ рджреЛ рднрд╛рд╖рд╛рдУрдВ - рдкрд╛рдпрдерди рдФрд░ рд╕реАред
рдпрд╣рд╛рдБ рдЬреВрд▓рд┐рдпрд╛ рдЖрддреА рд╣реИ!
рдореМрдЬреВрджрд╛ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЪрд┐рдВрддрди рдХрд░рдиреЗ рдФрд░ рдХреБрдЫ рднреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдкрд╛рдП рдЬрд╛рдиреЗ (рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдЕрд╕рдорд░реНрде) рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреБрдЫ "рддреЗрдЬ" рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрджрд┐ рдЖрдк 21 рд╡реАрдВ рд╕рджреА рдореЗрдВ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде "рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдереНрд░реЗрд╢рд░" рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╡реЗрдХреНрдЯрд░ рдХрд┐рдП рдЧрдП рдСрдкрд░реЗрд╢рди "рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░", рдЖрджрд┐ред рдЖрджрд┐, рддреЛ рдЖрдкрдХреА рдкрд╕рдВрдж рдмрд╣реБрдд рдШрдиреА рдирд╣реАрдВ рд╣реИ:
- рдлреЛрд░рдЯреНрд░рд╛рди ред рдФрд░ рд╣рдБрд╕реЛ рдордд, рд╣рдордореЗрдВ рд╕реЗ рдХрд┐рд╕рдиреЗ рдЕрдкрдиреА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛рдУрдВ рд╕реЗ BLAS / LAPACK рдирд╣реАрдВ рдирд┐рдХрд╛рд▓рд╛? рдлреЛрд░рдЯреНрд░рд╛рди SCIENTIFIC рдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ (рдмреЗрд╣рддрд░ SI!) рднрд╛рд╖рд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдХрд┐ рдлреЛрд░рдЯреНрд░рд╛рди рдХреЗ рд╕рдордп рд╕реЗ рдХрдИ рдЪреАрдЬреЛрдВ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ; рдореИрдВ рдХреБрдЫ рдФрд░ рдЖрдзреБрдирд┐рдХ рдХреА рдЙрдореНрдореАрдж рдХрд░ рд░рд╣рд╛ рдерд╛ред
- рдЖрд░ рдкрд╛рдпрдерди (рд╡реИрд╢реНрд╡реАрдХрд░рдг) рдЬреИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реИред
- рдорддрд▓рд╛рдм - рд╢рд╛рдпрдж рд╣рд╛рдВ, рдореЗрд░реЗ рдкрд╛рд╕ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд╕реЗ рдирд╣реАрдВ рд╣реИрдВред
- рдЬреВрд▓рд┐рдпрд╛ - рдШреЛрдбрд╝рд╛ рдЕрдВрдзреЗрд░рд╛ рд╣реИ, рджреВрд░ рд▓реЗ рдЬрд╛рдПрдЧрд╛, рджреВрд░ рдирд╣реАрдВ рд▓реЗ рдЬрд╛рдПрдЧрд╛ (рдФрд░ рдпрд╣ рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг 1.0 рддрдХ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдерд╛)
рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд▓рд╛рдн
- рдпрд╣ рдкрд╛рдпрдерди рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╣реА "рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп" рдПрдХ, рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдмрд┐рдЯреНрд╕ рддрдХ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред
- рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди рдФрд░ рдкрд╕рдВрдж рдХреЗ рд╕рд╛рде рдХреЛрдИ рдЙрдкрджреНрд░рд╡ рдирд╣реАрдВред
- рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реАред рдкреНрд░рдХрд╛рд░ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдмрд╣реБрдд рдХрдо рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рд▓реЗрдХрд┐рди рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВред
- рдХрд╕реНрдЯрдо рдкреНрд░рдХрд╛рд░ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдЬреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рдорд╛рди рддреЗрдЬрд╝ рд╣реЛрдЧрд╛ред
- рдмрд╣реБ рдкреНрд░реЗрд╖рдгред рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдШрдВрдЯреЛрдВ рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЗрд░реА рд░рд╛рдп рдореЗрдВ - рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬреЛ рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рдкрд╛рд╕ рд╣реИ, рдпрд╣ рд╕рднреА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рднрд╛рд╖рд╛ рдХреЗ рджрд░реНрд╢рди рдХрд╛ рдЖрдзрд╛рд░ рд╣реИред
рдХрдИ рдкреНрд░реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХрдИ рдЪреАрдЬреЗрдВ рдмрд╣реБрдд рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИрдВред
рдПрдХрд╛рдзрд┐рдХ рдкреНрд░реЗрд╖рдг рдЙрджрд╛рд╣рд░рдг rand() # 0 1 rand(10) # 10 0 1 rand(3,5) # 3 5 .... using Distributions d = Normal() # 0, 1 rand(d) # rand(d, 10) # 10 ...
рдпрд╣реА рд╣реИ, рдкрд╣рд▓рд╛ рддрд░реНрдХ рдХрд┐рд╕реА рднреА (рдПрдХ-рдЖрдпрд╛рдореА) рд╡рд┐рддрд░рдг рд╕реЗ рд╡рд┐рддрд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рд░рд╣реЗрдЧрд╛ред рдФрд░ рди рдХреЗрд╡рд▓ рд╡рд┐рддрд░рдг (рдпрд╣ RNG рдХреЛ MersenneTwister рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдФрд░ рдмрд╣реБрдд рдХреБрдЫ)ред рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдПрдХ рдФрд░ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдмрд┐рдирд╛ рд▓реЛрдХрд▓ / рдЗрд▓реЛрдХ рдХреЗ рдбреЗрдЯрд╛рдлреНрд░реЗрдо рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╣реИред
- 6. рдПрд░реЗ рдореВрд▓, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИрдВред рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╡реИрд╢реНрд╡реАрдХрд░рдгред
рд╡рд┐рдкрдХреНрд╖ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреБрдк рд░рд╣рдирд╛ рдЕрдкрд░рд╛рдз рд╣реЛрдЧрд╛!
- рдирдИ рднрд╛рд╖рд╛ред рдПрдХ рддрд░рдл, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдПрдХ рдорд╛рдЗрдирд╕ред рдХреБрдЫ рдореЗрдВ, рд╢рд╛рдпрдж рдЕрдкрд░рд┐рдкрдХреНрд╡ред рджреВрд╕рд░реА рдУрд░, рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрдИ рдкрд┐рдЫрд▓реА рднрд╛рд╖рд╛рдУрдВ рдХреА рд░реЗрдХ рдХреЛ рд╕рдВрднрд╛рд▓рд╛, "рджрд┐рдЧреНрдЧрдЬреЛрдВ рдХреЗ рдХрдВрдзреЛрдВ рдкрд░" рдЦрдбрд╝рд╛ рд╣реБрдЖ, рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдирдИ рдЪреАрдЬреЛрдВ рдХреЛ рдЕрд╡рд╢реЛрд╖рд┐рдд рдХрд┐рдпрд╛ред
- рддреБрд░рдВрдд рддреЗрдЬ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред рдХреБрдЫ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдирд┐рдкрдЯрдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ: рдЖрдк рд░реЗрдХ рдкрд░ рдХрджрдо рд░рдЦрддреЗ рд╣реИрдВ, рд╕рдореБрджрд╛рдп рд╕реЗ рдорджрдж рдорд╛рдВрдЧрддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╕реЗ рдХрджрдо рдмрдврд╝рд╛рддреЗ рд╣реИрдВ рдЖрджрд┐ред рдпреЗ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЕрд╕реНрдерд┐рд░рддрд╛, рдкреНрд░рдХрд╛рд░ рдХреА рдЕрд╕реНрдерд┐рд░рддрд╛ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореИрдВ рдЦреБрдж рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬреЛ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдЬрд▓реНрджреА рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдХрдИ рдЪрд░рдгреЛрдВ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ: рдП) рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрдВрдЧреАред рдмреА) рд╕реА рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ: рдЬрд╣рд╛рдБ рднреА рд╕рдВрднрд╡ рд╣реЛ рд╡рд╣рд╛рдБ рдореИрдиреНрдпреБрдЕрд▓ рд▓рд┐рдЦрд╛рд╡рдЯред рдЧ) рдзреАрд░реЗ-рдзреАрд░реЗ рд╕рдордЭрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╣рд╛рдВ (рдмрд╣реБрдд рдкреИрдорд╛рдЗрд╢) рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдЬрд╣рд╛рдВ рд╡реЗ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд░рддреЗ рд╣реИрдВред
- рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ред рдХреБрдЫ рдкреИрдХреЗрдЬ рдХрдЪреНрдЪреЗ рд╣реИрдВ, рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдХрд┐ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдХреБрдЫ рд▓рдЧрд╛рддрд╛рд░ рдЧрд┐рд░рддрд╛ рд╣реИ; рдХреБрдЫ рдкрд░рд┐рдкрдХреНрд╡ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╣реИрдВ (рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП)ред рдПрдХ рдУрд░, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмреБрд░рд╛ рд╣реИ; рджреВрд╕рд░реА рдУрд░, рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реЗ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рд╕рд╛рд╣рд╕рд┐рдХ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ "рд╣рдо рджрд┐рдЧреНрдЧрдЬреЛрдВ рдХреЗ рдХрдВрдзреЛрдВ рдкрд░ рдЦрдбрд╝реЗ рд╣реИрдВ" - рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд░реЗрдХ рдкрд░ рдХрджрдо рд░рдЦрдиреЗ рдХрд╛ рдЬрдмрд░рджрд╕реНрдд рдЕрдиреБрднрд╡ рд╣реИ рдФрд░ "рдпрд╣ рдХреИрд╕реЗ рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИ", рдФрд░ рдпрд╣ рдкреИрдХреЗрдЬ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ (рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ) рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред
- 1. рд╣рд╛, рдордЬрд╛рдХ рд╕реЗ рдЧрд┐рд░рддреЗ рд╣реБрдП рдирдВрдмрд░, рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдкреНрд▓рд╕ рд╣реИ! рдирд╣реАрдВ, рдареАрдХ рд╣реИ, рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдХреНрдпрд╛ рдмрд╛рдд рд╣реИ, рдЕрдВрдХрди рдХрд┐рд╕ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ? 5 рдорд┐рдирдЯ рдореЗрдВ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрджрдд рд╣реЛ рдЬрд╛рддреА рд╣реИред рдХреЛрдИ рднреА рд╢рд┐рдХрд╛рдпрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рдВрдкреВрд░реНрдг рдирд╣реАрдВред рдпреЗ рд╕рднреА рд╕реНрд╡рд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рд╣реИрдВред рдФрд░ рд╣рд╛рдБ, рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╣реА рдХреЙрд░реНрдореЗрди рд▓реЗрдВ - рд╕рдм рдХреБрдЫ рдПрдХ рд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рдЗрд╕реЗ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдкрд╛рдпрдерди рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдХрд░рдирд╛ рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрддрд╛ рд╣реИред
рдЦреИрд░, рдЧрддрд┐ рдХреНрдпреЛрдВ?
рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдХрд╛ рд╕рдордп рдХрд┐ рд╕рдм рдХреБрдЫ рдХреНрдпреЛрдВ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдиреЛрдЯ: рдореИрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкрд╛рдпрдерди рдХреЛ рднреВрд▓ рдЧрдпрд╛, рдЗрд╕рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЕрдкрдиреЗ рд╕реБрдзрд╛рд░ рд▓рд┐рдЦреЗрдВ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд▓реИрдкрдЯреЙрдк рдкрд░ рдЪрд▓рд╛рдиреЗ рдФрд░ рд░рдирдЯрд╛рдЗрдо рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рддреЛ, рдорд╛рдЗрдХреНрд░реЛрдмреЗрдирдЪрд░реНрдЪ рдХреЗ рд╕рд╛рде рджреЛ рдЫреЛрдЯреЗ рдЙрджрд╛рд╣рд░рдгред
рдХреБрдЫ рд╕рджрд┐рд╢рд╕рдорд╕реНрдпрд╛: 0 рдФрд░ 1 рдХрд╛ рдПрдХ рд╡реЗрдХреНрдЯрд░ X рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдЦрд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ 1 рдФрд░ (-1) (1 -> 1, 0 -> -1) рдХреЗ рд╡реЗрдХреНрдЯрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рдЧрдгрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЗрд╕ рд╕рджрд┐рд╢ рдХреЗ рдлреВрд░рд┐рдпрд░ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдХрд┐рддрдиреЗ рдЧреБрдгрд╛рдВрдХ рд╣реИрдВ рдирд┐рд░рдкреЗрдХреНрд╖ рдорд╛рди рд╕реАрдорд╛ рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред
def process_fft(x, boundary): return np.count_nonzero(np.abs(np.fft.fft(2*x-1)) > boundary) %timeit process_fft(x, 2000) 84.1 ms ┬▒ 335 ┬╡s per loop (mean ┬▒ std. dev. of 7 runs, 10 loops each)
function process_fft(x, boundary) count(t -> t > boundary, abs.(fft(2*x.-1))) end @benchmark process_fft(x, 2000) BenchmarkTools.Trial: memory estimate: 106.81 MiB allocs estimate: 61 -------------- minimum time: 80.233 ms (4.75% GC) median time: 80.746 ms (4.70% GC) mean time: 85.000 ms (8.67% GC) maximum time: 205.831 ms (52.27% GC) -------------- samples: 59 evals/sample: 1
рд╣рдордиреЗ рдпрд╣рд╛рдВ рдХреБрдЫ рднреА рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдирд╣реАрдВ рджреЗрдЦреА - рд╕рднреА рд╕рдорд╛рди, рд╡реЗ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рдорд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдлреЛрд░рдЯреНрд░рд╛рди рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред
рдХреБрдЫ рдиреЙрди-рд╡реЗрдХреНрдЯрд░реЗрдмрд▓рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП 0 рдФрд░ 1 рдХреА рдПрдХ рд╕рд░рдгреА рджреА рдЧрдИ рд╣реИред рд▓рдЧрд╛рддрд╛рд░ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреА рд╕рдмрд╕реЗ рд▓рдВрдмреА рд▓рдВрдмрд╛рдИ рдХреА рд▓рдВрдмрд╛рдИ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред
def longest(x): maxLen = 0 currLen = 0
function longest(x) maxLen = 0 currLen = 0 # This will count the number of ones in the block for bit in x if bit == 1 currLen += 1 maxLen = max(maxLen, currLen) else maxLen = max(maxLen, currLen) currLen = 0 end end return max(maxLen, currLen) end @benchmark longest(x) BenchmarkTools.Trial: memory estimate: 0 bytes allocs estimate: 0 -------------- minimum time: 9.094 ms (0.00% GC) median time: 9.248 ms (0.00% GC) mean time: 9.319 ms (0.00% GC) maximum time: 12.177 ms (0.00% GC) -------------- samples: 536 evals/sample: 1
рдЕрдВрддрд░ рдирдЧреНрди рдЖрдВрдЦреЛрдВ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИред "рдкрд░рд┐рд╖реНрдХрд░рдг" рдФрд░ / рдпрд╛ рд╕реБрдиреНрди рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╡реЗрдХреНрдЯрд░ рдХрд░рдиреЗ рдХреА рдпреБрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред рдореИрдВ рдпрд╣ рднреА рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдПрдХ рднреА рдкреНрд░рдХрд╛рд░ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ (рдкрд┐рдЫрд▓реЗ рдПрдХ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛) - рд╕рднреА рд╕рдорд╛рди, рд╕рдм рдХреБрдЫ рдЬрд▓реНрджреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдореИрдВ рдпрд╣ рднреА рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдкреНрд░рд╕реНрддреБрдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрдВрддрд┐рдо рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЖрдЧреЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛; рдпрд╣рд╛рдВ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ (рдЬреВрд▓рд┐рдпрд╛ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдореЗрдореЛрд░реА рдХреЛ рдЖрдЧреЗ-рдкреАрдЫреЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрджрд┐)ред
рдЖрдЦрд┐рд░ рдореЗрдВ рдХреНрдпрд╛ рдирд┐рдХрд▓рд╛?
рдореИрдВ рдкрд╛рдпрдерди рдХреЗ рд▓рд┐рдП рдФрд░ рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рдХреЛрдб рдирд╣реАрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛: рдпрд╣ рдПрдХ рд░рд╣рд╕реНрдп рд╣реИ (рдХрдо рд╕реЗ рдХрдо рдЕрднреА рдХреЗ рд▓рд┐рдП)ред рдЙрд╕ рд╕рдордп рдЬрдм рдореИрдВрдиреЗ рдЕрдЬрдЧрд░ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрдХрд╛, рдЗрд╕рдиреЗ ~ 50 рд╕реЗрдХрдВрдб рдореЗрдВ 16 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдХреЗ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╡рд░реНрдгреЛрдВ рдХреЗ рдПрдХ рд╕рд░рдгреА рдкрд░ рдПрдирдЖрдИрдПрд╕рдЯреА рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рднреА рдХрд╛рдо рдХрд┐рдПред рдлрд┐рд▓рд╣рд╛рд▓ рдЬреВрд▓рд┐рдпрд╛ рдкрд░, рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╕рдорд╛рди рдорд╛рддреНрд░рд╛ ~ 20 рд╕реЗрдХрдВрдб рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдореВрд░реНрдЦ рд╣реВрдВ, рдФрд░ рдЕрдиреБрдХреВрд▓рди рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдереАред рдЖрджрд┐ рд▓реЗрдХрд┐рди рдпрд╣ рдореИрдВ рд╣реВрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рд╣реВрдВ, рдЗрд╕рдХреЗ рд╕рднреА рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд╛рде, рдФрд░ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдПрдХ рд╡реИрдХреНрдпреВрдо рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреА рдЧреЛрд▓рд╛рдХрд╛рд░ рдЧрддрд┐ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдХрд▓ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛)ред
рдореИрдВрдиреЗ рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рд▓рд┐рдЦрд╛?
рдпрд╣рд╛рдВ рд▓реЛрдЧреЛрдВ рдХреА рджрд┐рд▓рдЪрд╕реНрдкреА рдмрдиреА; рдореИрдВрдиреЗ рд╕рдордп рдЖрдиреЗ рдкрд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рдЬреВрд▓рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдзрд┐рдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реВрдВ, рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рдеред рдХреНрдпреЛрдВ? рдЕрдзрд┐рдХ рднрд╛рд╖рд╛рдПрдВ, рдЕрдЪреНрдЫреА рдФрд░ рдЕрд▓рдЧ, рдФрд░ рд╣рд░ рдХреЛрдИ рдЬреЛ рдХреБрдЫ рдРрд╕рд╛ рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕реЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд╕реВрдЯ рдХрд░реЗред