рдЖрдХрд╕реНрдорд┐рдХ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдЖрд░рд╛рдорджрд╛рдпрдХ рдмреЙрдЯред

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

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



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



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



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



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

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

C # рдХреЛрдб
//""  //detail -    . private Color getMidColor(Bitmap inpBit, int x, int y, int w, int h, int detail) { double r = 0, g = 0, b = 0; for (var ii = x; ii < x + w; ii += detail) for (var jj = y; jj < y + h; jj += detail) { var pix = inpBit.GetPixel(ii, jj); r += pix.R; g += pix.G; b += pix.B; } r /= (w * h / detail / detail);// :-( g /= (w * h / detail / detail); b /= (w * h / detail / detail); return Color.FromArgb((int)r, (int)g, (int)b); } //  //   //blcColors -  ""  . private int colorCompare(Color c) { int max=255; int cur = -1; int imax; for(var i=0;i<blcColors.Count;i++) { imax=Math.Abs(cR - blcColors[i].R) + Math.Abs(cG - blcColors[i].G) + Math.Abs(cB - blcColors[i].B) / 3; if (imax < max) { max=imax; cur = i; } } if (max > 50)//    return -1;//     return cur; } 


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

 //..... for (var i = 0; i < 10; i++) for (var j = 0; j < 9; j++) { if (nots[i, j])//    count[i, j] = //   "" searching(i, j, 0); // ""     if(count[i, j]>max) { x=i; y=j; max = count[i, j]; } } //..... //     private int searching(int i, int j, int c) { nots[i, j] = false; //    for (var di = -1; di <= 1; di++) for (var dj = -1; dj <= 1; dj++) if (di+i >= 0 && di+i < 10 && dj+j >= 0 && dj+j < 9) //   ? if (Math.Abs(di) != Math.Abs(dj)) //     ? if (cube[i, j] == cube[i + di, j + dj]) // ? if (nots[i + di, j + dj]) // ? { c = searching(i + di, j + dj, c+1); //  ! } return c; } } 


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

рдмреЙрдЯ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдгред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рднрд▓реЗ рд╣реА рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмреНрд▓реЙрдХ рдХреА рдорд╛рдиреНрдпрддрд╛ рдФрд░ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдкрд░ 15-20 рдПрдордПрд╕ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕рдордЭрджрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдореЗрд░реА рдЦрд┐рдбрд╝рдХреА рдкрд░, рдПрдХ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА 10-20 рдПрдлрдкреАрдПрд╕ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡реАрдбрд┐рдпреЛ рдХреЗ рдлрд┐рд▓реНрдорд╛рдВрдХрди рдХреЗ рд╕рд╛рде рдпрд╣ рдПрдХ рд╕реНрд▓рд╛рдЗрдб рд╢реЛ рд╣реИред рдЕрдзрд┐рдХрддрдо рдореЗрд░рд╛ рдмреЙрдЯ 300k рднрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред


____
* рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЙрдирдореЗрдВ рд╕реЗ 6 рдереЗред рдореБрдЭреЗ рдмреЙрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рд╣реА рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛, рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рдЦреБрдж рдХреЛ (рдмреБрд░реА рддрд░рд╣ рд╕реЗ) рдЦреЗрд▓рд╛, рддреЛ рдпрд╣ рдмреНрд▓реЙрдХ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджрд┐рдпрд╛ред
** 2, 4 рдпрд╛ рдЕрдзрд┐рдХ рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдпрд╣ рдмрд╣реБрдд рд╣реА рд╢рд╛рдирджрд╛рд░ рдерд╛ред

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


All Articles