рдпрд╣ рдХреИрд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛
рдПрдХ рд▓рдВрдмреА рд╕рд░реНрджрд┐рдпреЛрдВ рдХреА рд╢рд╛рдо, рдореЗрд░реА рдкрддреНрдиреА рдиреЗ
рдХрд┐рддрд╛рдмреА рд░реЛрдорд╛рдВрдЪ рдЦреЗрд▓рд╛, рдФрд░ рд╕рдордп-рд╕рдордп рдкрд░ рдореБрдЭреЗ рдЙрдкрд▓рдмреНрдз рдкрддреНрд░реЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рд░реВрдк рд╕реЗ рд╢рдмреНрджреЛрдВ рдХреА рд░рдЪрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ред рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рд╕реЗ рд╢рдмреНрджреЛрдВ рдХреА рд░рдЪрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдПрдХ рддреНрд╡рд░рд┐рдд рдЦреЛрдЬ рдиреЗ рдЙрди рд╕рд╛рдЗрдЯреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рджрд┐рдпрд╛ рдЬреЛ рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рдкрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдЬреЛ рдЬрд╛рд╡рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓реЗрдЯ рдкрд░ рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рд╢рдмреНрдж рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рдкрд╛рд╕ рдпрд╛ рддреЛ рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рд╕реАрдорд╛ рд╣реЛрддреА рд╣реИ (рдЖрдорддреМрд░ рдкрд░, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, 8 рдкрд░), рдпрд╛ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╕реЛрдЪреЗрдВ рддреЛ рдЙрдиреНрд╣реЗрдВ рд╕реЗрдЯ "abcdefghijklmnopqrstuvstxyxy" рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрд╛рд╡рд╛ рдПрдкреНрд▓реЗрдЯ рдореЗрдВ 12 рдЕрдХреНрд╖рд░реЛрдВ рдХреА рд╕реАрдорд╛ рдереА, рдпрд╣ рдЪрд╛рд▓рд╛рдХреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ рдФрд░ рд▓рдЧрднрдЧ рдЙрдкрдпреБрдХреНрдд рдерд╛ (рд╢рдмреНрджреЛрдВ рдХреА рд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдЦреЗрд▓ рдореЗрдВ 16 рдЕрдХреНрд╖рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ)ред
рдЬрд╛рд╡рд╛ рдПрдкреНрд▓реЗрдЯ рдХреЗ рдмрдЧрд▓ рдореЗрдВ, 170 рд╣рдЬрд╛рд░ рдЕрдВрдЧреНрд░реЗрдЬреА рд╢рдмреНрджреЛрдВ рдХрд╛ рдПрдХ
рд╢рдмреНрджрдХреЛрд╢ рдерд╛ред рдЙрд╕рд╕реЗ рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рдХрд╛рд░реНрдп рдкреВрдЫрд╛, рдЬреЛ рдЙрдкрд╕рд░реНрдЧ рд╡реГрдХреНрд╖реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛, рдлрд┐рд░, рдореЗрд░реА рд╢рд░реНрдо рдХреА рдмрд╛рдд, рдЙрдкрд╕рд░реНрдЧ рд╡реГрдХреНрд╖реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬреНрдЮрд╛рди рдХрд╛, рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдореЗрд░реЗ рд╕рд┐рд░ рдореЗрдВ рдПрдХ рдирд╛рдо рдерд╛ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рднрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред
рдореИрдВ
C ++ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд░рдХреЗ рдкреИрд╕реЗ рдХрдорд╛рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ
C ++ рдореЗрдВ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдиреЗ рдЬрд▓реНрджреА рдФрд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреА рдкрддреНрдиреА рдХреЛ рдПрдХ рдХрд╛рд▓реЗ рдкрд╛рда рдХреА рдЦрд┐рдбрд╝рдХреА рд╕реЗ рдбрд░рд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЙрдкрд╕рд░реНрдЧ рд╡реГрдХреНрд╖ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд▓рд┐рдЦрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдореМрдЬреВрджрд╛
C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬреЛ рдХрд┐ JSON рдореЗрдВ рдкреЗрдбрд╝ рдЙрддрд░рд╛рдИ рд╣реИред рдЖрдЙрдЯрдкреБрдЯ 40 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ (2 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдХреЗ рдореВрд▓ рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ) рдХреА рдПрдХ рдлрд╝рд╛рдЗрд▓ рдереА, рд╢рд╛рдпрдж рдЗрд╕ рд╕рдордп рдпрд╣ рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ рдПрдХ рдкреЗрдбрд╝ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╣рдереМрдбрд╝рд╛ рджреЗрдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдерд╛, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЦреЛрдЬ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рд╣реИред рд╕рдм рдХреБрдЫ рдареАрдХ рд░рд╣рд╛, рд▓реЗрдХрд┐рди рдкреЗрдЬ рд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ рд╕реЗ 5-10 рд╕реЗрдХрдВрдб рд▓рдЧреЗред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкреЗрдбрд╝ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдерд╛: рд▓реЛрдбрд┐рдВрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬ рд╣реЛ рдЧрдпрд╛ (рдпрд╣ рдЙрдореНрдореАрдж рдХреА рдЧрдИ рдереА), рдЖрд╢реНрдЪрд░реНрдп рдХреА рдмрд╛рдд рдпрд╣ рдереА рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рддреАрди рдЧреБрдирд╛ рдХрдо рдереАред рдХреНрд░реЛрдо рдЯреИрдм, рдЬрд┐рд╕рдореЗрдВ рддреИрдпрд╛рд░ рдЙрдкрд╕рд░реНрдЧ рдкреЗрдбрд╝ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдореЗрдВ 150 рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рдореЗрдореЛрд░реА рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдПрдХ рд╣реА рдкреЗрдбрд╝ рдХреЛ рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрднреЛрдЧ рдХреЗрд╡рд▓ 50 рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рджреЛрдиреЛрдВ рд▓реЛрдбрд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕реНрд░реЛрдд
BitBucket рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рдпрд╣ рд╕рдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ
рд╕рдорд╕реНрдпрд╛ рдХрдерди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдХреНрд╖рд░реЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рд╕рднреА рд╢рдмреНрджреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдЕрдХреНрд╖рд░ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХ рдмрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕реА рдкрддреНрд░ рдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордирд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рд╡рд╣ рдЙрди рд╢рдмреНрджреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдкрддреНрд░ рдХрдИ рдмрд╛рд░ рдЗрд╕реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХрд╣рддрд╛ рд╣реИ (
рдЕрдВрдЧреНрд░реЗрдЬреА рдЕрдзрд┐рдХ рдХреНрд░рд┐рдпрд╛ рд╣реИ), рдПрдХ рдЙрдкрд╕рд░реНрдЧ рд╡реГрдХреНрд╖ рдПрдХ рдкреЗрдбрд╝ рд╣реИ рдЬреЛ рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ рд╢рдмреНрджреЛрдВ рдХреЗ рдЙрдкрд╕рд░реНрдЧреЛрдВ (рдпрд╛рдиреА, рдкрд╣рд▓реЗ рдХреБрдЫ рдЕрдХреНрд╖рд░) рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдкреЗрдбрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рдРрд╕реА рд╣реИ рдХрд┐ рдЬрдбрд╝ рдХреЗ рдмрд╛рдж рдкреЗрдбрд╝ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рдж рдХрд╛ рд╕реНрддрд░ рдкрд┐рдЫрд▓реЗ рд╕реНрддрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рдЕрдЧрд▓реЗ рдЕрдХреНрд╖рд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЦрд╛рд▓реА рдЙрдкрд╕рд░реНрдЧ рдЬрд┐рд╕рдореЗрдВ рдХреЛрдИ рдЕрдХреНрд╖рд░ рдирд╣реАрдВ рд╣реИ, рдЙрд╕реЗ рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рдореЗрдВ рдЬрдорд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рд╕реЗ рдПрдХ рдкрддреНрддреАрджрд╛рд░ рд╢рд┐рдЦрд░ рддрдХ рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдмрд╛рдИрдВ рдУрд░ рд╕реЗ рджрд╛рдПрдВ рдХреЛрдиреЗ рдХреА рдУрд░ рд╕реЗ рдкрддреНрд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдкрде рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣рдореЗрдВ рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ рдХреБрдЫ рд╢рдмреНрдж рдорд┐рд▓реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╢рдмреНрдж рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдкрддреНрддреА рдХреЗ рдХреЛрдиреЗ рдкрд░ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢рдмреНрдж BAD, CAB, CAD, DAB, AB, AD, BA рдХрд╛ рдПрдХ рд╢рдмреНрдж рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреЗрдбрд╝ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

рддрд╛рд░рд╛рдВрдХрди рдЙрди рдиреЛрдбреНрд╕ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рди рдкрд░ рд╢рдмреНрдж рд╕рдорд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред
рддреЛ, рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ, рдкреЗрдбрд╝ рдХреЛ рд░реВрдЯ рдиреЛрдб рдХреЗ рд▓рд┐рдВрдХ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдПрдХ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬрд┐рд╕рдореЗрдВ
data
рдлрд╝реАрд▓реНрдб рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдиреЛрдб рдХреЗ рдЕрдиреБрд░реВрдк рдкрддреНрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИ; рдпрджрд┐ рд╢рдмреНрдж рдЗрд╕ рдиреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ; рдФрд░ рдмрд╛рд▓ рдкрддреНрд░ рдХреЗ рд▓рд┐рдВрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдХреНрд╖рд░ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдХрдИ рдлрд╝реАрд▓реНрдбреНрд╕ рдЬреЛ рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдкрддреНрд░ рдХреЗ рд▓рд┐рдП рдЙрдкрд╢реАрд░реНрд╖рдХ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА JSON рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдХреГрддрд┐ рд╕реЗ рдкреЗрдбрд╝
A
рдкрд╣рд▓реЗ рд╕реНрддрд░ рдХрд╛ рдиреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
{ "data" : "A", "terminator" : false, "B" : { "data" : "B", "terminator" : true }, "D" : { "data" : "D", "terminator" : true } }
рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рддрд╛рд░ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдкреЗрдбрд╝ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЦрд╛рд▓реА рд░реВрдЯ рдиреЛрдб рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ, рд╣рдо рд╢рдмреНрдж рдХреЛ рд╢рдмреНрдж рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЪреБрдиреЗрдВрдЧреЗ, рдЙрдиреНрд╣реЗрдВ рдЕрдХреНрд╖рд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдиреЛрдбреНрд╕ рдмрдирд╛рдПрдВрдЧреЗ:
var trieRoot; function buildTrie(wordList) { trieRoot = { "data" : "", "terminator" : false }; for ( var i = 0; i < wordList.length; ++i ) { var word = wordList[i]; var letters = word.split(""); var curNode = trieRoot; for ( var j = 0; j < letters.length; ++j ) { if ( curNode[letters[j]] == undefined ) { curNode[letters[j]] = { "data" : letters[j], "terminator" : false }; } curNode = curNode[letters[j]]; } curNode.terminator = true; } }
рдЕрдХреНрд╖рд░реЛрдВ рдХреЗ рдПрдХ рд╕реЗрдЯ рд╕реЗ рд╢рдмреНрджреЛрдВ рдХреА рд░рдЪрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реВрдЪреА рд╕реЗ рдЕрдХреНрд╖рд░реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 1 рд╕реЗ рд╕рднреА
рд╡реНрдпрд╡рд╕реНрдерд╛рдУрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрджрд┐ рдЕрдЧрд▓реЗ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд┐рд░реНрдорд┐рдд рдЙрдкрд╕рд░реНрдЧ рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ, рддреЛ рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдХреЗ рдЖрдЧреЗ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкреНрд▓реЗрд╕рдореЗрдВрдЯ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреБрдирд░рд╛рд╡рд░реНрддреА рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рд╡рд░реНрддрдорд╛рди рдЙрдкрд╕рд░реНрдЧ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рднреА рдЗрд╕рдореЗрдВ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред
var letters = []; var used = []; var result = []; var words = {}; function findWords(node, depth) { if ( depth > 0 ) { result[depth - 1] = node.data; if ( node.terminator ) { var word = result.slice(0, depth).join(""); words[word] = 1; } } for ( var i = 0; i < letters.length; ++i ) { var child; if ( !used[i] && (child = node[letters[i]]) != undefined ) { used[i] = true; findWords(child, depth + 1); used[i] = false; } } }
letters
рд╕рд░рдгреА рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдЕрдХреНрд╖рд░реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реЛрддреА рд╣реИ,
used
рд╕рд░рдгреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рдореЗрдВ
letters
рд╕рд░рдгреА рд╕реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЗ рдЕрдиреБрд░реВрдк рдЕрдХреНрд╖рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЭрдВрдбреЗ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреА рд╣реИред рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рдХреЛ
result
рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ,
words
- рдкрд╛рдпрд╛ рдЧрдпрд╛ рд╢рдмреНрдж рдЙрд╕ рд╡рд╕реНрддреБ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рджреЛрд╣рд░рд╛рд╡ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдЕрдХреНрд╖рд░ рдХреЗ рдХрдИ рджреЛрд╣рд░рд╛рд╡ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ ("AAABBBCCCDDD")ред
рдмрд╛рдХреА рд╕рднреА рдХреЛрдб рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╣реИрдВ, рдФрд░ рдкреЗрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдЦреБрдж рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░рдирд╛ рд╣реИред
рдХреНрдпреЛрдВ рдЬрд░реВрд░реА рд╣реИ?
рдореЗрд░реЗ рд▓рд┐рдП, рдореИрдВ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЙрдкрд╕рд░реНрдЧ рд╡реГрдХреНрд╖ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд▓рдЧрднрдЧ рдРрд╕реЗ рдкреЗрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдФрд░ рдЬрд▓реНрджреА рд╕реЗ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рдкрд╣рд▓реЗ рд╡рд░реНрдгреЛрдВ (рдЬреИрд╕реЗ рдЦреЛрдЬ рд╕реБрдЭрд╛рд╡) рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЦреЛрдЬ рдмрд╣реБрдд рддреЗрдЬ рд╣реИ, рдЦреЛрдЬ рдХрд╛ рд╕рдордп рдХреЗрд╡рд▓ рдЙрдкрд╕рд░реНрдЧ рдХреА рд▓рдВрдмрд╛рдИ рдФрд░ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рд╕реНрдореГрддрд┐ рдХрд╛ рддреНрдпрд╛рдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред