{"id":342913,"date":"2022-12-20T15:01:53","date_gmt":"2022-12-20T15:01:53","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=342913"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=342913","title":{"rendered":"<span>#4 \u041d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445. Sudoku Solver. \u0421\u0443\u0434\u043e\u043a\u0443. \u0427\u0430\u0441\u0442\u044c 1<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/706164\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/6g\/ma\/ol\/6gmaolonohchee0o1kbigh5vipa.png\" data-src=\"https:\/\/habrastorage.org\/webt\/6g\/ma\/ol\/6gmaolonohchee0o1kbigh5vipa.png\"\/><\/div>\n<p><\/a><br \/>  \u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f: \u043e\u0434\u043d\u0438\u043c \u0437\u0438\u043c\u043d\u0438\u043c \u0432\u0435\u0447\u0435\u0440\u043e\u043c, \u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u043d\u043e\u0447\u044c\u044e, \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u0430 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0438\u0434\u0435\u044f. \u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0433\u043e \u0437\u0440\u0435\u043d\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0438 \u0441 \u0447\u0438\u0441\u043b\u0430\u043c\u0438, \u0430 \u0435\u0441\u043b\u0438 \u0431\u044b\u0442\u044c \u0442\u043e\u0447\u043d\u0435\u0435 \u2014 \u0441\u0443\u0434\u043e\u043a\u0443. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0439 \u0434\u0435\u0434\u0443\u0448\u043a\u0430 \u2014 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u0440\u043e\u0441\u0441\u0432\u043e\u0440\u0434\u043e\u0432, \u0441\u0443\u0434\u043e\u043a\u0443 \u0438 \u0442. \u0434. \u0417\u043d\u0430\u044f \u044d\u0442\u043e, \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a-\u043d\u0438\u0431\u0443\u0434\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0434\u043e \u0437\u0430\u0434\u0430\u0447\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u0440\u043e\u0441\u0441\u0432\u043e\u0440\u0434\u043e\u0432 \u043c\u043d\u0435 \u0435\u0449\u0451 \u0434\u0430\u043b\u0435\u043a\u043e, \u043d\u043e \u0432\u043e\u0442 \u0441 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0443\u0434\u043e\u043a\u0443, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0447\u0451\u0442\u043a\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. <\/p>\n<p>  <u>\u0421\u043f\u043e\u0439\u043b\u0435\u0440:<\/u> \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043f\u0430\u0440\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043a\u0430\u043a \u0432 \u0441\u0432\u043e\u0451\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u044d\u0442\u043e\u0439 \u0438\u0433\u0440\u044b, \u0442\u0430\u043a \u0438 \u0432 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u043c\u0435\u043d\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c (\u0442\u0443\u0442 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b\u0442\u044c \u0441\u043c\u0435\u0448\u043d\u043e), \u043d\u043e \u0432\u0441\u0451 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u0421 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043c\u043e\u0435\u0433\u043e \u0442\u0440\u0443\u0434\u0430 \u044f \u0432\u0430\u043c \u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f!<a name=\"habracut\"><\/a><\/p>\n<p>  \u041d\u043e \u043f\u0435\u0440\u0435\u0434 \u0432\u0441\u0435\u043c \u044d\u0442\u0438\u043c \u044f \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u0432\u0430\u043c \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043c\u043e\u0438 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u0437 \u0441\u0435\u0440\u0438\u0438 \u00ab\u041d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445\u00bb. \u0422\u0430\u043c \u0438\u0445 \u0443\u0436\u0435 \u0446\u0435\u043b\u044b\u0445 \u0442\u0440\u0438:<\/p>\n<ul>\n<li> <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/679988\/\">#1 \u041d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u043a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u0418\u0440\u0438\u0441\u043e\u0432 \u0424\u0438\u0448\u0435\u0440\u0430 <\/a><\/li>\n<li> <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/682462\/\">#2 \u041d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445. NumPy. MatplotLib. \u041e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 OpenCV <\/a><\/li>\n<li> <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/694994\/\">#3 \u041d\u0435\u0439\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445. \u0420\u0430\u0431\u043e\u0442\u0430 \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u0432 OpenCV. \u0410\u043b\u0433\u043e\u0440\u0438\u0442\u043c Canny Edge Detector<\/a> <\/li>\n<\/ul>\n<p>  <\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0442\u0435\u043e\u0440\u0438\u0438<\/font><\/h2>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c, \u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f, \u0447\u0442\u043e \u0436\u0435 \u0442\u0430\u043a\u043e\u0435 \u0421\u0443\u0434\u043e\u043a\u0443.  <\/p>\n<blockquote><p>\u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u0438, \u0421\u0443\u0434\u043e\u0301\u043a\u0443 (\u043e\u0442 \u044f\u043f\u043e\u043d\u0441\u043a\u043e\u0433\u043e \u6570\u72ec \u0441\u0443: \u0434\u043e\u043a\u0443) \u2014 \u044d\u0442\u043e \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0430 \u0441 \u0447\u0438\u0441\u043b\u0430\u043c\u0438. \u0418\u043d\u043e\u0433\u0434\u0430 \u0441\u0443\u0434\u043e\u043a\u0443 \u043d\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u043c, \u0447\u0442\u043e \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e, \u0442\u0430\u043a \u043a\u0430\u043a \u0441\u0443\u0434\u043e\u043a\u0443 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u043c \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u043c 9-\u0433\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430. \u0421\u0443\u0434\u043e\u043a\u0443 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442 \u0433\u0430\u0437\u0435\u0442\u044b \u0438 \u0436\u0443\u0440\u043d\u0430\u043b\u044b \u0440\u0430\u0437\u043d\u044b\u0445 \u0441\u0442\u0440\u0430\u043d \u043c\u0438\u0440\u0430, \u0441\u0431\u043e\u0440\u043d\u0438\u043a\u0438 \u0441\u0443\u0434\u043e\u043a\u0443 \u0438\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0438\u043c\u0438 \u0442\u0438\u0440\u0430\u0436\u0430\u043c\u0438. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0443\u0434\u043e\u043a\u0443 \u2014 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0439 \u0432\u0438\u0434 \u0434\u043e\u0441\u0443\u0433\u0430.<\/p><\/blockquote>\n<p>  \u0410 \u043a\u0430\u043a \u0441\u0443\u0434\u043e\u043a\u0443 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c?<\/p>\n<blockquote><p>\u0412 XVIII \u0432\u0435\u043a\u0435 \u041b\u0435\u043e\u043d\u0430\u0440\u0434 \u042d\u0439\u043b\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0451\u043b \u0438\u0433\u0440\u0443 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9B%D0%B0%D1%82%D0%B8%D0%BD%D1%81%D0%BA%D0%B8%D0%B9_%D0%BA%D0%B2%D0%B0%D0%B4%D1%80%D0%B0%D1%82\">Carr\u00e9 latin (\u00ab\u041b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0439 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u00bb)<\/a>. \u041d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u044d\u0442\u043e\u0439 \u0438\u0433\u0440\u044b \u0432 1970-\u0445 \u0433\u043e\u0434\u0430\u0445 \u0432 \u0421\u0435\u0432\u0435\u0440\u043d\u043e\u0439 \u0410\u043c\u0435\u0440\u0438\u043a\u0435 \u0431\u044b\u043b\u0438 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u043d\u044b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u043e\u0432\u044b\u0435 \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0438. \u0422\u0430\u043a, \u0432 \u0421\u0428\u0410 \u0441\u0443\u0434\u043e\u043a\u0443 \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u0432 1979 \u0433\u043e\u0434\u0443 \u0432 \u0436\u0443\u0440\u043d\u0430\u043b\u0435 Dell Puzzle Magazine. \u0422\u043e\u0433\u0434\u0430 \u043e\u043d\u0430 \u043d\u0430\u0437\u044b\u0432\u0430\u043b\u0430\u0441\u044c Number Place. \u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0443\u044e \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0441\u0442\u044c \u0441\u0443\u0434\u043e\u043a\u0443 \u0437\u0430\u0432\u043e\u0435\u0432\u0430\u043b\u0430 \u0432 1980\u20141990-\u0445 \u0433\u043e\u0434\u0430\u0445, \u043a\u043e\u0433\u0434\u0430 \u044f\u043f\u043e\u043d\u0441\u043a\u0438\u0439 \u0436\u0443\u0440\u043d\u0430\u043b Nikoli \u043d\u0430\u0447\u0430\u043b \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u0432\u043e\u0438\u0445 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\u0445 \u044d\u0442\u0443 \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0443 (\u0441 1986 \u0433\u043e\u0434\u0430). \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0441\u0443\u0434\u043e\u043a\u0443 \u2014 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043c\u043d\u043e\u0433\u0438\u0445 \u0433\u0430\u0437\u0435\u0442. \u0421\u0440\u0435\u0434\u0438 \u043d\u0438\u0445 \u043c\u043d\u043e\u0433\u043e \u0438\u0437\u0434\u0430\u043d\u0438\u0439 \u0441 \u043c\u043d\u043e\u0433\u043e\u043c\u0438\u043b\u043b\u0438\u043e\u043d\u043d\u044b\u043c\u0438 \u0442\u0438\u0440\u0430\u0436\u0430\u043c\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043d\u0435\u043c\u0435\u0446\u043a\u0430\u044f \u0433\u0430\u0437\u0435\u0442\u0430 Die Zeit, \u0430\u0432\u0441\u0442\u0440\u0438\u0439\u0441\u043a\u0438\u0439 Der Standard. \u0412 \u0420\u043e\u0441\u0441\u0438\u0438 \u0441\u0443\u0434\u043e\u043a\u0443 \u0442\u0430\u043a\u0436\u0435 \u043f\u0443\u0431\u043b\u0438\u043a\u0443\u044e\u0442\u0441\u044f \u0432 \u0434\u0435\u0441\u044f\u0442\u043a\u0430\u0445 \u0433\u0430\u0437\u0435\u0442, \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u0432 \u0438 \u0432 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0431\u043e\u0440\u043d\u0438\u043a\u0430\u0445.<\/p><\/blockquote>\n<p>  \u0425\u043e\u0440\u043e\u0448\u043e, \u0430 \u0447\u0442\u043e \u0442\u0430\u043c \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 \u0438\u0433\u0440\u044b? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f:<\/p>\n<blockquote><p>\u0418\u0433\u0440\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u043e\u0439 \u043a\u0432\u0430\u0434\u0440\u0430\u0442 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c 9\u00d79, \u0440\u0430\u0437\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u043d\u0430 \u043c\u0435\u043d\u044c\u0448\u0438\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u044b \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 \u0432 3 \u043a\u043b\u0435\u0442\u043a\u0438. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u0441\u0451 \u0438\u0433\u0440\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 81 \u043a\u043b\u0435\u0442\u043a\u0438. \u0412 \u043d\u0438\u0445 \u0443\u0436\u0435 \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438\u0433\u0440\u044b \u0441\u0442\u043e\u044f\u0442 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 (\u043e\u0442 1 \u0434\u043e 9), \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430\u043c\u0438. \u041e\u0442 \u0438\u0433\u0440\u043e\u043a\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0435 \u043a\u043b\u0435\u0442\u043a\u0438 \u0446\u0438\u0444\u0440\u0430\u043c\u0438 \u043e\u0442 1 \u0434\u043e 9 \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435 \u0438 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043c\u0430\u043b\u043e\u043c \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0435 3\u00d73 \u043a\u0430\u0436\u0434\u0430\u044f \u0446\u0438\u0444\u0440\u0430 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0430\u0441\u044c \u0431\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0440\u0430\u0437. \u0421\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u0443\u0434\u043e\u043a\u0443 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043d\u044b\u0445 \u043a\u043b\u0435\u0442\u043e\u043a \u0438 \u043e\u0442 \u043c\u0435\u0442\u043e\u0434\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0434\u043b\u044f \u0435\u0451 \u0440\u0435\u0448\u0435\u043d\u0438\u044f. \u0421\u0430\u043c\u044b\u0435 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0440\u0435\u0448\u0430\u044e\u0442\u0441\u044f \u0434\u0435\u0434\u0443\u043a\u0442\u0438\u0432\u043d\u043e: \u0432\u0441\u0435\u0433\u0434\u0430 \u0435\u0441\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430, \u043a\u0443\u0434\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u0437\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0438\u043d\u0443\u0442, \u043d\u0430 \u0434\u0440\u0443\u0433\u0438\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u0447\u0430\u0441\u044b.<\/p>\n<p>  \u041f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0430 \u0438\u043c\u0435\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0430\u0439\u0442\u0430\u0445 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043f\u043e\u0434 \u0432\u0438\u0434\u043e\u043c \u0443\u0441\u043b\u043e\u0436\u043d\u0451\u043d\u043d\u044b\u0445 \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043e\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442\u0441\u044f \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0441\u0443\u0434\u043e\u043a\u0443 \u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430\u043c\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441 \u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0441\u0430\u043c\u043e\u0433\u043e \u0445\u043e\u0434\u0430 \u0440\u0435\u0448\u0435\u043d\u0438\u044f.<\/p><\/blockquote>\n<p>  \u041a\u0430\u043a \u044f \u043f\u043e\u043d\u044f\u043b, \u0437\u0430\u0434\u0430\u0447\u0430 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9E%D0%B1%D0%BE%D0%B1%D1%89%D1%91%D0%BD%D0%BD%D0%BE%D0%B5_%D1%81%D1%83%D0%B4%D0%BE%D0%BA%D1%83\">\u043e\u0431\u043e\u0431\u0449\u0451\u043d\u043d\u043e\u0433\u043e \u0441\u0443\u0434\u043e\u043a\u0443<\/a> \u043d\u0430 \u043f\u043e\u043b\u0435 N<sup>2<\/sup> * N<sup>2<\/sup> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <a href=\"https:\/\/ru.wikipedia.org\/wiki\/NP-%D0%BF%D0%BE%D0%BB%D0%BD%D0%B0%D1%8F_%D0%B7%D0%B0%D0%B4%D0%B0%D1%87%D0%B0\">NP-\u043f\u043e\u043b\u043d\u043e\u0439<\/a>, \u0442\u0430\u043a \u043a\u0430\u043a \u043a \u043d\u0435\u0439 \u0441\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0438 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u043e\u0433\u043e \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430.<\/p>\n<p>  \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0443\u0434\u043e\u043a\u0443 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u0435\u0440\u0430 9\u00d79 \u0441 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0440\u0430\u0432\u043d\u043e 6670903752021073000000 (\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c <a href=\"https:\/\/oeis.org\/A107739\">A107739<\/a> \u0432 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9E%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD-%D1%8D%D0%BD%D1%86%D0%B8%D0%BA%D0%BB%D0%BE%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F_%D1%86%D0%B5%D0%BB%D0%BE%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B5%D0%B9\">OEIS<\/a>) \u2014 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u0437\u044f\u0442\u044b \u0438\u0437 \u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u0438, \u0438\u043b\u0438 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 6.67 \u043d\u0430 10 \u0432 21-\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438. \u041e\u0434\u043d\u0430\u043a\u043e \u0435\u0441\u043b\u0438 \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u0442\u0435 \u0441\u0443\u0434\u043e\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u0438\u0437 \u0434\u0440\u0443\u0433\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u0432\u043e\u0440\u043e\u0442\u043e\u0432, \u043e\u0442\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0438 \u043f\u0435\u0440\u0435\u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u0438, \u0442\u043e \u044d\u0442\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0435\u0442\u0441\u044f \u0434\u043e 5 472 730 538 (\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c <a href=\"https:\/\/oeis.org\/A107739\">A107739<\/a> \u0432 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9E%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD-%D1%8D%D0%BD%D1%86%D0%B8%D0%BA%D0%BB%D0%BE%D0%BF%D0%B5%D0%B4%D0%B8%D1%8F_%D1%86%D0%B5%D0%BB%D0%BE%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D1%85_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B5%D0%B9\">OEIS<\/a>).<\/p>\n<p>  \u0414\u043e\u043b\u0433\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043e\u0441\u0442\u0430\u0432\u0430\u043b\u0441\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u0432\u043e\u043f\u0440\u043e\u0441 \u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043e\u043a, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0443\u0434\u043e\u043a\u0443. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u043d\u0435 \u0431\u044b\u043b\u043e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0440\u0435\u0448\u0430\u0435\u043c\u044b\u0439 \u0441\u0443\u0434\u043e\u043a\u0443 \u0441 16 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430\u043c\u0438. \u041f\u0440\u043e\u0435\u043a\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0445 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439 Sudoku@vtaiwan \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 BOINC \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0441\u044f \u043f\u043e\u0438\u0441\u043a\u043e\u043c \u0442\u0430\u043a\u043e\u0433\u043e. \u0412 \u044f\u043d\u0432\u0430\u0440\u0435 2012 \u0433\u043e\u0434\u0430 \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0440\u0435\u0448\u0430\u0435\u043c\u044b\u0445 \u0441\u0443\u0434\u043e\u043a\u0443 \u0441 16 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430\u043c\u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043c\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438, \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0441\u0443\u0434\u043e\u043a\u0443 \u0438 \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e \u0441\u0443\u0442\u0438 \u0442\u043e\u043b\u044c\u043a\u043e 2 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u043f\u0440\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0438 \u044d\u0442\u043e\u0439 \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0438: <\/p>\n<ol>\n<li> \u0418\u0433\u0440\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0446\u0438\u0444\u0440\u0430\u043c\u0438 \u043e\u0442 1 \u0434\u043e 9. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u0432\u0438\u0434\u044b \u0441\u0443\u0434\u043e\u043a\u0443, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0435\u0448\u0430\u044e\u0442 \u0431\u0443\u043a\u0432\u0430\u043c\u0438 \u0438\u043b\u0438 \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u043c\u0438, \u043d\u043e \u044d\u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0438\u0433\u0440\u044b \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 \u0438 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0435\u0439. <\/li>\n<li> \u0426\u0438\u0444\u0440\u0443 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043b\u0438\u0448\u044c \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0435, \u0441\u0442\u043e\u043b\u0431\u0446\u0435 \u0438 \u043c\u0430\u043b\u043e\u043c \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0435 3 \u0445 3, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0430 \u043f\u0443\u0441\u0442\u0430\u044f \u044f\u0447\u0435\u0439\u043a\u0430. <\/li>\n<\/ol>\n<p>  \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0438, \u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u043c\u043d\u0435 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u0441\u044f \u043c\u0435\u0442\u043e\u0434 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043c\u0430\u043b\u044b\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0440\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u0438\u043c\u0435\u043d\u043d\u043e \u0435\u0433\u043e.<br \/>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u043c\u0430\u043b\u044b\u0439 \u043a\u0432\u0430\u0434\u0440\u0430\u0442 \u0438 \u0432\u044b\u043f\u0438\u0448\u0438\u0442\u0435 \u0440\u044f\u0434\u043e\u043c \u0441 \u043d\u0438\u043c \u0432\u0441\u0435 \u0446\u0438\u0444\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432 \u043d\u0451\u043c \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/75\/83\/er\/7583ertnlakaxbhzw_vuz5ewvbk.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/75\/83\/er\/7583ertnlakaxbhzw_vuz5ewvbk.jpeg\" data-blurred=\"true\"\/><\/div>\n<p>  \u0412\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043e\u0434\u043d\u0443 \u0438\u0437 \u0444\u0438\u0433\u0443\u0440, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u043e \u043c\u0435\u043d\u044c\u0448\u0435 \u0432\u0441\u0435\u0433\u043e \u044f\u0447\u0435\u0435\u043a. \u041f\u043e\u043b\u043e\u0436\u0438\u043c, \u043b\u0435\u0432\u044b\u0439 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0432\u0430\u0434\u0440\u0430\u0442. \u0422\u0430\u043c \u043d\u0435\u0442 \u0446\u0438\u0444\u0440 1, 2 \u0438 8.<\/p>\n<p>  \u0421\u0440\u0430\u0437\u0443 \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u0447\u0442\u043e 2 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u043e\u044f\u0442\u044c \u043d\u0438 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u044f\u0447\u0435\u0435\u043a \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435, \u0432\u0435\u0434\u044c \u0442\u0430\u043c \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0434\u0432\u043e\u0439\u043a\u0430. \u0417\u043d\u0430\u0447\u0438\u0442, \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0439 \u0446\u0438\u0444\u0440\u044b \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e.<\/p>\n<p>  \u041e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u0432\u0435 \u043a\u043b\u0435\u0442\u043a\u0438 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043c\u0430\u043b\u043e\u0433\u043e \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0430. \u041d\u043e 1 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u043f\u0440\u0430\u0432\u043e\u0439 \u044f\u0447\u0435\u0439\u043a\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0432\u043e \u0432\u0441\u0451\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0442\u0430\u0432\u0438\u043c \u0442\u0443\u0434\u0430 8. \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0434\u043b\u044f \u0435\u0434\u0438\u043d\u0438\u0446\u044b \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u043d\u043e \u043c\u0435\u0441\u0442\u043e:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/-f\/hc\/qk\/-fhcqkhgajlyz9bx3bcnyfrnyrk.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/-f\/hc\/qk\/-fhcqkhgajlyz9bx3bcnyfrnyrk.jpeg\" data-blurred=\"true\"\/><\/div>\n<p>  \u0420\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u0444\u0438\u0433\u0443\u0440\u0443. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043b\u0435\u0432\u0443\u044e \u043d\u0438\u0436\u043d\u044e\u044e, \u0433\u0434\u0435 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0442\u0440\u0451\u0445 \u0446\u0438\u0444\u0440 \u2014 7, 8 \u0438 9. \u0422\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u0446\u0438\u0444\u0440\u044b \u0432 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u044b\u0435 \u0434\u043b\u044f \u043d\u0438\u0445 \u044f\u0447\u0435\u0439\u043a\u0438.<\/p>\n<p>  \u0411\u0435\u0440\u0451\u043c 7. \u041e\u043d\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u0442\u043e\u044f\u0442\u044c \u043d\u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c, \u043d\u0438 \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u0438\u0437 \u043d\u0438\u0445 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u0435\u043c\u0451\u0440\u043a\u0430. \u0417\u043d\u0430\u0447\u0438\u0442, \u044d\u0442\u0443 \u0446\u0438\u0444\u0440\u0443 \u043c\u043e\u0436\u043d\u043e \u0432\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0442\u0440\u0435\u0442\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446.<\/p>\n<p>  \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a 8. \u041e\u043d\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0443\u0436\u0435 \u0441\u0442\u043e\u0438\u0442 \u0432 \u043d\u0451\u043c. \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e\u0435 \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0438\u0444\u0440\u044b \u043c\u0435\u0441\u0442\u043e \u2014 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446.<\/p>\n<p>  \u0426\u0438\u0444\u0440\u0443 9 \u043f\u043e \u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u043c\u0443 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u0443\u044e \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0443\u044e \u044f\u0447\u0435\u0439\u043a\u0443 \u2014 \u0432 \u0446\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0435:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/bp\/if\/1n\/bpif1nzoxlynmmjxbwghumolm1i.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/bp\/if\/1n\/bpif1nzoxlynmmjxbwghumolm1i.jpeg\" data-blurred=\"true\"\/><\/div>\n<p>  \u041f\u0440\u0438\u043c\u0435\u0440 \u0432\u044b\u0448\u0435 \u0432\u0437\u044f\u0442 <a href=\"https:\/\/lifehacker.ru\/kak-reshat-sudoku\/\">\u043e\u0442\u0441\u044e\u0434\u0430<\/a>, \u0442\u0430\u043c \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0443\u0434\u043e\u043a\u0443.<\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u0428\u0430\u0433 1. \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0443<\/font><\/h2>\n<p>  \u0420\u0430\u0437\u043e\u0431\u0440\u0430\u0432\u0448\u0438\u0441\u044c \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0435\u0439 \u0438 \u0442\u0435\u043e\u0440\u0438\u0435\u0439 \u044d\u0442\u043e\u0439 \u043f\u043e\u0442\u0440\u044f\u0441\u0430\u044e\u0449\u0435\u0439 \u043f\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0443\u0442\u0438 \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0438, \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u043c \u043a \u0440\u0430\u0431\u043e\u0442\u0435 \u043d\u0430\u0434 \u0435\u0451 \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0441 \u0442\u043e\u0447\u043a\u0438 \u0437\u0440\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430.<\/p>\n<p>  \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0441\u0443\u0434\u043e\u043a\u0443, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0441\u043c\u043e\u0436\u0435\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u0448 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c. \u042f \u0432\u0437\u044f\u043b 4 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u044d\u0442\u043e\u0439 \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0438 (\u0440\u0430\u0437\u043d\u044b\u0445 \u0446\u0432\u0435\u0442\u043e\u0432 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432):  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/6h\/sj\/tp\/6hsjtp_3tvuqa3hefhmn_r9spty.png\" data-src=\"https:\/\/habrastorage.org\/webt\/6h\/sj\/tp\/6hsjtp_3tvuqa3hefhmn_r9spty.png\"\/><\/div>\n<p>  \u0414\u043b\u044f \u0441\u0435\u0431\u044f \u044f \u0432\u044b\u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438:<\/p>\n<ol>\n<li> \u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430. <\/li>\n<li> \u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432. <\/li>\n<li> \u041d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u044f \u0441\u0443\u0434\u043e\u043a\u0443. <\/li>\n<li> \u041a\u043b\u0430\u0441\u0441\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f \u0446\u0438\u0444\u0440 \u0438\u043b\u0438 \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a \u0438\u0445 \u043d\u0430 \u0438\u0433\u0440\u043e\u0432\u043e\u043c \u043f\u043e\u043b\u0435. <\/li>\n<li> \u041f\u043e\u0438\u0441\u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0443\u0434\u043e\u043a\u0443. <\/li>\n<li> \u041d\u0430\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043d\u0430 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435. <\/li>\n<\/ol>\n<p>  \u0412\u043e-\u043f\u0435\u0440\u0432\u044b\u0445, \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044e (\u043c\u043e\u0451 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043f\u0430\u043f\u043a\u0435 \u0441 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043f\u0438\u0448\u0443 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435): <\/p>\n<pre><code class=\"python\">pathImage = 'Sudoku_test_1.png' # \u041f\u0443\u0442\u044c \u0434\u043e \u0442\u0435\u0441\u0442\u043e\u0432\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f <\/code><\/pre>\n<p>  \u0418 \u0432\u043e\u0442 \u0447\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u044d\u0442\u043e\u043c\u0443 \u043f\u0443\u0442\u0438:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/kz\/68\/dg\/kz68dglzxzciup5_bfpguktbsuw.png\" data-src=\"https:\/\/habrastorage.org\/webt\/kz\/68\/dg\/kz68dglzxzciup5_bfpguktbsuw.png\"\/><\/div>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043f\u0435\u0440\u0435\u0439\u0434\u0451\u043c \u043a \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f (\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438 \u043a \u043a\u043e\u0434\u0443), \u043d\u043e \u043f\u0435\u0440\u0435\u0434 \u044d\u0442\u0438\u043c \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0438 \u0444\u0430\u0439\u043b\u044b:<\/p>\n<pre><code class=\"python\">import cv2 import numpy as np from utlis import * <\/code><\/pre>\n<p>  <\/p>\n<pre><code class=\"python\"># \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f heightImg = 450 widthImg = 450 img = cv2.imread(pathImage) # \u0421\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u043d\u0430\u0448\u0435\u043c\u0443 \u043f\u0443\u0442\u0438 img = cv2.resize(img, (widthImg, heightImg)) # \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u0434 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0435 \u043d\u0430\u043c imgBlank = np.zeros((heightImg, widthImg, 3), np.uint8)  imgTreshold = preProcess(img) # \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0438\u0437 \u0444\u0430\u0439\u043b\u0430 \"utlis.py\" <\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f preProcess():<\/p>\n<pre><code class=\"python\"># \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f def preProcess(img):     imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # \u041a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u0432 \u043e\u0442\u0442\u0435\u043d\u043a\u0438 \u0441\u0435\u0440\u043e\u0433\u043e     imgBlur = cv2.GaussianBlur(imgGray, (5, 5), 1) # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0413\u0430\u0443\u0441\u0438\u0430\u043d\u043e\u0432 \u0411\u043b\u044e\u0440     imgTreshold = cv2.adaptiveTreshold(imgBlur, 255, 1, 1, 11, 2) # \u0414\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0430\u0434\u0430\u043f\u0442\u0438\u0432\u043d\u044b\u0439 \u0442\u0440\u0435\u0448\u0445\u043e\u043b\u0434     return imgTreshold <\/code><\/pre>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f stackImages():<\/p>\n<pre><code class=\"python\">def stackImages(imgArray, scale):     rows = len(imgArray)     cols = len(imgArray[0])     rowsAvailable = isinstance(imgArray[0], list)     width = imgArray[0][0].shape[1]     height = imgArray[0][0].shape[0]     if rowsAvailable:         for x in range(0, rows):             for y in range(0, cols):                 imgArray[x][y] = cv2.resize(imgArray[x][y], (0, 0), None, scale, scale)                 if len(imgArray[x][y].shape) == 2:                     imgArray[x][y] = cv2.cvtColor(imgArray[x][y], cv2.COLOR_GRAY2BGR)         imageBlank = np.zeros((height, width, 3), np.uint8)         hor = [imageBlank]*rows         hor_con =  [imageBlank]*rows         for x in range(0, rows):             hor[x] = np.hstack(imgArray[x])             hor_con[x] = np.concatenate(imgArray[x])         ver = np.vstack(hor)         ver_con = np.concatenate(hor)     else:         for x in range(0, rows):             imgArray[x] = cv2.resize(imgArray[x], (0, 0), None, scale, scale)             if len(imgArray[x].shape) == 2:                 imgArray[x] = cv2.cvtColor(imgArray[x], cv2.COLOR_GRAY2BGR)         hor = np.hstack(imgArray)         hor_con = np.concatenate(imgArray)         ver = hor     return ver <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c, \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0430\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043a\u043e\u0434\u043e\u043c:<\/p>\n<pre><code class=\"python\">imageArray = ([img, imgBlank, imgBlank, imgBlank], [imgBlank, imgBlank, imgBlank, imgBlank]) # \u041c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 stackedImage = stackImages(imageArray, 1) # \u0424\u0443\u043d\u043a\u0446\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0432\u044b\u0448\u0435 cv2.imshow('Stacked Images', stackedImage) # \u041f\u043e\u043a\u0430\u0437 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f  cv2.waitKey(0) <\/code><\/pre>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0447\u0442\u043e \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0432\u0435\u0441\u044c \u044d\u0442\u043e \u043a\u043e\u0434? \u041c\u043d\u043e\u0433\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u0435\u0441\u043b\u0438 \u0447\u0442\u043e, \u043c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438 \u043f\u043e \u0444\u0430\u043a\u0442\u0443 \u043d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c, \u043d\u043e \u0432\u0441\u0451 \u0436\u0435 \u043e\u043d\u0438 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u044f\u0442\u0441\u044f \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c. \u0410 \u0432\u043e\u0442 \u0447\u0442\u043e \u043e\u043d \u0432\u044b\u0432\u0435\u0434\u0435\u0442:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/5g\/b9\/yk\/5gb9ykwgjj2np_fm2xop_loynde.png\" data-src=\"https:\/\/habrastorage.org\/webt\/5g\/b9\/yk\/5gb9ykwgjj2np_fm2xop_loynde.png\"\/><\/div>\n<p>  \u0418 \u044d\u0442\u043e \u0432\u0441\u0451? \u041d\u0443 \u043f\u043e\u043a\u0430 \u0447\u0442\u043e \u0434\u0430, \u043d\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u0441\u0451 \u0436\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c.<\/p>\n<p>  \u0410 \u0447\u0442\u043e \u0436\u0435 \u0443 \u043d\u0430\u0441 \u0437\u0430 imgBlank? \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u0445 \u0437\u0430\u043c\u0435\u043d\u0438\u043c \u043d\u0430 \u043d\u0430\u0448\u0435 img:<\/p>\n<pre><code class=\"python\">imageArray = ([img, img, img, img], [img, img, img, img]) # \u041c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 <\/code><\/pre>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/4x\/un\/za\/4xunzamjzemyol606gfgtd_hwfq.png\" data-src=\"https:\/\/habrastorage.org\/webt\/4x\/un\/za\/4xunzamjzemyol606gfgtd_hwfq.png\"\/><\/div>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439, \u043d\u043e \u043e\u0436\u0438\u0434\u0430\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c!<\/p>\n<p>  \u0412\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043a\u043e\u0434\u0443:<\/p>\n<pre><code class=\"python\">imageArray = ([img, imgBlank, imgBlank, imgBlank], [imgBlank, imgBlank, imgBlank, imgBlank]) # \u041c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 <\/code><\/pre>\n<p>  \u0423 \u043d\u0430\u0441 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435, \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0435 \u0447\u0435\u0440\u0435\u0437 Treshold. \u0412\u0441\u0442\u0430\u0432\u0438\u043c \u0435\u0433\u043e \u043d\u0430 \u0432\u0442\u043e\u0440\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e:<\/p>\n<pre><code class=\"python\">imageArray = ([img, imgTreshold, imgBlank, imgBlank], [imgBlank, imgBlank, imgBlank, imgBlank]) # \u041c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 <\/code><\/pre>\n<p>  \u0418 \u0432\u043e\u0442 \u0447\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/dv\/ks\/6y\/dvks6ynia1-pnwdfkgc9azhqcgw.png\" data-src=\"https:\/\/habrastorage.org\/webt\/dv\/ks\/6y\/dvks6ynia1-pnwdfkgc9azhqcgw.png\"\/><\/div>\n<p>  \u041a\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0442\u0435\u043f\u0435\u0440\u044c \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043d\u0442\u0443\u0440\u044b \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u042d\u0442\u043e \u043d\u0430\u043c \u0438 \u043d\u0443\u0436\u043d\u043e \u2014 \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0438\u0434\u0435\u0442\u044c \u0446\u0438\u0444\u0440\u044b \u0438 \u0433\u0440\u0430\u043d\u0438\u0446\u044b \u043f\u043e\u043b\u044f. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0439\u0434\u0451\u043c \u0434\u0430\u043b\u044c\u0448\u0435!<\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u0428\u0430\u0433 2. \u041f\u043e\u0438\u0441\u043a \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432<\/font><\/h2>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0443\u0440\u044b \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u043b\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0435\u0449\u0451 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0431\u0443\u043a\u0432, \u0442. \u0435. \u043a\u043e\u0434\u0430. \u041d\u043e \u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u043f\u0440\u043e <a href=\"https:\/\/docs.opencv.org\/3.4\/d4\/d73\/tutorial_py_contours_begin.html\">\u043f\u043e\u0438\u0441\u043a \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432 \u0432 OpenCV<\/a>. <\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043a\u043e\u0434 (\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438, \u0442\u0430\u043c \u044f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043e\u0431\u044a\u044f\u0441\u043d\u0438\u0442\u044c \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442):<\/p>\n<pre><code class=\"python\"># \u0428\u0430\u0433 2. \u041f\u043e\u0438\u0441\u043a \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432 imgContours = img.copy() # \u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 imgBigContours = img.copy() # \u041a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0439 # \u041f\u043e\u0438\u0441\u043a \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u0432 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438, \u043f\u0440\u043e\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u043c \u0447\u0435\u0440\u0435\u0437 Treshold, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 RETR_EXTERNAL # \u0417\u0430\u0442\u0435\u043c \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c CHAIN_APPROX_SIMPLE contours, hierarchy = cv2.findContours(imgThreshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2:] cv2.drawContours(imgContours, contours, -1, (0, 255, 0), 3) # \u0420\u0438\u0441\u0443\u0435\u043c \u0432\u0441\u0435 \u043a\u043e\u043d\u0442\u0443\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043c\u043e\u0433\u043b\u0438 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u0442\u044c <\/code><\/pre>\n<p>  \u0417\u0430\u0447\u0435\u043c \u0432 \u0441\u0442\u0440\u043e\u0447\u043a\u0435 \u0432 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u043e\u0438\u0442 [-2:]: <\/p>\n<pre><code class=\"python\">contours, hierarchy = cv2.findContours(imgThreshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2:]<\/code><\/pre>\n<p>  \u041c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/stackoverflow.com\/questions\/25504964\/opencv-python-cv2-findcontours-valueerror-too-many-values-to-unpack\">\u0437\u0434\u0435\u0441\u044c<\/a> \u0438\u043b\u0438 \u043d\u0438\u0436\u0435:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/un\/ga\/as\/ungaas_dgtn_umjdbvru6qs4uow.png\" data-src=\"https:\/\/habrastorage.org\/webt\/un\/ga\/as\/ungaas_dgtn_umjdbvru6qs4uow.png\"\/><\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u043e\u0437\u044c\u043c\u0451\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e imgContours, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443 \u043d\u0430\u0441 \u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u043e\u0431\u0440\u0438\u0441\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u0442\u0443\u0440\u0430\u043c\u0438, \u0438 \u043f\u043e\u0434\u0441\u0442\u0430\u0432\u0438\u043c \u0432 \u043d\u0430\u0448 \u0432\u044b\u0432\u043e\u0434 \u0432\u043c\u0435\u0441\u0442\u043e imgBlank:<\/p>\n<pre><code class=\"python\">imageArray = ([img, imgThreshold, imgContours, imgBlank], [imgBlank, imgBlank, imgBlank, imgBlank]) # \u041c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0443 \u0441 \u0443\u0436\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u043c \u043d\u0430\u043c\u0438 \u043a\u043e\u043d\u0442\u0443\u0440\u043e\u043c:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/on\/y_\/df\/ony_dftrmhoy4dp2d3pbrxho_lo.png\" data-src=\"https:\/\/habrastorage.org\/webt\/on\/y_\/df\/ony_dftrmhoy4dp2d3pbrxho_lo.png\"\/><\/div>\n<p>  <u>\u0417\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u0435<\/u> \u0434\u043b\u044f \u043b\u044e\u0434\u0435\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043f\u0440\u043e\u0441\u044f\u0442: \u0430 \u043f\u043e\u0447\u0435\u043c\u0443 \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0443\u0440? \u041e\u0442\u0432\u0435\u0447\u0443: \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043c\u044b \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c \u0435\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u00ab\u043e\u0442\u0431\u0440\u043e\u0441\u0438\u0442\u044c\u00bb. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u043b\u043b\u044e\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0430\u0445:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/zh\/fv\/fj\/zhfvfj9afnry6ygnanf_trmg-m0.png\" data-src=\"https:\/\/habrastorage.org\/webt\/zh\/fv\/fj\/zhfvfj9afnry6ygnanf_trmg-m0.png\"\/><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/5j\/ol\/ot\/5jolot9p66zshhbnqlbhy8vditw.png\" data-src=\"https:\/\/habrastorage.org\/webt\/5j\/ol\/ot\/5jolot9p66zshhbnqlbhy8vditw.png\"\/><\/div>\n<p>  \u041a\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u00ab\u0447\u0438\u0441\u0442\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u00bb \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0438 \u00ab\u043e\u0442\u0441\u0435\u043a\u0430\u0435\u043c\u00bb \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0443\u0440\u044b. \u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c!<\/p>\n<h2><font color=\"#3AC1EF\">\u258d \u0428\u0430\u0433 3. \u041f\u043e\u0438\u0441\u043a \u0441\u0430\u043c\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0443\u0440\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0435\u0433\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u0441\u0443\u0434\u043e\u043a\u0443<\/font><\/h2>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0441\u0435\u0433\u043e \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u043d\u0430\u043c \u0432 \u044d\u0442\u043e\u043c. <\/p>\n<p>  \u0424\u0443\u043d\u043a\u0446\u0438\u044f biggestContour():<\/p>\n<pre><code class=\"python\">def biggestContour(contours):     biggest = np.array([])     max_area = 0     for i in contours:         area = cv2.contourArea(i)         if area > 50:             peri = cv2.arcLength(i, True)             approx = cv2.approxPolyDP(i, 0.02 * peri, True)             if area > max_area and len(approx) == 4:                 biggest = approx                 max_area = area      return biggest, max_area <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u043f\u0435\u0440\u0435\u0443\u043f\u043e\u0440\u044f\u0434\u043e\u0447\u0438\u0432\u0430\u043d\u0438\u044f \u0442\u043e\u0447\u0435\u043a \u0434\u043b\u044f \u0438\u0441\u043a\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u044b. \u041f\u043e\u044f\u0441\u043d\u044f\u044e: \u043c\u044b \u043d\u0435 \u0437\u043d\u0430\u0435\u043c \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0442\u043e\u0447\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0438\u0437 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 biggest, \u0442. \u0435. \u043c\u044b \u043d\u0435 \u0437\u043d\u0430\u0435\u043c, \u043a\u0430\u043a\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0441\u0432\u0435\u0440\u0445\u0443, \u043a\u0430\u043a\u0430\u044f \u0441\u043d\u0438\u0437\u0443 \u0438 \u0442. \u0434. \u0418\u043c\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u0438 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0441\u0435\u0439\u0447\u0430\u0441 \u0444\u0443\u043d\u043a\u0446\u0438\u044e reorder():<\/p>\n<pre><code class=\"python\">def reorder(myPoints):     myPoints = myPoints.reshape((4, 2))     myPointsNew = np.zeros((4, 1, 2), dtype = np.int32)     add = myPoints.sum(1)     myPointsNew[0] = myPoints[np.argmin(add)]     myPointsNew[3] = myPoints[np.argmax(add)]     diff = np.diff(myPoints, axis = 1)     myPointsNew[1] = myPoints[np.argmin(diff)]     myPointsNew[2] = myPoints[np.argmax(diff)]         return myPointsNew <\/code><\/pre>\n<p>  \u0421\u0443\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0438\u0436\u0435:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/py\/so\/yz\/pysoyz_f0rl-na2nvns5ww_v2o8.png\" data-src=\"https:\/\/habrastorage.org\/webt\/py\/so\/yz\/pysoyz_f0rl-na2nvns5ww_v2o8.png\"\/><\/div>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435:<\/p>\n<pre><code class=\"python\"># \u0428\u0430\u0433 3. \u041f\u043e\u0438\u0441\u043a \u0441\u0430\u043c\u043e\u0433\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0443\u0440\u0430 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0435\u0433\u043e \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u043b\u044f \u0434\u043b\u044f \u0441\u0443\u0434\u043e\u043a\u0443 biggest, maxArea = biggestContour(contours) # \u041d\u0430\u0448\u0430 \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e \u043f\u043e\u0438\u0441\u043a\u0443 \u043a\u043e\u043d\u0442\u0443\u0440\u0430 if biggest.size != 0:     biggest = reorder(biggest)     cv2.drawContours(imgBigContours, biggest, -1, (0, 0, 255), 15) # \u0420\u0438\u0441\u0443\u0435\u043c \u0441\u0430\u043c\u044b\u0439 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043a\u043e\u043d\u0442\u0443\u0440     pts1 = np.float32(biggest)     pts2 =np.float32([[0, 0], [widthImg, 0], [0, heightImg], [widthImg, heightImg]]) # \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \"\u0442\u043e\u0447\u0435\u043a\"     matrix = cv2.getPerspectiveTransform(pts1, pts2)     imgWarpColored = cv2.warpPerspective(img, matrix, (widthImg, heightImg))     imgDetectedDigits = imgBlank.copy()     imgWarpColored = cv2.cvtColor(imgWarpColored, cv2.COLOR_BGR2GRAY) <\/code><\/pre>\n<p>  \u041d\u0430\u043c \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c imgBlank \u0432 \u043d\u0430\u0448\u0435\u043c \u0432\u044b\u0432\u043e\u0434\u0435 \u043d\u0430 imgBigContours:<\/p>\n<pre><code class=\"python\">imageArray = ([img, imgThreshold, imgContours,  imgBigContours], [imgBlank, imgBlank, imgBlank, imgBlank]) # \u041c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 <\/code><\/pre>\n<p>  \u0418 \u0432\u043e\u0442 \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/jk\/0u\/pj\/jk0upjmyhkp5ugdxirdm30zzvfi.png\" data-src=\"https:\/\/habrastorage.org\/webt\/jk\/0u\/pj\/jk0upjmyhkp5ugdxirdm30zzvfi.png\"\/><\/div>\n<p>  \u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c\u0441\u044f \u0441 \u044d\u0442\u043e\u0439 \u0447\u0430\u0441\u0442\u044c\u044e:<\/p>\n<pre><code class=\"python\">    imgWarpColored = cv2.warpPerspective(img, matrix, (widthImg, heightImg))     imgDetectedDigits = imgBlank.copy()     #imgWarpColored = cv2.cvtColor(imgWarpColored, cv2.COLOR_BGR2GRAY) <\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u00ab\u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u0435\u043c\u00bb \u043d\u0430\u0448\u0435 \u043f\u043e\u043b\u0435, \u0438 \u0435\u0441\u043b\u0438 \u043c\u044b \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044e\u044e \u0441\u0442\u0440\u043e\u0447\u043a\u0443, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0432\u0441\u0442\u0430\u0432\u0438\u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e imgWarpColored \u0432 \u043d\u0430\u0448 \u043a\u043e\u0434 \u0432\u044b\u0432\u043e\u0434\u0430:<\/p>\n<pre><code class=\"python\">imageArray = ([img, imgThreshold, imgContours,  imgBigContours], [imgWarpColored, imgBlank, imgBlank, imgBlank]) # \u041c\u0430\u0441\u0441\u0438\u0432 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 <\/code><\/pre>\n<p>  \u041c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 (\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0446\u0432\u0435\u0442\u0435):<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/rw\/5m\/az\/rw5mazkp1wucswmvm_k1jdf5ia8.png\" data-src=\"https:\/\/habrastorage.org\/webt\/rw\/5m\/az\/rw5mazkp1wucswmvm_k1jdf5ia8.png\"\/><\/div>\n<p>  \u0410 \u0435\u0441\u043b\u0438 \u0440\u0430\u0441\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u0435\u043c, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 (\u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0432 \u043e\u0442\u0442\u0435\u043d\u043a\u0430\u0445 \u0441\u0435\u0440\u043e\u0433\u043e):<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/de\/2h\/mf\/de2hmfimv736rt_hvkctnf0vuni.png\" data-src=\"https:\/\/habrastorage.org\/webt\/de\/2h\/mf\/de2hmfimv736rt_hvkctnf0vuni.png\"\/><\/div>\n<h2><font color=\"#3AC1EF\">\u258d \u0428\u0430\u0433 4. \u041d\u0430\u0439\u0434\u0451\u043c \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043a\u0430\u0436\u0434\u0443\u044e \u0446\u0438\u0444\u0440\u0443<\/font><\/h2>\n<p>  \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043d\u0430 imgWarpColored \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0432\u0430\u0434\u0440\u0430\u0442 \u0438 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u0442\u0430\u043c \u0446\u0438\u0444\u0440\u0443 (\u0435\u0441\u043b\u0438 \u043e\u043d\u0430 \u0442\u0430\u043c \u0435\u0441\u0442\u044c). <\/p>\n<p>  \u0414\u043b\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u0437\u0430\u0434\u0430\u0447\u0438 \u044f \u043e\u0431\u0443\u0447\u0438\u043b \u043d\u0435\u0439\u0440\u043e\u043d\u043d\u0443\u044e \u0441\u0435\u0442\u044c \u043d\u0430 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 MNIST. \u041e \u0442\u043e\u043c, \u043a\u0430\u043a \u044f \u043e\u0431\u0443\u0447\u0430\u043b \u0438 \u043a\u0430\u043a \u0431\u0443\u0434\u0443 \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442, \u044f \u0432\u044b\u043f\u0443\u0449\u0443 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e. \u041f\u043e\u043a\u0430 \u043b\u0438\u0448\u044c \u043c\u043e\u0433\u0443 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u0441 \u043a\u043e\u0434\u043e\u043c \u0438 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u043e\u0434\u0435\u043b\u0438 (\u043e\u043d\u0430 \u043d\u0435 \u0441\u0438\u043b\u044c\u043d\u043e \u0432\u0435\u043b\u0438\u043a\u0430, \u043f\u043e\u0440\u044f\u0434\u043a\u0430 0.7).<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/vm\/7t\/-a\/vm7t-a1crdnegs6e28qu4ekz8h8.png\" data-src=\"https:\/\/habrastorage.org\/webt\/vm\/7t\/-a\/vm7t-a1crdnegs6e28qu4ekz8h8.png\"\/><\/div>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/tg\/an\/-n\/tgan-nxot0wqzfzvyy_gl0g51gw.png\" data-src=\"https:\/\/habrastorage.org\/webt\/tg\/an\/-n\/tgan-nxot0wqzfzvyy_gl0g51gw.png\"\/><\/div>\n<p>  <\/p>\n<blockquote><p>\u0421\u0440\u0430\u0437\u0443 \u0445\u043e\u0447\u0443 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0441 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u043a\u0430 \u0432\u0441\u0451 \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u044f \u043e\u0431\u0443\u0447\u0430\u043b \u043d\u0430 \u00ab\u0441\u043a\u043e\u0440\u0443\u044e \u0440\u0443\u043a\u0443\u00bb, \u0441\u0434\u0435\u043b\u0430\u043b \u0432\u0441\u0435\u0433\u043e 4 \u044d\u043f\u043e\u0445\u0438 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f, \u0432\u043c\u0435\u0441\u0442\u043e 10 \u0438 \u0431\u043e\u043b\u0435\u0435, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043b. \u0411\u043b\u043e\u043a\u043d\u043e\u0442 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 .ipynb \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 \u0443 \u043c\u0435\u043d\u044f \u043d\u0430 GitHub, \u043d\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u0430. \u0412 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u044f \u0435\u0433\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044e, \u0434\u043e\u0432\u0435\u0434\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0434\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430, \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 GitHub \u0431\u0443\u0434\u0435\u0442 \u0432\u043d\u0438\u0437\u0443. \u041d\u043e \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0443 \u043c\u0435\u043d\u044f \u0432\u0441\u0451 \u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0446\u0438\u0444\u0440 \u0432 \u044d\u0442\u043e\u043c \u043a\u0435\u0439\u0441\u0435 \u0438 \u0432\u044b\u0434\u0430\u0442\u044c \u0432\u0430\u043c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442. \u0415\u0449\u0451 \u0440\u0430\u0437 \u043e\u0431\u0440\u0430\u0449\u0430\u044e \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435, \u0447\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0441 \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0446\u0438\u0444\u0440 \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0435\u0439 \u043c\u043e\u0434\u0435\u043b\u0438 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u043d\u0430 \u044d\u0442\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u0440\u0435\u043c\u044f, \u0430 \u0432\u0432\u0438\u0434\u0443 \u0441\u0435\u0441\u0441\u0438\u0438 \u0443 \u043c\u0435\u043d\u044f \u0435\u0433\u043e \u043d\u0435\u0442. \u041f\u0440\u043e\u0448\u0443 \u043f\u043e\u043d\u044f\u0442\u044c, \u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0438 \u043d\u0435 \u0440\u0443\u0433\u0430\u0442\u044c\u0441\u044f \u043d\u0430 \u043c\u0435\u043d\u044f \u0437\u0430 \u044d\u0442\u0443 \u043e\u0448\u0438\u0431\u043a\u0443.<\/p><\/blockquote>\n<p>  \u0418\u0442\u0430\u043a, \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u043a\u043e\u0434\u0443. \u041d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f splitBoxes(), \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u0431\u0438\u0442\u044c imgWarpColored \u043d\u0430 81 \u044f\u0447\u0435\u0439\u043a\u0443 (\u043c\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u0441\u043f\u043b\u0438\u0442 \u043f\u043e <a href=\"https:\/\/numpy.org\/doc\/stable\/reference\/generated\/numpy.hsplit.html\">\u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438<\/a> \u0438 <a href=\"https:\/\/numpy.org\/doc\/stable\/reference\/generated\/numpy.vsplit.html\">\u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438<\/a>):<\/p>\n<pre><code class=\"python\">def splitBoxes(img):     rows = np.vsplit(img, 9)     boxes = []     for r in rows:         cols = np.hsplit(r, 9)         for box in cols:             boxes.append(box)     return boxes <\/code><\/pre>\n<p>  \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0432\u044b\u0440\u0435\u0437\u0430\u043b\u0438\u0441\u044c \u043d\u0430\u0448\u0438 \u044f\u0447\u0435\u0439\u043a\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c:<\/p>\n<pre><code class=\"python\">cv2.imshow(boxes[9])<\/code><\/pre>\n<p>  \u0418 \u0432\u043e\u0442 \u0447\u0442\u043e \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/tg\/px\/qz\/tgpxqz0lqq_dr1vcxgxha0oytp8.png\" data-src=\"https:\/\/habrastorage.org\/webt\/tg\/px\/qz\/tgpxqz0lqq_dr1vcxgxha0oytp8.png\"\/><\/div>\n<p>  \u041a\u0430\u043a \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0443 \u043d\u0430\u0441 \u0432\u0441\u0451 \u0432\u044b\u0440\u0435\u0437\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0438 \u044f\u0447\u0435\u0439\u043a\u0430 \u0432\u0438\u0434\u043d\u0430. \u0425\u043e\u0447\u0443 \u0437\u0430\u043c\u0435\u0442\u0438\u0442\u044c, \u0447\u0442\u043e \u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0437\u0430\u0434\u0430\u0432\u0430\u043b\u0438 \u0432 \u043f\u0435\u0440\u0432\u043e\u043c \u0448\u0430\u0433\u0435, \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u043a\u0440\u0430\u0442\u0435\u043d 9, \u0438\u043d\u0430\u0447\u0435 \u043a\u043e\u043c\u043f\u0438\u043b\u044f\u0442\u043e\u0440 \u0432\u044b\u0434\u0430\u0441\u0442 \u043d\u0430\u043c \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043e\u0431 \u043e\u0448\u0438\u0431\u043a\u0435:<\/p>\n<pre><code class=\"python\">heightImg = 450 widthImg = 450 <\/code><\/pre>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043c\u044b \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043c\u043e\u0434\u0435\u043b\u0438 (\u0443 \u043c\u0435\u043d\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f mnist.h5):<\/p>\n<pre><code class=\"python\">from tensorflow.keras.models import load_model  def initializePredictionModel():     model = load_model('mnist.h5')     return model <\/code><\/pre>\n<p>  \u0412\u044b\u0448\u0435 \u043c\u044b \u0438\u043c\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044c \u00abload_model\u00bb \u0438\u0437 tensorflow.keras.models (\u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043d\u044f\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043d\u0435 \u043f\u0443\u0433\u0430\u0439\u0442\u0435\u0441\u044c).<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"python\">def getPrediciton(boxes, model):     result = []     for image in boxes:         # \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f         img = np.asarry(image)         img = img[4:img.shape[0] - 4, 4:img.shape[1] - 4]         img = cv2.resize(img, (28, 28))         img = img \/ 255         img = img.reshape(1, 28, 28, 1)         # \u041f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435         predictions = model.predict(img)         classIndex = np.argmax(predictions, axis = -1)         probabilityValue = np.amax(predictions)         #print(classIndex, probabilityValue)         # \u0421\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u0432         if probabilityValue > 0.8:             result.append(classIndex[0])         else:             result.append(0)     return result <\/code><\/pre>\n<p>  \u0418 \u0432\u043e\u0442 \u0447\u0442\u043e \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432 \u0438\u0442\u043e\u0433\u0435:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/yn\/ov\/k4\/ynovk4tz2dm5s6up16xmvqqwtue.png\" data-src=\"https:\/\/habrastorage.org\/webt\/yn\/ov\/k4\/ynovk4tz2dm5s6up16xmvqqwtue.png\"\/><\/div>\n<p>  \u042f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u0446\u0438\u044f\u0445 \u0441\u0443\u0434\u043e\u043a\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0447\u0438\u0441\u043b\u0430 \u043c\u043e\u0433\u0443\u0442 \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0442\u0435\u0445 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u043e\u0432, \u0447\u0442\u043e \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432\u044b\u0448\u0435. \u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0441\u0434\u0435\u043b\u0430\u043d\u043e \u043d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0435 \u0441\u0443\u0434\u043e\u043a\u0443:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/va\/p0\/gt\/vap0gt6f94spkn2y8jwhd1lprkw.png\" data-src=\"https:\/\/habrastorage.org\/webt\/va\/p0\/gt\/vap0gt6f94spkn2y8jwhd1lprkw.png\"\/><\/div>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c \u0438\u0437 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432\u044b\u0448\u0435, \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u0441\u0445\u043e\u0436\u0438. \u041d\u0430 \u044d\u0442\u043e\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u0435 \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439, \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0438\u0441\u0430\u043b \u0440\u0430\u043d\u0435\u0435, \u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043e\u0439 \u0441 \u043c\u043e\u0434\u0435\u043b\u044c\u044e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0432\u0437\u044f\u0442\u044c \u0434\u043b\u044f \u0441\u0435\u0431\u044f \u0432\u0440\u0435\u043c\u044f \u043d\u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0430 \u0438 \u043d\u0430 \u044d\u0442\u043e\u043c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e. \u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0434\u043e\u043f\u0438\u0448\u0435\u043c \u043d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044e \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u0441\u0443\u0434\u043e\u043a\u0443 \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438. \u0410 \u043f\u043e\u043a\u0430 \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0443 \u0432\u0430\u0441 \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c, \u043a\u0430\u043a \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043c\u043e\u0434\u0435\u043b\u044c \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0447\u0438\u0441\u0435\u043b? \u041f\u0438\u0448\u0438\u0442\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445, \u044f \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0447\u0442\u0443 \u0438 \u043c\u044b \u0432\u043c\u0435\u0441\u0442\u0435 \u0434\u043e\u0432\u0435\u0434\u0451\u043c \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043e \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430!<\/p>\n<p>  \u0410 \u043f\u043e\u043a\u0430 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0435\u0441\u0442\u044c \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/github.com\/VolinNilov\/Sudoku_Solver\">\u043d\u0430 \u043c\u043e\u0451\u043c GitHub<\/a>.<\/p>\n<p>  <a href=\"http:\/\/ruvds.com\/ru-rub?utm_source=habr&amp;utm_medium=article&amp;utm_campaign=VolinNilov&amp;utm_content=#4_nejronnye_seti_dlya_nachinayushhix_sudoku_solver_sudoku_chast_1\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/ym\/oc\/6_\/ymoc6_v0doy8yrm1y4xsrjlxotc.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/ym\/oc\/6_\/ymoc6_v0doy8yrm1y4xsrjlxotc.jpeg\" data-blurred=\"true\"\/><\/a><\/div>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/706164\/\"> https:\/\/habr.com\/ru\/company\/ruvds\/blog\/706164\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><a href=\"https:\/\/habr.com\/ru\/company\/ruvds\/blog\/706164\/\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/6g\/ma\/ol\/6gmaolonohchee0o1kbigh5vipa.png\" data-src=\"https:\/\/habrastorage.org\/webt\/6g\/ma\/ol\/6gmaolonohchee0o1kbigh5vipa.png\"\/><\/div>\n<p><\/a><br \/>  \u041f\u0440\u0435\u0434\u044b\u0441\u0442\u043e\u0440\u0438\u044f: \u043e\u0434\u043d\u0438\u043c \u0437\u0438\u043c\u043d\u0438\u043c \u0432\u0435\u0447\u0435\u0440\u043e\u043c, \u0430 \u0441\u043a\u043e\u0440\u0435\u0435 \u043d\u043e\u0447\u044c\u044e, \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u0430 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0438\u0434\u0435\u044f. \u041f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0433\u043e \u0437\u0440\u0435\u043d\u0438\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043e\u0434\u043d\u043e\u0439 \u043a\u043b\u0430\u0441\u0441\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0433\u043e\u043b\u043e\u0432\u043e\u043b\u043e\u043c\u043a\u0438 \u0441 \u0447\u0438\u0441\u043b\u0430\u043c\u0438, \u0430 \u0435\u0441\u043b\u0438 \u0431\u044b\u0442\u044c \u0442\u043e\u0447\u043d\u0435\u0435 \u2014 \u0441\u0443\u0434\u043e\u043a\u0443. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u043c\u043e\u0439 \u0434\u0435\u0434\u0443\u0448\u043a\u0430 \u2014 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u0440\u043e\u0441\u0441\u0432\u043e\u0440\u0434\u043e\u0432, \u0441\u0443\u0434\u043e\u043a\u0443 \u0438 \u0442. \u0434. \u0417\u043d\u0430\u044f \u044d\u0442\u043e, \u044f \u043f\u043e\u0434\u0443\u043c\u0430\u043b, \u0447\u0442\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u043d\u0435\u043f\u043b\u043e\u0445\u043e \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a-\u043d\u0438\u0431\u0443\u0434\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0443 \u0437\u0430\u0434\u0430\u0447\u0443. \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u0434\u043e \u0437\u0430\u0434\u0430\u0447\u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043a\u0440\u043e\u0441\u0441\u0432\u043e\u0440\u0434\u043e\u0432 \u043c\u043d\u0435 \u0435\u0449\u0451 \u0434\u0430\u043b\u0435\u043a\u043e, \u043d\u043e \u0432\u043e\u0442 \u0441 \u0437\u0430\u0434\u0430\u0447\u0435\u0439 \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u0443\u0434\u043e\u043a\u0443, \u0443 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0435\u0441\u0442\u044c \u0447\u0451\u0442\u043a\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. <\/p>\n<p>  <u>\u0421\u043f\u043e\u0439\u043b\u0435\u0440:<\/u> \u044f \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u043b\u0441\u044f \u0441 \u043f\u0430\u0440\u043e\u0439 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043a\u0430\u043a \u0432 \u0441\u0432\u043e\u0451\u043c \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u044d\u0442\u043e\u0439 \u0438\u0433\u0440\u044b, \u0442\u0430\u043a \u0438 \u0432 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0438 \u043c\u0435\u043d\u044f \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u043c (\u0442\u0443\u0442 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b\u0442\u044c \u0441\u043c\u0435\u0448\u043d\u043e), \u043d\u043e \u0432\u0441\u0451 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c. \u0421 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043c\u043e\u0435\u0433\u043e \u0442\u0440\u0443\u0434\u0430 \u044f \u0432\u0430\u043c \u0438 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f!<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-342913","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/342913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=342913"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/342913\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=342913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=342913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=342913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}