{"id":302686,"date":"2020-04-28T15:00:47","date_gmt":"2020-04-28T15:00:47","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=302686"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=302686","title":{"rendered":"\u041f\u043e\u0434\u0431\u043e\u0440 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u0438\u0433\u0440\u043e\u0432\u043e\u043c\u0443 \u043f\u0435\u0440\u0441\u0443 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0433\u0435\u043d\u0435\u0442\u0438\u043a\u0438\/\u044d\u0432\u043e\u043b\u044e\u0446\u0438\u0438 \u043d\u0430 Python"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/499450\/\">\u041a\u0430\u043a \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0443\u044e \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0443 \u0432 \u043b\u044e\u0431\u0438\u043c\u043e\u0439 \u0438\u0433\u0440\u0435? \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0435\u0451 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430 \u0438\u0437 World of Warcraft) \u0438 \u043d\u0430\u0439\u0442\u0438 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0435\u0435. \u0411\u0435\u0437 \u0432\u0441\u044f\u043a\u043e\u0439 \u043c\u0430\u0433\u0438\u0438 \u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u041d\u043e \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043d\u0435 \u00ab\u0432 \u043b\u043e\u0431\u00bb, \u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0433\u0435\u043d\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432, \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044f\u044f \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e? \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0430\u044e\u0442\u0441\u044f \u0438 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0442 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0438? \u041f\u043e\u0435\u0445\u0430\u043b\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zn\/wd\/vi\/znwdvivpeiswsupkqrhdpgvt0mg.png\" alt=\"image\"><br \/>  <a name=\"habracut\"><\/a><br \/>  \u042d\u0442\u0430 \u0441\u0442\u0430\u0442\u044c\u044f \u2014 \u0443\u0433\u043b\u0443\u0431\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043c\u044b <a href=\"https:\/\/habr.com\/ru\/post\/495774\/\">\u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439<\/a>, \u0433\u0434\u0435 \u0443\u0436\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0434\u0435\u0442\u0430\u043b\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 \u0438 \u0432\u043e\u0437\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0438.<\/p>\n<p>  <b>\u0426\u0435\u043b\u044c:<\/b> \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u043c\u0441\u044f, \u043a\u0430\u043a \u0441\u0432\u043e\u0438\u043c\u0438 \u0441\u0438\u043b\u0430\u043c\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u044e \u0438\u0433\u0440\u043e\u0432\u044b\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432, \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c \u0438\u0445 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0433\u0435\u043d\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c (\u0441 \u043c\u0443\u0442\u0430\u0446\u0438\u044f\u043c\u0438) \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u044d\u0442\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 HTML, CSS \u0438 Javascript.<\/p>\n<p>  <b>\u0427\u0442\u043e \u043d\u0443\u0436\u043d\u043e:<\/b><\/p>\n<p>  <b>1.<\/b> Python 3 + \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u043c\u043e\u0434\u0443\u043b\u044c <a href=\"https:\/\/matplotlib.org\" rel=\"nofollow\">matplotlib<\/a>; IDE (\u0443 \u043c\u0435\u043d\u044f PyCharm);<br \/>  <b>2.<\/b> \u0435\u0441\u043b\u0438 \u0437\u0430\u0445\u043e\u0442\u0438\u0442\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043e\u0442\u0447\u0451\u0442\u0430, \u0442\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u0435 HTML, CSS, JavaScript (jQuery).<\/p>\n<h2>\u042d\u0422\u0410\u041f 1 \u2014 \u0441\u0442\u0430\u0432\u0438\u043c \u0446\u0435\u043b\u044c, \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0441 \u041e\u041e\u041f<\/h2>\n<p>  \u0418\u0442\u0430\u043a, \u043a\u043e\u043d\u0435\u0447\u043d\u0430\u044f \u0446\u0435\u043b\u044c \u043d\u0430\u0448\u0435\u0433\u043e \u043a\u043e\u0434\u0438\u043d\u0433\u0430 \u2014 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043a <b>\u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0435\u0439<\/b> \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0435 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u043f\u0440\u0438\u0439\u0442\u0438 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0433\u0435\u043d\u0435\u0442\u0438\u043a\u0438\/\u044d\u0432\u043e\u043b\u044e\u0446\u0438\u0438\/\u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u0431\u043e\u0440\u0430. \u0418 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u044d\u0442\u043e\u0442 \u043f\u0443\u0442\u044c.<\/p>\n<p>  \u041f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u043c \u043d\u0430\u0448\u0443 \u0446\u0435\u043b\u044c \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438:<\/p>\n<ol>\n<li>\u043f\u0440\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0430 (\u00ab\u0433\u0435\u043d\u044b\u00bb \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0440\u044f\u043c\u043e \u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0432\u044b\u0431\u043e\u0440 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0438)<\/li>\n<li>\u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u044b \u0440\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u0432, \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0438 \u0438\u043c \u0433\u0435\u043d\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043c\u0443\u0442\u0430\u0446\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c \u0438 \u0441\u0430\u043c\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0438\u0441\u043a\u0430 \u043b\u0443\u0447\u0448\u0435\u0433\u043e<\/li>\n<li>\u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0435\u043d\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u00ab\u0441\u043e\u0441\u0442\u044f\u0437\u0430\u043d\u0438\u0435\u00bb, \u043e\u0442\u0431\u043e\u0440 \u0433\u0435\u043d\u043e\u0432 (\u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c \u0438\u0445 \u043d\u043e\u0441\u0438\u0442\u0435\u043b\u0435\u0439 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u0445\u043e\u0434 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f \u043d\u0438\u0437\u0432\u0435\u0440\u0433\u0430\u043b \u00ab\u043f\u043b\u043e\u0445\u0438\u0435\u00bb \u0433\u0435\u043d\u044b \u0438 \u0432\u043e\u0437\u043d\u043e\u0441\u0438\u043b \u00ab\u0445\u043e\u0440\u043e\u0448\u0438\u0435\u00bb)<\/li>\n<li>\u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0451 \u0432 \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0438 \u0441\u043c\u043e\u0433\u0443\u0442 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0431\u043e\u0439\u0446\u043e\u0432<\/li>\n<li>\u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435, \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u043d\u0430 \u0447\u0442\u043e \u043f\u043e\u043b\u044e\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f (\u0430 \u0442\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0436\u0435!)<\/li>\n<li>\u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u0438\u0445 \u0437\u0430\u043d\u044f\u0442\u0438\u0439<\/li>\n<\/ol>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043d\u0430\u043c \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u041e\u041e\u041f, \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c 4 \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043b\u0430\u0441\u0441\u0430:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/8n\/lk\/u1\/8nlku1kg9mxyo1a18smitx1ev8q.png\" alt=\"image\"><\/p>\n<h2>\u042d\u0422\u0410\u041f 2 \u2014 \u0437\u0430\u0442\u043e\u0447\u043a\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 Rogue \u043f\u043e\u0434 \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435<\/h2>\n<p>  <\/p>\n<h4>\u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u043e \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u0445 \u043d\u0430 \u0431\u0435\u0440\u0435\u0433\u0443<\/h4>\n<p>  \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443 \u0447\u0430\u0441\u0442\u0438\u0442\u044c \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043c\u0438 \u00ab\u0433\u0435\u043d\u00bb (\u0432 \u043a\u043e\u0434\u0435 \u2014 <b>gene<\/b>) \u0438 \u00ab\u0433\u0435\u043d\u043e\u0442\u0438\u043f\u00bb (\u0432 \u043a\u043e\u0434\u0435 \u2014 <b>genotype<\/b>). \u0422\u0430\u043a\u0436\u0435 \u0431\u0443\u0434\u0443\u0442 \u00ab\u043c\u0443\u0442\u0430\u0446\u0438\u0438\u00bb (\u0432 \u043a\u043e\u0434\u0435 \u2014 <b>mutate<\/b>, <b>mutation<\/b>), \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0449\u0438\u0435 \u0441\u043c\u0435\u043d\u0443 \u043e\u0434\u043d\u0438\u043c \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0433\u0435\u043d\u0430\u043c\u0438 \u0441\u0432\u043e\u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f. \u0420\u0430\u0437\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0443\u0442\u0451\u043c \u00ab\u043e\u0442\u043f\u043e\u0447\u043a\u043e\u0432\u044b\u0432\u0430\u043d\u0438\u044f\u00bb \u043f\u043e\u0442\u043e\u043c\u043a\u0430 \u043e\u0442 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D1%80%D0%BE%D1%81%D1%81%D0%B8%D0%BD%D0%B3%D0%BE%D0%B2%D0%B5%D1%80\" rel=\"nofollow\">\u043a\u0440\u043e\u0441\u0441\u0438\u043d\u0433\u043e\u0432\u0435\u0440\u0430<\/a> \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0445 \u0443\u0441\u043b\u043e\u0436\u043d\u0435\u043d\u0438\u0439 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442. \u0413\u0435\u043d\u043e\u0442\u0438\u043f \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430 \u2014 \u044d\u0442\u043e <b>\u0441\u043f\u0438\u0441\u043e\u043a \u0438\u0437 7 \u0447\u0438\u0441\u0435\u043b<\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0435\u0433\u043e \u0433\u0435\u043d\u0430\u043c\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/dq\/gp\/e0\/dqgpe0pprnqno0pg2qavixmcghi.png\" alt=\"image\"><\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043a\u043b\u0430\u0441\u0441 Rogue \u0432 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 \u0441 <a href=\"https:\/\/habr.com\/ru\/post\/495774\/\">\u043f\u0440\u043e\u0448\u043b\u044b\u043c \u0440\u0430\u0437\u043e\u043c<\/a> \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u0440\u0430\u0441\u0442\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>  <b>1.<\/b> \u0420\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0433\u0435\u043d\u044b \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043f\u0443\u0442\u0435\u0439 (\u0431\u044b\u043b \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d \u0432 \u0441\u0430\u043c\u044b\u0439 \u043f\u0435\u0440\u0432\u044b\u0439 \u0434\u0435\u043d\u044c \u0438\u043b\u0438 \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043b \u043e\u0442 \u00ab\u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044f\u00bb \u0441 \u043c\u0443\u0442\u0430\u0446\u0438\u0435\u0439 \u0438\u043b\u0438 \u0431\u0435\u0437 \u043e\u043d\u043e\u0439). \u0417\u0430 \u044d\u0442\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u044e\u0442 \u043c\u0435\u0442\u043e\u0434\u044b <i><b>generate_random_genes<\/b><\/i>, <i><b>mutate_genes<\/b><\/i>, <i><b>mutate_gene<\/b><\/i>:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u043a\u043e\u0434 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u0433\u0435\u043d\u044b \u043c\u0435\u0442\u043e\u0434\u043e\u0432<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">    # \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0433\u0435\u043d\u043e\u0432 (\u0433\u0435\u043d\u043e\u0442\u0438\u043f):     def generate_random_genes(self):         dbg = DBG_rogue_generate_random_genes          self.my_genes[0] = randrange(0, len(RIGHT_HANDS))    # &lt;-- \u0434\u043b\u044f \u043f\u0440\u0430\u0432\u043e\u0439 \u0440\u0443\u043a\u0438:         self.my_genes[1] = randrange(0, len(LEFT_HANDS))     # &lt;-- \u0434\u043b\u044f \u043b\u0435\u0432\u043e\u0439 \u0440\u0443\u043a\u0438:         self.my_genes[2] = randrange(0, len(GLOVES))         # &lt;-- \u0434\u043b\u044f \u0440\u0443\u043a\u0430\u0432\u0438\u0446:         self.my_genes[3] = randrange(0, len(HEADS))          # &lt;-- \u0434\u043b\u044f \u0433\u043e\u043b\u043e\u0432\u044b:         self.my_genes[4] = randrange(0, len(CHESTS))         # &lt;-- \u0434\u043b\u044f \u043d\u0430\u0433\u0440\u0443\u0434\u043d\u0438\u043a\u0430:         self.my_genes[5] = randrange(0, len(PANTS))          # &lt;-- \u0434\u043b\u044f \u0448\u0442\u0430\u043d\u043e\u0432:         self.my_genes[6] = randrange(0, len(BOOTS))          # &lt;-- \u0434\u043b\u044f \u043e\u0431\u0443\u0432\u0438:          if dbg:  # \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438:             print('\\nf &quot;generate_random_genes&quot;:' + '\\n\\tgenes generated:\\n\\t', end='')             print(self.my_genes)       # \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0433\u0435\u043d\u044b \u0441 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u043c\u0443\u0442\u0430\u0446\u0438\u0438:     def mutate_genes(self, parent_genes):         dbg = DBG_rogue_mutate_genes          # \u0432\u0437\u044f\u0442\u044c \u0437\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0433\u0435\u043d\u044b:         self.my_genes = parent_genes.copy()          # \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0434\u0451\u0442 \u043b\u0438 \u043c\u0443\u0442\u0430\u0446\u0438\u044f \u0432\u043e\u043e\u0431\u0449\u0435:         event_mutation = randint(1, 10)          # \u0435\u0441\u043b\u0438 \u043c\u0443\u0442\u0430\u0446\u0438\u044f \u041d\u0415 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438, \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0443\u0442 \u0434\u0435\u043b\u0430\u0442\u044c \u043d\u0435\u0447\u0435\u0433\u043e:         if event_mutation == 10:             if dbg:  # \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438:                 print('\\nf &quot;mutate_genes&quot; \u043d\u0430\u0447\u0430\u0442\u0430 \u0438 \u043e\u043a\u043e\u043d\u0447\u0435\u043d\u0430:' + '\\n\\t\u043c\u0443\u0442\u0430\u0446\u0438\u044f \u041d\u0415 \u0441\u043e\u0441\u0442\u043e\u044f\u043b\u0430\u0441\u044c\\n\\told genes: ', end='')                 print(parent_genes)                 print('\\tnew genes: ', end='')                 print(self.my_genes)             return 0          # \u0435\u0441\u043b\u0438 \u043c\u0443\u0442\u0430\u0446\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438:         else:             # \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c &quot;\u0441\u0438\u043b\u0443&quot; \u043c\u0443\u0442\u0430\u0446\u0438\u0438 = \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0433\u0435\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043c\u0443\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c:             mutation_volume = randint(0, 30)             mutation_iters = 1             if 22 &lt;= mutation_volume &lt;= 28:                 mutation_iters = 2             elif 29 &lt;= mutation_volume &lt;= 30:                 mutation_iters = 3              if dbg:  # \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438:                 print('\\nf &quot;mutate_genes&quot; \u043d\u0430\u0447\u0430\u0442\u0430:' + '\\n\\t\u043c\u0443\u0442\u0430\u0446\u0438\u0439 \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043e: ' + str(mutation_iters))              # \u0441\u043f\u0438\u0441\u043e\u043a \u0433\u0435\u043d\u043e\u0432, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445 \u0434\u043b\u044f \u043c\u0443\u0442\u0430\u0446\u0438\u0438:             genes_available = [0, 1, 2, 3, 4, 5, 6]              # \u0441\u043f\u0438\u0441\u043e\u043a \u043c\u0443\u0442\u0438\u0440\u043e\u0432\u0430\u0432\u0448\u0438\u0445 \u0433\u0435\u043d\u043e\u0432:             genes_mutated = []              current_iter = 0             while current_iter &lt; mutation_iters:                 if dbg:  # \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438:                     print('\\tw1')                  # \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u0433\u0435\u043d \u0438\u0437 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u0445:                 gene_with_forced_mutation = choice(genes_available)                  # \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u0433\u0435\u043d \u0435\u0449\u0451 \u043d\u0435 \u043c\u0443\u0442\u0438\u0440\u043e\u0432\u0430\u043b:                 if gene_with_forced_mutation not in genes_mutated:                     self.mutate_gene(gene_with_forced_mutation)                     genes_mutated.append(gene_with_forced_mutation)                     current_iter += 1                     if dbg:  # \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438:                         print('\\tcurrent_iter =', current_iter)                 else:                     if dbg:  # \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438:                         print('\\telse, because ' + str(gene_with_forced_mutation) + ' already in genes_mutated')          if dbg:  # \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438:             genes_mutated_str = ''             if len(genes_mutated) &gt; 1:                 for x in genes_mutated:                     genes_mutated_str += str(x) + ', '             else:                 genes_mutated_str = str(genes_mutated[0])             print('\\nf &quot;mutate_genes&quot; \u043e\u043a\u043e\u043d\u0447\u0435\u043d\u0430:' + '\\n\\told genes: ', end='')             print(parent_genes)             print('\\tgenes_mutated: ' + genes_mutated_str)             print('\\tnew genes: ', end='')             print(self.my_genes)       # \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043c\u0443\u0442\u0430\u0446\u0438\u044e \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u0433\u0435\u043d\u0435, \u0438\u0437\u043c\u0435\u043d\u0438\u0432 \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043b\u044e\u0431\u043e\u0435 \u0434\u0440\u0443\u0433\u043e\u0435:     def mutate_gene(self, gene_id):         dbg = DBG_rogue_mutate_gene          current_value = self.my_genes[gene_id]         new_value = current_value          if dbg:  # \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438:             print('\\nf &quot;mutate_gene&quot;:' + '\\n\\tgene_id: ' + str(gene_id) + '\\n\\told gene value: ' + str(current_value))          tries = 0         while new_value == current_value:             if dbg and tries &gt; 0:  # \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438:                 print('\\tw2, because ' + str(new_value) + ' = ' + str(current_value) )             new_value = randrange(0, len(LINKS_TO_EQUIP_DICTS[gene_id]))             self.my_genes[gene_id] = new_value             tries += 1          if dbg:  # \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438:             print('\\tnew gene value: ' + str(new_value) + '\\n\\ttries: ' + str(tries)) <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  <b>2.<\/b> \u0413\u0435\u043d\u044b (\u0433\u0435\u043d\u043e\u0442\u0438\u043f) \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442, \u043a\u0430\u043a\u0443\u044e \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0443 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a \u043d\u0430\u0434\u0435\u043d\u0435\u0442 (\u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043f\u0440\u0438 <s>\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0438<\/s> \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 <i><b>apply_genes<\/b><\/i>:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">apply_genes<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">    # &quot;\u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c&quot; \u0433\u0435\u043d\u044b (\u0433\u0435\u043d\u043e\u0442\u0438\u043f) \u043f\u0443\u0442\u0451\u043c \u043d\u0430\u0434\u0435\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u0443\u0441\u043b\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u0439 \u0438\u043c\u0438 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0438:     def apply_genes(self):         dbg = DBG_rogue_apply_genes          pointer = 0         for item_id in self.my_genes:             self.wear_item(pointer, item_id, LINKS_TO_EQUIP_DICTS[pointer])             pointer += 1          if dbg:  # \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438:             print('\\nf &quot;apply_genes&quot;:' + '\\n\\t\u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u043e.')             print(self) <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  <b>3.<\/b> \u042d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u00ab\u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0430\u00bb \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0437\u0432\u0430\u043d \u043c\u0435\u0442\u043e\u0434 <i><b>calculate_rate<\/b><\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u0442 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0443\u0440\u043e\u043d\u0430:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">calculate_rate<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">    # \u043c\u0435\u0442\u043e\u0434 \u0434\u043b\u044f \u0440\u0430\u0441\u0447\u0451\u0442\u0430 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0430:     def calculate_rate(self):         dbg = DBG_rogue_calculate_rate          # \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043f\u0430\u0434\u0430\u043d\u0438\u044f:         p_hit = self.stat_hit \/ 100          # \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u0433\u043e \u0438 \u041d\u0415\u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u0433\u043e \u0443\u0434\u0430\u0440\u0430:         p_glancing = self.stat_glancing_percent \/ 100         not_p_glancing = 1 - self.stat_glancing_percent \/ 100          # \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0438 \u041d\u0415\u043a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0443\u0434\u0430\u0440\u0430:         p_crit = self.stat_crit \/ 100         not_p_crit = 1 - self.stat_crit \/ 100          # \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430:         expectation_modificator = p_hit * (p_glancing * 0.7 + not_p_glancing * (p_crit * 2 + not_p_crit))          # \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0443\u0440\u043e\u043d\u0430 \u0441 \u0442\u0430\u043a\u0438\u043c \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u043e\u043c:         expectation_damage = expectation_modificator * self.stat_attackpower         expectation_damage = round(expectation_damage, 3)          if dbg:             print('\\t\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 =', expectation_modificator)             print('\\t\u043e\u0436\u0438\u0434\u0430\u043d\u0438\u0435 \u0443\u0440\u043e\u043d\u0430 =', expectation_damage)          return expectation_damage <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  <b>4.<\/b> \u0420\u0435\u0439\u0442\u0438\u043d\u0433 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430 \u0438 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0449\u0438\u043c \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u043c, \u0432\u0435\u0434\u0443\u0449\u0438\u043c \u043a \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044e \u0438\u043b\u0438 \u043f\u043e\u0437\u043e\u0440\u043d\u043e\u0439 \u0441\u043c\u0435\u0440\u0442\u0438. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0432\u0435\u0434\u0435\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u0438\u0435 \u00ab\u043f\u043e\u0431\u0435\u0434\u0430\u00bb (\u043c\u0435\u0442\u043e\u0434 <i><b>embody_win<\/b><\/i>) \u0438 \u00ab\u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u00bb (\u043c\u0435\u0442\u043e\u0434 <i><b>embody_defeat<\/b><\/i>):<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">embody_win \u0438 embody_defeat<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">    # \u043e\u0444\u043e\u0440\u043c\u0438\u0442\u044c \u043f\u043e\u0431\u0435\u0434\u0443 \u0432 \u0434\u0443\u044d\u043b\u0438:     def embody_win(self):         dbg = DBG_rogue_embody_win          self.my_wins += 1         stats.genes_add_win(self.my_genes)          # \u043f\u043e\u0441\u043b\u0435 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0431\u0435\u0434\u044b:         if self.my_wins % population.wins_to_reproduce == 0:              # \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0447\u0438\u0441\u043b\u043e \u0440\u043e\u0436\u0434\u0430\u0435\u043c\u044b\u0445 \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u0432:             total_borns = choice(population.possible_birth_quantities)             if dbg:                 print('\u0440\u043e\u0436\u0434\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0435\u0442 ' + str(total_borns))              for x in range(0, total_borns):                 if dbg:                     print(self.name + ' \u0440\u043e\u0436\u0430\u0435\u0442 \u043f\u043e\u0442\u043e\u043c\u043a\u0430...')                  # \u0440\u043e\u0434\u0438\u0442\u044c \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430-\u043f\u043e\u0442\u043e\u043c\u043a\u0430:                 new_rogue = Rogue(self.my_genes, self.my_generation, from_parent=True)                 ROGUES_LIST.append(new_rogue)              Population.day_of_last_changes = current_day          # \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0440\u0435\u043a\u043e\u0440\u0434 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u0431\u0435\u0434 \u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430 \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438:         if self.my_wins &gt; Population.record_max_wins:             Population.record_max_wins = self.my_wins             Population.max_winner_name = self.name             Population.max_winner_genes = self.my_genes       # \u043e\u0444\u043e\u0440\u043c\u0438\u0442\u044c \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432 \u0434\u0443\u044d\u043b\u0438:     def embody_defeat(self):         dbg = DBG_rogue_embody_defeat          self.my_defeats += 1          # \u043f\u043e\u0441\u043b\u0435 \u0434\u0432\u0443\u0445 \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432\u044b\u043f\u0438\u043b\u0438\u0442\u044c\u0441\u044f:         if self.my_defeats == population.defeats_to_die:             self.alive = False             Population.how_many_rogues_alive -= 1             Population.day_of_last_changes = current_day              if dbg:                 print(self.name + ' \u0432\u044b\u043f\u0438\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f...') <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041d\u0443 \u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u0430, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u044d\u0442\u0430 \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u00ab\u0433\u0435\u043d\u044b \u2014 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0430 \u2014 \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u00bb:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 Rogue<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">    def __init__(self, genes_list_inherited, parent_generation, from_parent=True, genes_can_mutate=True):          # \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u043b\u043e\u0442\u043e\u0432 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c id \u043d\u0430\u0434\u0435\u0442\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432:         # 0 - \u043f\u0440\u0430\u0432\u0430\u044f \u0440\u0443\u043a\u0430, 1 - \u043b\u0435\u0432\u0430\u044f \u0440\u0443\u043a\u0430, 2 - \u043f\u0435\u0440\u0447\u0430\u0442\u043a\u0438, 3 - \u0433\u043e\u043b\u043e\u0432\u0430, 4 - \u0433\u0440\u0443\u0434\u044c, 5 - \u0448\u0442\u0430\u043d\u044b, 6 - \u043e\u0431\u0443\u0432\u044c         self.equipment_slots = [0] * 7          # \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0441\u043f\u0438\u0441\u043a\u0430 \u0441\u043b\u043e\u0442\u043e\u0432 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u043d\u0430\u0434\u0435\u0442\u044b\u0445 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432:         self.equipment_names = ['\u043d\u0438\u0447\u0435\u0433\u043e'] * 7          # \u0411\u0410\u0417\u041e\u0412\u042b\u0415 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a (\u043e\u043d\u0438 - \u0442\u043e\u0447\u043a\u0430 \u043e\u0442\u0441\u0447\u0451\u0442\u0430 \u043f\u0440\u0438 \u0441\u043c\u0435\u043d\u0435 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0438):         self.basic_stat_agility = 50         self.basic_stat_power = 40         self.basic_stat_hit = 80         self.basic_stat_crit = 20         self.basic_stat_mastery = 0          # \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u0438\u0441\u0442\u0438\u043a\u0438 \u0431\u0435\u0437 \u0432\u0435\u0449\u0435\u0439:         self.set_stats_without_equip()          # \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0438:         Population.how_many_rogues += 1         Population.how_many_rogues_alive += 1          # \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f:         self.my_generation = parent_generation + 1         if self.my_generation &gt; Population.generations:             Population.generations = self.my_generation          # &quot;\u0438\u043c\u044f&quot; \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430:         self.name = '&quot;' + str(Population.how_many_rogues) + '-\u0439, \u0438\u0437 \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u044f ' + str(parent_generation + 1) + '&quot;'          # \u0436\u0438\u0432 \u043b\u0438:         self.alive = True          # \u0441\u0447\u0451\u0442\u0447\u0438\u043a\u0438 \u043f\u043e\u0431\u0435\u0434 \u0438 \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u0439:         self.my_wins = 0         self.my_defeats = 0          # \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u0433\u0435\u043d\u043e\u0432:         self.my_genes = [0] * 7          if genes_can_mutate:             # \u0435\u0441\u043b\u0438 \u044d\u0442\u043e\u0442 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a \u043f\u043e\u0440\u043e\u0436\u0434\u0451\u043d \u0434\u0440\u0443\u0433\u0438\u043c \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u043c, \u0435\u0433\u043e \u0433\u0435\u043d\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0443\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c:             if from_parent:                 self.mutate_genes(genes_list_inherited)             else:                 self.generate_random_genes()         else:             self.my_genes = genes_list_inherited          # \u043e\u0442\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u044c \u044d\u0442\u0438 \u0433\u0435\u043d\u044b \u0432 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0435:         stats.genes_add_presence(self.my_genes, self.my_generation)          # \u043d\u0430\u0434\u0435\u0442\u044c \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0443 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u043c \u0433\u0435\u043d\u0430\u043c:         self.apply_genes() <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041f\u043e\u0434\u044b\u0442\u043e\u0436\u0443 \u044d\u0442\u0443 \u043b\u043e\u0433\u0438\u043a\u0443 \u043a\u043b\u0430\u0441\u0441\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u043e\u0439:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/x2\/mv\/mp\/x2mvmp_7tzqk3ojt4vzk00wxhhc.png\" alt=\"image\"><\/p>\n<h2>\u042d\u0422\u0410\u041f 3 \u2014 \u043a\u043b\u0430\u0441\u0441\u044b Population, Stats \u0438 Challenge<\/h2>\n<p>  \u041a\u043b\u0430\u0441\u0441 <b>Population<\/b> \u043d\u0443\u0436\u0435\u043d \u043b\u0438\u0448\u044c \u0434\u043b\u044f \u0442\u0440\u0451\u0445 \u0432\u0435\u0449\u0435\u0439:<\/p>\n<ol>\n<li>\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0438\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432 \u0441\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u0433\u0435\u043d\u0430\u043c\u0438 \u0438 \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u044b (<i>wins_to_reproduce<\/i> \u2014 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0431\u0435\u0434 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0443 \u043d\u0443\u0436\u043d\u043e \u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0434\u043b\u044f \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f, <i>defeats_to_die<\/i> \u2014 \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0437\u0430\u0441\u0442\u0430\u0432\u044f\u0442 \u0438\u043d\u0434\u0438\u0432\u0438\u0434\u0430 \u0443\u043c\u0435\u0440\u0435\u0442\u044c);<\/li>\n<li>\u00ab\u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430\u00bb \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438, \u0442.\u0435. \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0434\u0435\u043d\u044c \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0421\u0442\u0430\u0434\u0438\u0438, \u0432\u0441\u0435 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0438 \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u044e\u0442\u0441\u044f \u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0438 \u0441 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0438\u043c\u0438 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u0430\u043c\u0438 (\u0441\u043c. \u043c\u0435\u0442\u043e\u0434 <i><b>reload<\/b><\/i>);<\/li>\n<li>\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438.<\/li>\n<\/ol>\n<p>  <\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">class Population<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">class Population():     &quot;&quot;&quot;\u041a\u043b\u0430\u0441\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0435\u0439.&quot;&quot;&quot;      how_many_rogues = 0 # &lt;-- \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0432\u0441\u0435\u0445 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432     how_many_rogues_alive = 0 # &lt;-- \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0436\u0438\u0432\u044b\u0445 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432     how_many_battles = 0 # &lt;-- \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0431\u0438\u0442\u0432     how_many_ties = 0 # &lt;-- \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u043d\u0438\u0447\u044c\u0438\u0445     generations = 0 # &lt;-- \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439     day_of_last_changes = 0  # &lt;-- \u0434\u0435\u043d\u044c \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0445 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438     max_days_without_changes = 0  # &lt;-- \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0434\u043d\u0435\u0439 \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439      # \u0440\u0435\u043a\u043e\u0440\u0434 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043f\u043e\u0431\u0435\u0434 \u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430 \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0435\u0433\u043e \u0438\u043c\u044f \u0438 \u0433\u0435\u043d\u043e\u0442\u0438\u043f:     record_max_wins = 0     max_winner_name = 'none'     max_winner_genes = 'none'       # \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0441\u0440\u0430\u0437\u0443 \u0436\u0435 \u043d\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0451:     def __init__(self, total, possible_birth_quantities, wins_to_reproduce, defeats_to_die):          # \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435:         self.initial_size = total          # \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0441\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u044b \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430 \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438:         self.wins_to_reproduce = wins_to_reproduce         self.defeats_to_die = defeats_to_die         self.possible_birth_quantities = possible_birth_quantities          while total &gt; 0:              # \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430, \u043f\u0435\u0440\u0435\u0434\u0430\u0432 &quot;\u043f\u0443\u0441\u0442\u043e\u0439 \u0433\u0435\u043d\u043e\u0442\u0438\u043f&quot; \u0438 \u043e\u0442\u043c\u0435\u0442\u043a\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0435\u043c\u0443 \u043d\u0443\u0436\u043d\u043e \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u0435\u043d\u044b:             new_rogue = Rogue('', 0, from_parent=False)              # \u043f\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432:             ROGUES_LIST.append(new_rogue)              total -= 1       # \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438:     def __str__(self):         text = '\u041f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u044f:\\n'         text += '\u043f\u043e\u043a\u043e\u043b\u0435\u043d\u0438\u0439: ' + str(Population.generations) + '\\n'         text += '\u0432\u0441\u0435\u0433\u043e \u0430\u0433\u0435\u043d\u0442\u043e\u0432: ' + str(Population.how_many_rogues) + '\\n'         text += '\u0436\u0438\u0432\u044b\u0445 \u0430\u0433\u0435\u043d\u0442\u043e\u0432: ' + str(Population.how_many_rogues_alive) + '\\n'         text += '\u0440\u0435\u043a\u043e\u0440\u0434 \u043f\u043e\u0431\u0435\u0434: ' + str(Population.record_max_wins) + '\\n'         text += '\u0438\u043c\u044f \u0440\u0435\u043a\u043e\u0440\u0434\u0441\u043c\u0435\u043d\u0430: ' + str(Population.max_winner_name) + '\\n'         text += '\u0433\u0435\u043d\u043e\u0442\u0438\u043f \u0440\u0435\u043a\u043e\u0440\u0434\u0441\u043c\u0435\u043d\u0430: ' + str(Population.max_winner_genes) + '\\n'         return text       # \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u044e, \u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u0432 \u043d\u0435\u0439 how_many_to_save \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432 \u0441 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u044b\u043c\u0438 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u0430\u043c\u0438:     def reload(self, how_many_to_save):          # \u043e\u0431\u043d\u0443\u043b\u0438\u0442\u044c \u043a\u043e\u043b-\u0432\u043e \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432:         Population.how_many_rogues_alive = 0          # &quot;\u0443\u0431\u0438\u0442\u044c&quot; \u0432\u0441\u0435\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432:         for x in ROGUES_LIST:             x.alive = False          # \u0438\u0437\u0432\u043b\u0435\u0447\u044c \u0438\u0437 \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432 \u0434\u0430\u043d\u043d\u044b\u0435 \u043e \u043b\u0443\u0447\u0448\u0438\u0445 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u0430\u0445:         list_genotypes_top = stats.get_ordered_list_from_dict(LIST_FOR_DICTS_GENOTYPES[current_stage], inner_index=2)          # \u043d\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u044e \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430\u043c\u0438 \u0441 \u044d\u0442\u0438\u043c\u0438 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u0430\u043c\u0438:         for x in range(0, how_many_to_save):              # \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0433\u0435\u043d\u043e\u0442\u0438\u043f \u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a:             genotype_in_str = list_genotypes_top[x][0]             genotype_in_list = []             for char in genotype_in_str:                 if char != '-':                     genotype_in_list.append( int(char) )              # \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043d\u043e\u0432\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430, \u043f\u0435\u0440\u0435\u0434\u0430\u0432 \u0433\u0435\u043d\u043e\u0442\u0438\u043f \u0438 \u043e\u0442\u043c\u0435\u0442\u043a\u0443 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0433\u0435\u043d\u044b \u041d\u0415 \u0434\u043e\u043b\u0436\u043d\u044b \u043c\u0443\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c:             new_rogue = Rogue(genotype_in_list, 0, from_parent=True, genes_can_mutate=False)              # \u043f\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432:             ROGUES_LIST.append(new_rogue) <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041a\u043b\u0430\u0441\u0441 <b>Stats<\/b> \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0434\u0432\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438:<\/p>\n<ol>\n<li>\u0441\u0431\u043e\u0440 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u043d\u044f: \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0436\u0438\u0432\u044b\u0445 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432, \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432 \u0438 \u0442.\u0434.)<\/li>\n<li>\u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 (\u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u0432 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <a href=\"https:\/\/matplotlib.org\" rel=\"nofollow\">matplotlib<\/a>, \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043e\u0442\u0447\u0451\u0442\u0430 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 HTML-\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435).<\/li>\n<\/ol>\n<p>  \u0417\u0430\u0431\u0435\u0433\u0430\u044f \u043d\u0430\u043f\u0435\u0440\u0451\u0434, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e, \u043a\u0430\u043a \u044d\u0442\u043e\u0442 \u043e\u0442\u0447\u0451\u0442 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/nl\/ti\/-r\/nlti-r4xr6cdeffrghjtzcqn8y8.png\" alt=\"image\"><\/p>\n<p>  \u041a\u043e\u0434 HTML-\u0448\u0430\u0431\u043b\u043e\u043d\u0430 \u0434\u043b\u044f \u043e\u0442\u0447\u0451\u0442\u0430 <a href=\"https:\/\/github.com\/andreaskosten\/rogue_equip_evolution\/blob\/master\/report_template.html\" rel=\"nofollow\">\u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435<\/a>.<\/p>\n<p>  \u041a\u043b\u0430\u0441\u0441 Stats \u0442\u0430\u043a\u0436\u0435 \u043b\u0443\u0447\u0448\u0435 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c <a href=\"https:\/\/github.com\/andreaskosten\/rogue_equip_evolution\/blob\/master\/main.py\" rel=\"nofollow\">\u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435<\/a> (\u0430 \u0442\u043e \u0431\u043e\u043b\u044c\u043d\u043e \u043c\u043d\u043e\u0433\u043e \u0441\u0442\u0440\u043e\u043a \u0437\u0434\u0435\u0441\u044c \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f).<\/p>\n<p>  \u041a\u043b\u0430\u0441\u0441 <b>Challenger<\/b> \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044e \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c\u044b\u043c\u0438 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430\u043c\u0438. \u041a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0435\u0442\u043e\u0434 <i><b>perform_battles<\/b><\/i>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u0435\u0442 \u0438\u0437 \u0436\u0438\u0432\u044b\u0445 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432 \u0434\u0443\u044d\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u044b \u0438 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u0442 \u0438\u0445 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043c\u0435\u0442\u043e\u0434\u0430 <i><b>perform_battle<\/b><\/i>, \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u043e\u043d\u0446\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043c\u0435\u0442\u043e\u0434 <i><b>embody_win<\/b><\/i>, \u043b\u0438\u0431\u043e \u043c\u0435\u0442\u043e\u0434 <i><b>embody_defeat<\/b><\/i>. \u041a\u0441\u0442\u0430\u0442\u0438, \u0435\u0441\u043b\u0438 \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043d\u0438\u0447\u044c\u044f (\u0433\u0435\u043d\u043e\u0442\u0438\u043f\u044b, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u0438 \u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0438 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b), \u0442\u043e \u043e\u043d\u0438 \u0440\u0430\u0441\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0431\u0435\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0439:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">class Challenger<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">class Challenger():     &quot;&quot;&quot;\u041a\u043b\u0430\u0441\u0441 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0431\u043e\u0451\u0432 \u043c\u0435\u0436\u0434\u0443 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430\u043c\u0438.&quot;&quot;&quot;      # \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0441\u0435\u0440\u0438\u044e \u0431\u043e\u0451\u0432:     def perform_battles(self):         dbg = DBG_challenger_perform_battles          # \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0436\u0438\u0432\u044b\u0445 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432:         rogues_alive = []         for x in ROGUES_LIST:             if x.alive:                 rogues_alive.append(x)          # \u043f\u0435\u0440\u0435\u043c\u0435\u0448\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a:         shuffle(rogues_alive)          # \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0430\u0440 \u0436\u0438\u0432\u044b\u0445 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432 \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438:         pairs_total = int(len(rogues_alive) \/\/ 2)          if dbg:             print('pairs_total =', pairs_total)          # \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0431\u043e\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u043c\u0438 \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430\u043c\u0438:         counter = 0         pointer = 0         while counter &lt; pairs_total:             a_1 = rogues_alive[pointer]             a_2 = rogues_alive[pointer + 1]             self.perform_battle(a_1, a_2)             counter += 1             pointer += 2       # \u043f\u0440\u043e\u0432\u0435\u0441\u0442\u0438 \u0431\u043e\u0439 \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430\u043c\u0438:     def perform_battle(self, rogue_1, rogue_2):         dbg = DBG_challenger_perform_battle          if dbg:             print('\\n\u043d\u043e\u0432\u044b\u0439 \u0431\u043e\u0439 \u043c\u0435\u0436\u0434\u0443:', rogue_1.name, '\u0438', rogue_2.name)          # \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0440\u0435\u0439\u0442\u0438\u043d\u0433 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430 (\u0432 \u0431\u043e\u043b\u0435\u0435 \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0442\u0443\u0442 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0435 \u0441\u0440\u0430\u0436\u0435\u043d\u0438\u0435):         rating_1 = rogue_1.calculate_rate()         rating_2 = rogue_2.calculate_rate()          # \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0431\u043e\u0451\u0432:         Population.how_many_battles += 1          if dbg:             print('\\t\u0438\u0445 \u0440\u0435\u0439\u0442\u0438\u043d\u0433:', rating_1, '\u0438', rating_2, '\u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.')          # \u0440\u0430\u0441\u043a\u0438\u0434\u0430\u0442\u044c \u043e\u0447\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u0438 \u043f\u0440\u043e\u0438\u0433\u0440\u0430\u0432\u0448\u0438\u043c:         if rating_1 &gt; rating_2:             rogue_1.embody_win()             rogue_2.embody_defeat()         elif rating_1 &lt; rating_2:             rogue_1.embody_defeat()             rogue_2.embody_win()         else:             Population.how_many_ties += 1             if dbg:                 print('\\t\u041e \u0447\u0443\u0434\u043e! \u041f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043d\u0438\u0447\u044c\u044f!') <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0427\u0442\u043e \u0436, \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0442\u0435\u043b\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u043e\u0435\u0434\u0438\u043d\u043e \u0432\u0441\u0435 \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u0435 \u0447\u0430\u0441\u0442\u0438 \u043a\u043e\u0434\u0430. \u0421\u043d\u0430\u0447\u0430\u043b\u0430 \u0438\u0434\u0443\u0442 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438: \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0430\u0434\u0438\u0439, \u0434\u043d\u0435\u0439 \u0432 \u0441\u0442\u0430\u0434\u0438\u0438, \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432 \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0438 \u0442.\u0434. \u0417\u0430\u0442\u0435\u043c \u0438\u0434\u0443\u0442 \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u0418 \u0441\u0430\u043c\u0438 \u0432\u044b\u0437\u043e\u0432\u044b:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u043a\u043e\u0434 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\"># \u041a\u041e\u041d\u0421\u0422\u0410\u041d\u0422\u042b: MAX_STAGES = 8 # &lt;-- \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0430\u0434\u0438\u0439 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0434\u043e\u043b\u0436\u043d\u043e \u043f\u0440\u043e\u0439\u0442\u0438 MAX_DAYS_AT_STAGE = 20 # &lt;-- \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u043e\u0434\u043d\u0430 \u0441\u0442\u0430\u0434\u0438\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438 SLIDING_FREQUENCY = 10 # &lt;-- \u043a\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c HTML-\u0441\u043b\u0430\u0439\u0434\u044b \u0441 \u043f\u043e\u043b\u044f\u043c\u0438 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432 (1 = \u0440\u0430\u0437 \u0432 \u0434\u0435\u043d\u044c, 10 = \u0440\u0430\u0437 \u0432 10 \u0434\u043d\u0435\u0439) ROGUES_AT_BEGIN = 10 # &lt;-- \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438 (\u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0430\u0434\u0438\u0438) WINS_TO_REPRODUCE = 2 # &lt;-- \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0431\u0435\u0434 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0443 \u043d\u0443\u0436\u043d\u043e \u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0438\u0442\u044c\u0441\u044f DEFEATS_TO_DIE = 2 # &lt;-- \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043f\u0440\u0438\u0432\u0435\u0434\u0451\u0442 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430 \u043a \u0441\u043c\u0435\u0440\u0442\u0438 POSSIBLE_BIRTH_QUANTITIES = [1] # &lt;-- \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432 \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0440\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0443 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430 \u0437\u0430 \u0440\u0430\u0437, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440: # [1, 2] \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0441 50%-\u043d\u043e\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u043e\u0434\u0438\u0442\u0441\u044f \u043b\u0438\u0431\u043e 1, \u043b\u0438\u0431\u043e 1 \u043f\u043e\u0442\u043e\u043c\u043a\u0430 # [1, 1, 2] \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0441 66%-\u043d\u043e\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u0440\u043e\u0434\u0438\u0442\u0441\u044f 1 \u043f\u043e\u0442\u043e\u043c\u043e\u043a  HTML_GSQUARE_SIDE = 10 # &lt;-- \u0448\u0438\u0440\u0438\u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u043a\u0430, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0435\u0433\u043e \u0433\u0435\u043d\u043e\u0442\u0438\u043f \u0432 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u043e\u0442\u0447\u0451\u0442\u0435 HTML_GSQUARE_MARGIN = 3 # &lt;-- \u043e\u0442\u0441\u0442\u0443\u043f\u044b \u043c\u0435\u0436\u0434\u0443 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u043a\u0430\u043c\u0438, \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u043c\u0438 \u0433\u0435\u043d\u043e\u0442\u0438\u043f \u0432 \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u043e\u0442\u0447\u0451\u0442\u0435  # \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u0441\u044b\u043b\u043e\u043a \u043d\u0430 \u0441\u043b\u043e\u0432\u0430\u0440\u0438 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0438: LINKS_TO_EQUIP_DICTS = [RIGHT_HANDS, LEFT_HANDS, GLOVES, HEADS, CHESTS, PANTS, BOOTS]  # \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0432\u0430\u0440\u0435\u0439 \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u043e\u0439 \u043f\u043e \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u0430\u043c (\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0442\u0430\u0434\u0438\u0438): LIST_FOR_DICTS_GENOTYPES = [{}] * MAX_STAGES  # \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0435\u0447\u043d\u044f \u0432\u0441\u0435\u0445 \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0438\u0445\u0441\u044f \u0440\u0430\u0437\u043d\u043e\u0432\u0438\u0434\u043d\u043e\u0441\u0442\u0435\u0439 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432: DICT_UNIQUE_GENOTYPES = {}  # \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438 \u043f\u043e \u0434\u043d\u044f\u043c: DICT_DAYS = {}  # \u0441\u043f\u0438\u0441\u043e\u043a, \u0433\u0434\u0435 \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0432\u0441\u0435\u0445 \u043a\u043e\u0433\u0434\u0430-\u043b\u0438\u0431\u043e \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0438\u0445\u0441\u044f \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432: ROGUES_LIST = list()  # \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0434\u0438\u0438 (\u0434\u043e\u043b\u0436\u043d\u0430 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0439 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0432\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u0438) current_stage = 0  # \u041a\u041e\u041d\u0421\u0422\u0410\u041d\u0422\u042b \u0434\u043b\u044f \u0442\u043e\u0447\u0435\u0447\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f &quot;\u043e\u0442\u043b\u0430\u0434\u043a\u043e\u0439&quot; (\u0432\u044b\u0432\u043e\u0434\u043e\u043c \u043e\u0442\u0447\u0451\u0442\u043e\u0432 \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0439\/\u043c\u0435\u0442\u043e\u0434\u043e\u0432): DBG_rogue_mutate_genes = False DBG_rogue_generate_random_genes = False DBG_rogue_apply_genes = False DBG_rogue_calculate_rate = False DBG_rogue_mutate_gene = False DBG_rogue_embody_win = False DBG_rogue_embody_defeat = False DBG_rogue_wear_item = False DBG_challenger_perform_battles = False DBG_challenger_perform_battle = False DBG_days_report = False  # &lt;-- \u043e\u0431\u0449\u0438\u0439 \u043e\u0442\u0447\u0451\u0442 \u043e \u043a\u0430\u0436\u0434\u043e\u043c \u0434\u043d\u0435    # \u0417\u0410\u041f\u0423\u0421\u041a: if __name__ == '__main__':      # \u0437\u0430\u0441\u0435\u0447\u044c \u0432\u0440\u0435\u043c\u044f:     time_begin = time()      # \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0446\u0438\u043a\u043b \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0442\u0430\u0434\u0438\u0439 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438:     max_days_for_current_stage = 0     current_day = 1     while current_stage &lt; MAX_STAGES:          # \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0434\u0438\u0438:         if current_stage == 0:              # \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438:             stats = Stats()              # \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0438 \u043d\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430\u043c\u0438 \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0445 \u0431\u0438\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:             population = Population(ROGUES_AT_BEGIN, POSSIBLE_BIRTH_QUANTITIES, wins_to_reproduce=WINS_TO_REPRODUCE, defeats_to_die=DEFEATS_TO_DIE)              # \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0441\u043e\u0441\u0442\u044f\u0437\u0430\u043d\u0438\u044f\u043c\u0438:             challenger = Challenger()              # &quot;\u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c&quot; \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u044e:             print(population)          # \u0432\u044b\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0441 \u0443\u0447\u0451\u0442\u043e\u043c \u043d\u0430\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0439 \u0441\u0442\u0430\u0434\u0438\u0438:         max_days_for_current_stage += MAX_DAYS_AT_STAGE          # \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\/\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0446\u0438\u043a\u043b \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u043d\u0435\u0439 (1 \u0434\u0435\u043d\u044c = 1 \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e (\u043f\u043e\u0447\u0442\u0438*) \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430)         # * - \u043a\u043e\u0433\u0434\u0430 \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0434\u0435\u043d\u044c \u043d\u0435\u0447\u0451\u0442\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432, \u043a\u0442\u043e-\u0442\u043e \u0438\u0437 \u043d\u0438\u0445 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0431\u0435\u0437 \u043f\u0430\u0440\u044b \u0438 \u043d\u0435 \u0434\u0435\u0440\u0451\u0442\u0441\u044f \u0432 \u044d\u0442\u043e\u0442 \u0434\u0435\u043d\u044c         while current_day &lt;= max_days_for_current_stage:             print('st ' + str(current_stage) + ', day ' + str(current_day))             if DBG_days_report:                 print('\\n\\n\u0414\u0415\u041d\u042c\/DAY', current_day)              # \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441\u0435\u0440\u0438\u044e \u0441\u043e\u0440\u0435\u0432\u043d\u043e\u0432\u0430\u043d\u0438\u0439:             challenger.perform_battles()              if DBG_days_report:                 print('\\n\u0414\u0435\u043d\u044c', current_day, '\u0437\u0430\u0432\u0435\u0440\u0448\u0451\u043d.')                 print(population)              # \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043d\u044f:             stats.add_new_day(current_day)              # \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043d\u0435\u0439 \u043f\u043e\u0434\u0440\u044f\u0434 \u043d\u0435\u0442 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439 \u0432 \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438:             if current_day - Population.day_of_last_changes &gt; Population.max_days_without_changes:                 Population.max_days_without_changes = current_day - Population.day_of_last_changes              # \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e SLIDING_FREQUENCY \u0434\u043d\u044f (\u0430 \u0442\u0430\u043a\u0436\u0435 \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439) \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0441\u043b\u0430\u0439\u0434\u044b \u043f\u043e \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0441\u0442\u0438 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432:             if current_day % SLIDING_FREQUENCY == 0 or current_day == 1 or current_day == MAX_DAYS_AT_STAGE * MAX_STAGES:                 stats.draw_genes_distribution(current_day)              # \u0432 \u043a\u043e\u043d\u0446\u0435 \u043a\u0430\u0436\u0434\u043e\u0433\u043e SLIDING_FREQUENCY \u0434\u043d\u044f (\u0430 \u0442\u0430\u043a\u0436\u0435 \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439) \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u0441\u043b\u0430\u0439\u0434\u044b \u043f\u043e \u043f\u043e\u0431\u0435\u0434\u0430\u043c \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432:             if current_day % SLIDING_FREQUENCY == 0 or current_day == 1 or current_day == MAX_DAYS_AT_STAGE * MAX_STAGES:                 stats.draw_genes_wins(current_day)              current_day += 1          # \u043a\u043e\u0433\u0434\u0430 \u041d\u0415\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u0441\u0442\u0430\u0434\u0438\u044f \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u043a \u043a\u043e\u043d\u0446\u0443, \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u044e, \u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u0432 \u043d\u0435\u0439 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0435 \u043a\u043e\u043b-\u0432\u043e \u043b\u0443\u0447\u0448\u0438\u0445 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432:         if current_stage &lt; MAX_STAGES - 1:             population.reload(ROGUES_AT_BEGIN)          current_stage += 1       # \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043d\u0438\u0437\u0438\u0442\u044c \u043d\u0430\u0437\u0430\u0434 \u0441\u0447\u0451\u0442\u0447\u0438\u043a \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0434\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0443\u0434\u043e\u0431\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043e \u0441\u043f\u0438\u0441\u043a\u043e\u043c LIST_FOR_DICTS_GENOTYPES:     current_stage -= 1      # \u0432\u044b\u0432\u0435\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0434\u043d\u0435\u0439:     print('\\n\u0414\u041d\u0418:')     print(DICT_DAYS)      # \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a \u043e \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0435 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0436\u0438\u0432\u0443\u0449\u0438\u0445 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432:     stats.draw_and_put_line_chart_to_file(DICT_DAYS, 1, '\u0436\u0438\u0432\u043e\u0435 \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u0438\u0435', '\u0434\u043d\u0438', '\u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432', 'charts\/chart_population_demography.png')      # \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a \u043e \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0435 \u043e\u0431\u0449\u0435\u0439 \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u0433\u0434\u0430-\u043b\u0438\u0431\u043e \u0436\u0438\u0432\u0448\u0438\u0445 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432:     stats.draw_and_put_line_chart_to_file(DICT_DAYS, 0, '\u0440\u043e\u0434\u0438\u0432\u0448\u0438\u0445\u0441\u044f \u0432\u0441\u0435\u0433\u043e', '\u0434\u043d\u0438', '\u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432', 'charts\/chart_population_total.png')      # \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a \u043e \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0435 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u044f \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432:     stats.draw_and_put_line_chart_to_file(DICT_DAYS, 2, '\u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u0435 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432', '\u0434\u043d\u0438', '\u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432', 'charts\/chart_genotypes_variety.png')      # \u043d\u0430\u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u0433\u0440\u0430\u0444\u0438\u043a \u043e \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0435 \u043d\u0438\u0447\u044c\u0438\u0445 (= \u0441\u0442\u043e\u043b\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432):     stats.draw_and_put_line_chart_to_file(DICT_DAYS, 3, '\u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430 \u043d\u0438\u0447\u044c\u0438\u0445', '\u0434\u043d\u0438', '\u043d\u0438\u0447\u044c\u0438\u0445', 'charts\/chart_genotypes_ties.png')      # \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0431\u0449\u0438\u0439 HTML \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0441\u0441\u0438\u0438:     stats.create_index_html()      # \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u044c \u0437\u0430\u0442\u0440\u0430\u0447\u0435\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f:     time_session = time() - time_begin     duration_info = '\u0440\u0430\u0431\u043e\u0442\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u0438\u043b\u0430\u0441\u044c: ' + str(round(time_session, 2)) + ' \u0441\u0435\u043a.'     print('\\n' + duration_info)  else:     print('__name__ is not &quot;__main__&quot;.') <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0412 \u043a\u043e\u043d\u0446\u0435 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0432 \u043f\u0430\u043f\u043a\u0435 \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b \u0441 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u0442\u0438\u043f\u0430 \u00abreport 2020-04-25_10-33-54.html\u00bb. \u041e \u043d\u0451\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0442\u0430\u0442\u044c\u0438.<\/p>\n<h2>\u042d\u0422\u0410\u041f 4 \u2014 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0435<\/h2>\n<p>  \u0414\u043b\u044f \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0439 \u0431\u0443\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043d\u0430\u0431\u043e\u0440 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0438:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">evolution_equipment_obvious_strong.py<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\"># \u042d\u0442\u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u043f\u0435\u0440\u0435\u0447\u043d\u0438 \u043f\u0440\u0435\u0434\u043c\u0435\u0442\u043e\u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0442\u0438\u043f\u0430. # \u041a\u0430\u0436\u0434\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u0440\u0442\u0435\u0436, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435: # 0 - \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435, 1 - \u0430\u0442\u0430\u043a\u0430, 2 - \u043b\u043e\u0432\u043a\u043e\u0441\u0442\u044c, 3 - \u0441\u0438\u043b\u0430, 4 - \u043c\u0435\u0442\u043a\u043e\u0441\u0442\u044c, 5 - \u043a\u0440\u0438\u0442, 6 - \u043c\u0430\u0441\u0442\u0435\u0440\u0441\u0442\u0432\u043e  EQUIPMENT_COLLECTION = 'obvious_strong'  RIGHT_HANDS = dict() RIGHT_HANDS[1] = ('\u0421\u0438\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439 \u043c\u0435\u0447', 5000, 0, 0, 0, 0, 0) RIGHT_HANDS[2] = ('\u0421\u0440\u0435\u0434\u043d\u0438\u0439 \u043c\u0435\u0447', 800, 0, 0, 0, 0, 0) RIGHT_HANDS[3] = ('\u0421\u043b\u0430\u0431\u044b\u0439 \u043c\u0435\u0447', 20, 0, 0, 0, 0, 0)  LEFT_HANDS = dict() LEFT_HANDS[1] = ('\u0421\u0438\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439 \u043a\u0438\u043d\u0436\u0430\u043b', 4000, 0, 0, 0, 0, 0) LEFT_HANDS[2] = ('\u0421\u043b\u0430\u0431\u044b\u0439 \u043a\u0438\u043d\u0436\u0430\u043b', 10, 0, 0, 0, 0, 0)  GLOVES = dict() GLOVES[1] = ('\u0421\u0438\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u043f\u0435\u0440\u0447\u0430\u0442\u043a\u0438', 300, 0, 0, 0, 0, 0) GLOVES[2] = ('\u0421\u043b\u0430\u0431\u044b\u0435 \u043f\u0435\u0440\u0447\u0430\u0442\u043a\u0438', 1, 0, 0, 0, 0, 0)  HEADS = dict() HEADS[1] = ('\u0421\u0438\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439 \u0448\u043b\u0435\u043c', 300, 0, 0, 0, 0, 0) HEADS[2] = ('\u0421\u043b\u0430\u0431\u044b\u0439 \u0448\u043b\u0435\u043c', 1, 0, 0, 0, 0, 0)  CHESTS = dict() CHESTS[1] = ('\u0421\u0438\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439 \u043d\u0430\u0433\u0440\u0443\u0434\u043d\u0438\u043a', 300, 0, 0, 0, 0, 0) CHESTS[2] = ('\u0421\u043b\u0430\u0431\u044b\u0439 \u043d\u0430\u0433\u0440\u0443\u0434\u043d\u0438\u043a', 1, 0, 0, 0, 0, 0)  PANTS = dict() PANTS[1] = ('\u0421\u0438\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u043f\u043e\u043d\u043e\u0436\u0438', 300, 0, 0, 0, 0, 0) PANTS[2] = ('\u0421\u043b\u0430\u0431\u044b\u0435 \u043f\u043e\u043d\u043e\u0436\u0438', 1, 0, 0, 0, 0, 0)  BOOTS = dict() BOOTS[1] = ('\u0421\u0438\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0435 \u0441\u0430\u043f\u043e\u0433\u0438', 300, 0, 0, 0, 0, 0) BOOTS[2] = ('\u0421\u043b\u0430\u0431\u044b\u0435 \u0441\u0430\u043f\u043e\u0433\u0438', 1, 0, 0, 0, 0, 0) <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0417\u0434\u0435\u0441\u044c \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0439 \u043d\u0430\u0431\u043e\u0440\u043e\u0432 <b>192<\/b> (3 * 2 * 2 * 2 * 2 * 2 * 2). \u0421\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u0436\u0435 <b>192<\/b>.<\/p>\n<p>  <b>\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438<\/b>: \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432 \u043a\u0430\u043a \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435, \u0433\u0434\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u043a \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0433\u0435\u043d\u043e\u0442\u0438\u043f. \u041d\u0435\u0441\u043b\u043e\u0436\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0434\u0432\u0430 \u0441\u0440\u0435\u0434\u043d\u0438\u0445 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f \u0447\u0438\u0441\u043b\u0430 192, \u044d\u0442\u043e 16 \u0438 12:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u043a\u043e\u0434 \u044d\u0442\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0438\u0437 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430 Stats<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">        # \u0432\u044b\u043f\u0438\u0441\u0430\u0442\u044c \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0438 \u0447\u0438\u0441\u043b\u0430-\u0441\u0443\u043c\u043c\u044b \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432:         list_divisors = list()         current_number = int(self.genotypes_total \/\/ 2)         while current_number &gt;= 2:             if self.genotypes_total % current_number == 0:                 list_divisors.append(current_number)             current_number -= 1         print('list_divisors:', list_divisors)          # \u0432\u0437\u044f\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441 \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0438\u0437 \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u044b \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0435\u0439:         somewhere_in_the_middle = len(list_divisors) \/\/ 2          # \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043b\u0438\u043d\u044b \u0441\u0442\u043e\u0440\u043e\u043d \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a\u0430:         side_1 = list_divisors[somewhere_in_the_middle]         side_2 = self.genotypes_total \/ side_1          # \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0430\u043a\u0430\u044f \u0441\u0442\u043e\u0440\u043e\u043d\u0430 \u0434\u043b\u0438\u043d\u043d\u0435\u0435, \u0447\u0442\u043e\u0431\u044b \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c \u043f\u0440\u044f\u043c\u043e\u0443\u0433\u043e\u043b\u044c\u043d\u0438\u043a &quot;\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c&quot; \u043d\u0430 \u0431\u043e\u043a:         self.side_x = int(side_1 if side_1 &gt;= side_2 else side_2)         self.side_y = int(self.genotypes_total \/ self.side_x)         print('side_x =', self.side_x, 'side_y =', self.side_y) <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0431\u043b\u0430\u0441\u0442\u044c 16\u044512:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/pn\/8n\/vx\/pn8nvxz2s8e94osy7ekubco9sci.png\" alt=\"image\"><\/p>\n<p>  \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u044d\u0442\u0438\u043c \u043a\u043e\u0434\u043e\u043c:<\/p>\n<pre><code class=\"python\">        # \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432:         self.list_of_possible_genotypes = list()          # \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0440\u0443\u0436\u0438\u044f \u0432 \u043f\u0440\u0430\u0432\u043e\u0439 \u0440\u0443\u043a\u0435:         for g1 in RIGHT_HANDS:             # \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043e\u0440\u0443\u0436\u0438\u044f \u0432 \u043b\u0435\u0432\u043e\u0439 \u0440\u0443\u043a\u0435:             for g2 in LEFT_HANDS:                 # \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u044b\u0445 \u043f\u0435\u0440\u0447\u0430\u0442\u043e\u043a:                 for g3 in GLOVES:                     # \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0448\u043b\u0435\u043c\u0430:                     for g4 in HEADS:                         # \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0430\u0433\u0440\u0443\u0434\u043d\u0438\u043a\u0430:                         for g5 in CHESTS:                             # \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u044b\u0445 \u0448\u0442\u0430\u043d\u043e\u0432:                             for g6 in PANTS:                                 # \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0431\u0443\u0432\u0438:                                 for g7 in BOOTS:                                     current_genotype = str(g1-1)+'-'+str(g2-1)+'-'+str(g3-1)+'-'+str(g4-1)+'-'+str(g5-1)+'-'+str(g6-1)+'-'+str(g7-1)                                     self.list_of_possible_genotypes.append(current_genotype) <\/code><\/pre>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u043a\u0438 \u043d\u0430 \u043f\u043e\u043b\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u044b \u0432 \u0442\u0430\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/hb\/np\/2k\/hbnp2kkxzklgos2rzkbjhpudk7e.png\" alt=\"image\"><\/p>\n<p>  \u042d\u0442\u043e \u0432\u0430\u0436\u043d\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c, \u0432\u0435\u0434\u044c, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u00ab\u0433\u0435\u043d \u0421\u0438\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u043c\u0435\u0447\u0430\u00bb (<b>\u0433\u043e\u043b\u0443\u0431\u043e\u0439<\/b> \u0443\u0433\u043e\u043b\u043e\u043a) \u043d\u0430\u0445\u043e\u0434\u044f\u0442\u0441\u044f \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u043f\u043e\u043b\u044f, \u0430 \u0442\u0435 \u0438\u0437 \u043d\u0438\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0442\u0430\u043a\u0436\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u00ab\u0433\u0435\u043d \u0421\u0438\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u043a\u0438\u043d\u0436\u0430\u043b\u0430\u00bb (<b>\u0441\u0438\u043d\u0438\u0439<\/b> \u0443\u0433\u043e\u043b\u043e\u043a) \u2014 \u0437\u0430\u043d\u0438\u043c\u0430\u044e\u0442 \u0435\u0449\u0451 \u0431\u043e\u043b\u0435\u0435 \u0432\u0435\u0440\u0445\u043d\u044e\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/d5\/ms\/dm\/d5msdmz57ms7q5_nhugxev4mnwa.png\" alt=\"image\"><\/p>\n<p>  \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0441\u0438\u043b\u044c\u043d\u044b\u0439 \u0433\u0435\u043d\u043e\u0442\u0438\u043f (<b>0-0-0-0-0-0-0<\/b>) \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u043b\u0435\u0432\u043e\u043c \u0443\u0433\u043b\u0443, \u0430 \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u0430\u0431\u044b\u0439 (<b>2-1-1-1-1-1-1<\/b>) \u2014 \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u043c. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u043c \u043f\u0440\u0438 \u043d\u0430\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0438 \u0437\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435\u043c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0432 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0435, \u0432\u0435\u0434\u044c \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u00ab\u0434\u043e\u043c\u0438\u043d\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0433\u0435\u043d\u043e\u0444\u043e\u043d\u0434\u00bb \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043c\u0435\u0449\u0430\u0442\u044c\u0441\u044f \u0432 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u043b\u0435\u0432\u044b\u0439 \u0443\u0433\u043e\u043b \u043f\u043e\u043b\u044f:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/xg\/ol\/gv\/xgolgvhh-f70rmveh6g_7bvsn5o.png\" alt=\"image\"><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044e \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:<\/p>\n<pre><code class=\"python\">MAX_STAGES = 5 MAX_DAYS_AT_STAGE = 40 SLIDING_FREQUENCY = 1 ROGUES_AT_BEGIN = 8 WINS_TO_REPRODUCE = 2 DEFEATS_TO_DIE = 2 POSSIBLE_BIRTH_QUANTITIES = [1]  HTML_GSQUARE_SIDE = 16 HTML_GSQUARE_MARGIN = 3 <\/code><\/pre>\n<p>  \u0422\u043e \u0435\u0441\u0442\u044c 8 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432 \u043d\u0430 \u0441\u0442\u0430\u0440\u0442\u0435, &lt;div&gt;-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441 \u043f\u043e\u043b\u044f\u043c\u0438 (\u0434\u0430\u043b\u0435\u0435 \u2014 <b>\u0441\u043b\u0430\u0439\u0434\u044b<\/b>) \u0441\u043e\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0434\u043d\u044f, 5 \u0441\u0442\u0430\u0434\u0438\u0439 \u043f\u043e 40 \u0434\u043d\u0435\u0439. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0434\u0432\u0430 \u043d\u0430\u0431\u043e\u0440\u0430 \u0441\u043b\u0430\u0439\u0434\u043e\u0432 \u043f\u043e 200 \u0448\u0442\u0443\u043a: &quot;<b>\u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u043e\u0441\u0442\u044c \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432<\/b>&quot; (\u0441\u0438\u043d\u0435-\u0437\u0435\u043b\u0451\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430) \u0438 &quot;<b>\u043f\u043e\u0431\u0435\u0434\u044b \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432<\/b>&quot; (\u043a\u0440\u0430\u0441\u043d\u044b\u0435 \u0438 \u0437\u0435\u043b\u0451\u043d\u044b\u0435 \u0446\u0432\u0435\u0442\u0430). \u041d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0446\u0432\u0435\u0442\u0430 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u043a\u043e\u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439.<\/p>\n<p>  \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 HTML-\u043e\u0442\u0447\u0451\u0442 \u0438 \u0432\u0438\u0434\u0438\u043c \u0442\u0430\u043a\u0443\u044e \u043a\u0430\u0440\u0442\u0438\u043d\u0443 \u0434\u043b\u044f 1-\u0433\u043e \u0438 10-\u0433\u043e \u0434\u043d\u044f:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sp\/lh\/45\/splh45uk0oeztof3fx4nqiapyi0.png\" alt=\"image\"><\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0434\u0435\u043d\u044c \u0443 \u043d\u0430\u0441 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u043e\u0441\u044c 8 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432, \u0438\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u043a\u0438 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u0431\u0440\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0442\u0435\u043d\u044c. \u0414\u0430\u043b\u0435\u0435 \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043e\u043d\u0438 \u043d\u0430\u0447\u0430\u043b\u0438 \u0434\u0440\u0430\u0442\u044c\u0441\u044f, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442, \u043f\u043e\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043f\u0435\u0440\u0432\u044b\u0435 \u043f\u043e\u0431\u0435\u0434\u044b, \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0449\u0438\u0435 \u043a \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044e. \u0420\u0430\u0437\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0435 \u0441 \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u043e\u043f\u0440\u044f\u0436\u0435\u043d\u043e \u0441 \u043c\u0443\u0442\u0430\u0446\u0438\u044f\u043c\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043a\u0440\u0430\u0448\u0435\u043d\u043d\u044b\u0445 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438\u043a\u043e\u0432 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435.<\/p>\n<p>  \u0417\u0430\u0433\u043b\u044f\u043d\u0435\u043c \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u043d\u0438. \u041d\u0430 44-\u0439 \u0434\u0435\u043d\u044c \u043f\u043e\u044f\u0432\u0438\u043b\u0441\u044f \u0433\u0435\u043d\u043e\u0442\u0438\u043f &quot;<b>0-0-0-0-0-0-0<\/b>&quot; (\u0441\u043c. \u0437\u0430 \u0441\u0438\u043d\u0435\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u043e\u0439). \u041d\u0430 59-\u0439 \u0434\u0435\u043d\u044c \u043e\u043d \u0443\u0436\u0435 \u0432\u044b\u0440\u0432\u0430\u043b\u0441\u044f \u0432\u043f\u0435\u0440\u0451\u0434 \u043f\u043e \u043f\u043e\u0431\u0435\u0434\u0430\u043c (\u0441\u043c. \u0437\u0430 \u043a\u0440\u0430\u0441\u043d\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u043e\u0439).<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ui\/jb\/6h\/uijb6h_rblewjzlghjnuueajfho.png\" alt=\"image\"><\/p>\n<p>  \u041d\u0430 137-\u0439 \u0434\u0435\u043d\u044c \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e &quot;<b>0-0-0-0-0-0-0<\/b>&quot; \u0432\u044b\u0431\u0438\u043b\u0441\u044f \u0432 \u043b\u0438\u0434\u0435\u0440\u044b \u0438 \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0439 \u0432 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438 (\u0441\u043c. \u0437\u0430 \u0441\u0438\u043d\u0435\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u043e\u0439). \u0418 \u043d\u0430 \u0441\u043b\u0430\u0439\u0434\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u0434\u043d\u044f \u0443 \u043d\u0435\u0433\u043e \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0437\u043e\u043b\u043e\u0442\u0430\u044f \u0442\u0435\u043d\u044c, \u0442\u0430\u043a \u043a\u0430\u043a \u043e\u043d \u0443\u0434\u0435\u0440\u0436\u0430\u043b \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043f\u0435\u0440\u0432\u043e\u0435 \u043c\u0435\u0441\u0442\u043e \u043f\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u043f\u043e\u0431\u0435\u0434.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sr\/sg\/ry\/srsgry0wlhn2po0r6d2xvbgr1k4.png\" alt=\"image\"><\/p>\n<p>  \u041a\u0430\u043a \u0432\u0438\u0434\u0438\u043c, \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043e\u0442\u0431\u043e\u0440 \u0441\u043c\u0435\u0449\u0430\u0435\u0442 \u00ab\u0433\u0435\u043d\u043e\u0444\u043e\u043d\u0434\u00bb \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u0432\u043b\u0435\u0432\u043e \u0438 \u0432\u0432\u0435\u0440\u0445, \u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u0441\u0442\u043e\u0440\u043e\u043d\u0443 \u0431\u043e\u043b\u0435\u0435 \u0441\u0438\u043b\u044c\u043d\u043e\u0439 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0438. &quot;<b>\u041d\u0438\u0436\u0435\u043f\u0440\u0430\u0432\u044b\u0435<\/b>&quot; \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u044b \u0441\u043b\u0430\u0431\u0435\u0435 &quot;<b>\u0432\u0435\u0440\u0445\u043d\u0435\u043b\u0435\u0432\u044b\u0445<\/b>&quot;, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043e\u043d\u0438 \u0438\u0441\u0447\u0435\u0437\u0430\u044e\u0442, \u0435\u0434\u0432\u0430 \u043f\u043e\u044f\u0432\u0438\u0432\u0448\u0438\u0441\u044c (\u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u0431\u0435\u0434). \u0411\u043e\u043b\u0435\u0435 \u0447\u0451\u0442\u043a\u043e \u044d\u0442\u043e \u0432\u0438\u0434\u043d\u043e \u043d\u0430 \u0431<i>\u043e<\/i>\u043b\u044c\u0448\u0435\u043c \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/1h\/dq\/qj\/1hdqqjtdmmqyyzdk-v0vlcrtida.png\" alt=\"image\"><\/p>\n<p>  \u041d\u0443 \u0438 \u0432\u0435\u0440\u0434\u0438\u043a\u0442 \u0432 \u043e\u0442\u0447\u0451\u0442\u0435 \u0432\u044b\u0434\u0430\u043d \u0432\u0435\u0440\u043d\u044b\u0439: \u0433\u0435\u043d\u043e\u0442\u0438\u043f-\u043f\u043e\u0431\u0435\u0434\u0438\u0442\u0435\u043b\u044c \u2014 <b>0-0-0-0-0-0-0<\/b>:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/uh\/fb\/hb\/uhfbhbyltfw4w9l1ruoljq2hlhc.png\" alt=\"image\"><\/p>\n<p>  \u0413\u0440\u0430\u0444\u0438\u043a\u0438, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 matplotlib, \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0435:<\/p>\n<p>  <b>1.<\/b> \u0433\u0440\u0430\u0444\u0438\u043a &quot;<b>\u0436\u0438\u0432\u043e\u0435 \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u0438\u0435<\/b>&quot; \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0443 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0436\u0438\u0432\u0443\u0449\u0438\u0445 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432;<br \/>  <b>2.<\/b> \u0433\u0440\u0430\u0444\u0438\u043a &quot;<b>\u0440\u043e\u0434\u0438\u0432\u0448\u0438\u0445\u0441\u044f \u0432\u0441\u0435\u0433\u043e<\/b>&quot; \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c \u0431\u043b\u0438\u0437\u0438\u0442\u0441\u044f \u043a \u043f\u0440\u044f\u043c\u043e\u0439 \u043b\u0438\u043d\u0438\u0438, \u0435\u0441\u043b\u0438 \u043d\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0433\u0440\u0430\u0442\u044c\u0441\u044f \u0441 \u0434\u0435\u043c\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/v8\/sp\/ih\/v8spihylisswqfhsjv3i1rxftv8.jpeg\" alt=\"image\"><\/p>\n<p>  <b>3.<\/b> \u0433\u0440\u0430\u0444\u0438\u043a &quot;<b>\u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u0435 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432<\/b>&quot; \u2014 \u043e\u0431\u044b\u0447\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0440\u043e\u0441\u0442 \u0441\u043d\u0430\u0447\u0430\u043b\u0430, \u0437\u0430\u0442\u0435\u043c \u0437\u0430\u043c\u0435\u0434\u043b\u044f\u0435\u0442\u0441\u044f, \u043f\u043e\u0441\u0442\u0435\u043f\u0435\u043d\u043d\u043e \u043f\u0440\u0438\u0431\u043b\u0438\u0436\u0430\u044f\u0441\u044c \u043a \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c\u0443;<br \/>  <b>4.<\/b> \u0433\u0440\u0430\u0444\u0438\u043a &quot;<b>\u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0430 \u043d\u0438\u0447\u044c\u0438\u0445<\/b>&quot; \u2014 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u043a\u0430\u043a \u0441 \u0442\u0435\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043d\u0438\u0447\u044c\u0438\u0445 (\u044d\u0442\u043e \u0431\u043e\u0438, \u043a\u043e\u0433\u0434\u0430 \u0432 \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0445\u0432\u0430\u0442\u043a\u0435 \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u0434\u0432\u0430 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u0445 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u0430):<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ig\/dt\/ia\/igdtiaoicecg3fjku38lrznuydi.jpeg\" alt=\"image\"><\/p>\n<p>  \u0411\u044b\u0432\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0435, \u0447\u0442\u043e \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u044f \u00ab\u0437\u0430\u0441\u0442\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f\u00bb, \u043a\u043e\u0433\u0434\u0430 \u0432 \u043d\u0435\u0439 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0438 \u0441 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c\u0438 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u0430\u043c\u0438 (\u043d\u0430 \u0433\u0440\u0430\u0444\u0438\u043a\u0430\u0445 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0435\u0442\u0441\u044f: <b>\u0440\u0435\u0437\u043a\u0438\u0439 \u0440\u043e\u0441\u0442<\/b> \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u0438\u0447\u044c\u0438\u0445, <b>\u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e\u0441\u0442\u044c<\/b> \u0432 \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0441\u0435\u043b\u0435\u043d\u0438\u044f \u0438 \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0445 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432).<\/p>\n<p>  \u0417\u0430\u0441\u0442\u043e\u0439 \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 \u0438 \u043e\u0442\u0440\u0438\u0441\u043e\u0432\u043a\u0430 \u0441\u043b\u0430\u0439\u0434\u043e\u0432 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0437\u0440\u044f. \u0427\u0442\u043e\u0431\u044b \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u0442\u044c \u043f\u0435\u0440\u0438\u043e\u0434\u044b \u0437\u0430\u0441\u0442\u043e\u044f, \u043d\u0443\u0436\u043d\u043e \u0441\u043d\u0438\u0437\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b MAX_DAYS_AT_STAGE, \u0438 \u0431\u0443\u0434\u0435\u0442 \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0437\u0430\u0441\u0442\u043e\u0439 \u0441\u043e\u043a\u0440\u0430\u0442\u0438\u043b\u0441\u044f, \u0430 \u043c\u0435\u0441\u0442\u0430\u043c\u0438 \u0432\u043e\u0432\u0441\u0435 \u0438\u0441\u0447\u0435\u0437:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ul\/hw\/o2\/ulhwo2xkfryoca8eiiwonxyudce.png\" alt=\"image\"><\/p>\n<h2>\u042d\u0422\u0410\u041f 5 \u2014 \u0438\u0441\u043f\u044b\u0442\u044b\u0432\u0430\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432<\/h2>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044e \u0434\u043b\u044f \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0432 <a href=\"https:\/\/habr.com\/ru\/post\/495774\/\">\u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435<\/a> \u043d\u0430\u0431\u043e\u0440\u0430 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0438 <b><a href=\"https:\/\/github.com\/andreaskosten\/rogue_equip_evolution\/blob\/master\/evolution_equipment_custom.py\" rel=\"nofollow\">evolution_equipment_custom<\/a><\/b> \u0447\u0443\u0442\u044c \u0441 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438. \u0417\u0434\u0435\u0441\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 POSSIBLE_BIRTH_QUANTITIES = <b>[1, 2]<\/b> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u043f\u0440\u0438 \u0430\u043a\u0442\u0435 \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0441 50%-\u043e\u0439 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e \u043d\u0430 \u0441\u0432\u0435\u0442 \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f <b>\u043b\u0438\u0431\u043e 1, \u043b\u0438\u0431\u043e 2<\/b> \u043f\u043e\u0442\u043e\u043c\u043a\u0430. \u042d\u0442\u043e \u0443\u0441\u0438\u043b\u0438\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0443 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e:<\/p>\n<pre><code class=\"python\">MAX_STAGES = 20 MAX_DAYS_AT_STAGE = 50 SLIDING_FREQUENCY = 10 ROGUES_AT_BEGIN = 8  WINS_TO_REPRODUCE = 2 DEFEATS_TO_DIE = 2 POSSIBLE_BIRTH_QUANTITIES = [1, 2]  HTML_GSQUARE_SIDE = 10 HTML_GSQUARE_MARGIN = 3 <\/code><\/pre>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432 \u043d\u0430 \u0441\u043b\u0430\u0439\u0434\u0430\u0445 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u044b\u043c, \u0432\u0435\u0434\u044c \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0437\u043d\u0430\u0447\u0438\u043c\u0430\u044f \u0434\u043b\u044f \u043e\u0431\u0449\u0435\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0430 (\u00ab\u041c\u0435\u0447 \u041c\u0430\u0441\u0442\u0435\u0440\u0430\u00bb) \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u00ab\u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0435\u0441\u0442\u0430\u0445\u00bb. \u0414\u043b\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u0443\u0436\u0435 \u0445\u0430\u0440\u0430\u043a\u0442\u0435\u0440\u043d\u043e \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u0435 \u0440\u044f\u0434\u0430 \u00ab\u043e\u0447\u0430\u0433\u043e\u0432 \u0441\u0438\u043b\u044b\u00bb \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u0433\u0434\u0435 \u0441\u0438\u043b\u0430 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u0432\u044b\u0448\u0435, \u0447\u0435\u043c \u0432 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u00ab\u0440\u0430\u0439\u043e\u043d\u0430\u0445\u00bb.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/jn\/m5\/3k\/jnm53khsoxbgahp9pbqtzn9my64.png\" alt=\"image\"><\/p>\n<p>  \u041a\u0441\u0442\u0430\u0442\u0438, \u044d\u0442\u043e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0431\u0435\u0437\u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b \u0442\u043e\u043f\u043e\u0432\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0438 (<b>3-3-0-0-0-0-1<\/b>), \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u044e\u0449\u0438\u0439 \u0441 \u0442\u0435\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u043b\u0441\u044f \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0442\u043e\u0440\u043d\u044b\u043c \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u043c \u0441 <a href=\"https:\/\/habr.com\/ru\/post\/495774\/\">\u043f\u0440\u043e\u0448\u043b\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438<\/a>:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/8q\/ck\/c1\/8qckc1m7z2eh2ow-0hbarp5kmdc.png\" alt=\"image\"><\/p>\n<p>  \u0418, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b \u0442\u0435\u0441\u0442 \u0434\u043b\u044f <b><a href=\"https:\/\/github.com\/andreaskosten\/rogue_equip_evolution\/blob\/master\/evolution_equipment_extended.py\" rel=\"nofollow\">\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430<\/a><\/b>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0430\u0451\u0442 <b>18432<\/b> \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c\u0438<\/b>                         <\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"python\">MAX_STAGES = 30 MAX_DAYS_AT_STAGE = 50 SLIDING_FREQUENCY = 100 ROGUES_AT_BEGIN = 20 WINS_TO_REPRODUCE = 2 DEFEATS_TO_DIE = 2 POSSIBLE_BIRTH_QUANTITIES = [1, 2]  HTML_GSQUARE_SIDE = 4 HTML_GSQUARE_MARGIN = 1 <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zz\/dg\/x5\/zzdgx54yqhve7eb0lj32qrb_oou.png\" alt=\"image\"><\/p>\n<p>  \u0412 \u043e\u0431\u0449\u0435\u043c, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0442\u044c \u0441 \u044d\u0442\u0438\u043c \u0437\u0430\u0431\u0430\u0432\u043b\u044f\u0442\u044c\u0441\u044f, \u043d\u043e \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u043d\u043e\u0439 \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u044f: \u0432 \u0445\u043e\u0434\u0435 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u044b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0441\u043a\u0430\u043f\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u044d\u0442\u0438\u0445 \u0441\u0430\u043c\u044b\u0445 \u00ab\u043e\u0447\u0430\u0433\u0430\u0445 \u0441\u0438\u043b\u044b\u00bb. \u0418 \u0434\u043e\u043c\u0438\u043d\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0433\u0435\u043d\u043e\u0442\u0438\u043f \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u044f\u0440\u043a\u0438\u0445 \u00ab\u043e\u0447\u0430\u0433\u043e\u0432\u00bb.<\/p>\n<h2>\u042d\u0422\u0410\u041f 6 \u2014 \u0430 \u0438\u043c\u0435\u0435\u0442 \u043b\u0438 \u044d\u0442\u043e \u0432\u0441\u0451 \u0441\u043c\u044b\u0441\u043b?<\/h2>\n<p>  \u0415\u0441\u043b\u0438 \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0432\u043e\u043f\u0440\u043e\u0441\u0430, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d \u043b\u0438 \u044d\u0442\u043e\u0442 \u0433\u0435\u043d\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u043d\u0430\u0439\u0442\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0446\u0435\u043d\u043e\u0439 \u043c\u0435\u043d\u044c\u0448\u0435\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0431\u043e\u0451\u0432, \u0447\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0442\u043e\u0440\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u0432\u0441\u0435\u0445 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432. <b>\u041e\u0442\u0432\u0435\u0442: \u0434\u0430, \u0441\u043f\u043e\u0441\u043e\u0431\u0435\u043d<\/b>. \u0414\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c:<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0434\u043e\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u043e \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 \u0433\u0435\u043d\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u0435\u0440\u043d\u0451\u043c\u0441\u044f \u043a \u043d\u0430\u0431\u043e\u0440\u0443 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u043d\u0430 1728 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0439.<\/p>\n<p>  \u041a\u043e\u043c\u0431\u0438\u043d\u0430\u0442\u043e\u0440\u043d\u043e\u043c\u0443 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0443 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u043e\u0434\u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0440\u0435\u0439\u0442\u0438\u043d\u0433 \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0438 \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 \u0440\u0430\u0437\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438, \u0442.\u0435. 1728 \u0440\u0430\u0437.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u0433\u0435\u043d\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0434\u043e\u043b\u0436\u0435\u043d \u043d\u0430\u0439\u0442\u0438 \u043e\u0442\u0432\u0435\u0442 <b>\u043c\u0435\u043d\u0435\u0435 \u0447\u0435\u043c \u0437\u0430 1728<\/b> \u0442\u0430\u043a\u0438\u0445 \u0436\u0435 \u0440\u0430\u0441\u0447\u0451\u0442\u043e\u0432. \u041e\u0434\u0438\u043d \u00ab\u0431\u043e\u0439\u00bb \u043c\u0435\u0436\u0434\u0443 \u0434\u0432\u0443\u043c\u044f \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430\u043c\u0438 \u2014 \u044d\u0442\u043e \u0441\u0440\u0430\u0437\u0443 2 \u0440\u0430\u0441\u0447\u0451\u0442\u0430 (\u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u043d\u0438\u0445). \u0418\u0442\u0430\u043a, \u0431\u043e\u0451\u0432 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0435 \u0431\u043e\u043b\u044c\u0448\u0435, \u0447\u0435\u043c 1728 \/ 2 = <b>864<\/b>. \u041f\u043e\u0435\u0445\u0430\u043b\u0438.<\/p>\n<p>  \u041f\u043e\u0434\u043e\u0431\u0440\u0430\u043b \u0442\u0430\u043a\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b:<\/p>\n<pre><code class=\"python\">MAX_STAGES = 8 MAX_DAYS_AT_STAGE = 20 SLIDING_FREQUENCY = 10 ROGUES_AT_BEGIN = 10 WINS_TO_REPRODUCE = 2 DEFEATS_TO_DIE = 2 POSSIBLE_BIRTH_QUANTITIES = [1]  HTML_GSQUARE_SIDE = 10 HTML_GSQUARE_MARGIN = 3 <\/code><\/pre>\n<p>  \u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0434\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0431\u0440\u0430\u043b \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u0433\u0434\u0435 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0435 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u044b \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u044b \u043f\u043e\u0434\u0430\u043b\u044c\u0448\u0435 \u043e\u0442 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043b\u0438\u0434\u0435\u0440\u0430 <b>3-3-0-0-0-0-1<\/b>:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/v3\/ib\/tz\/v3ibtzqoakdqbwargjjrxjca8c8.png\" alt=\"image\"><\/p>\n<p>  \u041e\u0442\u0447\u0451\u0442:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/wl\/oc\/oc\/wlococryn8g7fhiechbhbyzpa_y.png\" alt=\"image\"><\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043f\u0440\u0438\u0439\u0442\u0438 \u043a \u043e\u0442\u0432\u0435\u0442\u0443 <b>3-3-0-0-0-0-1<\/b> \u0437\u0430 <b>547<\/b> \u0431\u043e\u0451\u0432. \u041f\u0440\u0438\u0447\u0451\u043c 87 \u0431\u043e\u0451\u0432 \u043e\u043a\u0430\u0437\u0430\u043b\u0438\u0441\u044c \u043d\u0430\u043f\u0440\u0430\u0441\u043d\u044b\u043c\u0438 (\u043d\u0438\u0447\u044c\u0438), \u0447\u0442\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 <b>16%<\/b> \u0431\u0435\u0441\u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<p>  \u041d\u0430 \u0433\u0435\u043d\u043e\u0444\u043e\u043d\u0434\u0430\u0445 \u0431<i>\u043e<\/i>\u043b\u044c\u0448\u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432 \u0432\u044b\u0433\u043e\u0434\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043e\u0449\u0443\u0442\u0438\u043c\u0430.  <\/div>\n<\/p><\/div>\n<p>  <b>P.S.<\/b> \u041d\u0430 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u0443\u0434\u0430\u0451\u0442\u0441\u044f \u0432\u044b\u0439\u0442\u0438 \u0434\u0430\u0436\u0435 \u043f\u0440\u0438 ROGUES_AT_BEGIN = <b>2<\/b> \u0438 POSSIBLE_BIRTH_QUANTITIES = <b>[1]<\/b>. \u042d\u0442\u043e \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0443\u0434\u0438\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c, \u0432\u0435\u0434\u044c \u0447\u0438\u0441\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u043f\u0443\u043b\u044f\u0446\u0438\u0438 \u043d\u0438 \u0440\u0430\u0437\u0443 \u043d\u0435 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442\u0441\u044f \u0432\u044b\u0448\u0435 2 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u043e\u0432. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442, \u0434\u0440\u0443\u0433\u043e\u0439 \u0432\u044b\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442, \u043f\u0435\u0440\u0432\u044b\u0439 \u0443\u043c\u0438\u0440\u0430\u0435\u0442, \u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u0440\u043e\u0436\u0434\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u043e\u043c\u043a\u0430. \u0418 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u044f\u0437\u0430\u0442\u044c\u0441\u044f \u0443\u0436\u0435 \u0441 \u044d\u0442\u0438\u043c \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u043c. \u041f\u043e\u0442\u043e\u043c\u043e\u043a \u043b\u0438\u0431\u043e \u0441\u0438\u043b\u044c\u043d\u0435\u0435, \u043b\u0438\u0431\u043e \u0441\u043b\u0430\u0431\u0435\u0435. \u0418 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f \u0431\u0435\u0437\u0436\u0430\u043b\u043e\u0441\u0442\u043d\u043e\u0435 \u043a\u043e\u043b\u0435\u0441\u043e \u043e\u0442\u0431\u043e\u0440\u0430 \u043c\u0435\u0436\u0434\u0443 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u0435\u043c \u0438 \u0435\u0433\u043e \u0436\u0435 \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u043c, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u0440\u0438\u0434\u0451\u0442 \u0432 \u043b\u0443\u0447\u0448\u0443\u044e \u0442\u043e\u0447\u043a\u0443 (\u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0443\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0438\u0447\u044c \u0437\u0430 \u043e\u0442\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044d\u0442\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0430\u044f).<\/p>\n<h2>\u0418\u0442\u043e\u0433\u0438<\/h2>\n<p>  <\/p>\n<ol>\n<li>\u041f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u0440\u0435\u0448\u0430\u0435\u043c\u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0433\u0435\u043d\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432.<\/li>\n<li>\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0435\u0433\u043e \u0442\u0430\u043a\u0438\u043c \u00ab\u043f\u0441\u0435\u0432\u0434\u043e\u043a\u0430\u0440\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u00bb \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0442\u0435\u043d\u0434\u0435\u043d\u0446\u0438\u0438 \u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u043a\u0443 \u0432 \u043e\u0442\u044b\u0441\u043a\u0438\u0432\u0430\u043d\u0438\u0438 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u0445 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u043e\u0432 \u043d\u0430 \u0432\u0441\u0435\u0445 \u044d\u0442\u0430\u043f\u0430\u0445 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0438.<\/li>\n<li>\u041f\u0440\u0438 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0433\u0435\u043d\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 <b>\u043c\u0435\u043d\u044c\u0448\u0435 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439<\/b>, \u0447\u0435\u043c \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043f\u0435\u0440\u0435\u0431\u043e\u0440 \u0432\u0441\u0435\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 (\u0437\u0434\u0435\u0441\u044c \u0442\u0430\u043a\u043e\u0432\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0435\u0439 \u0431\u044b\u043b \u0440\u0430\u0441\u0447\u0451\u0442 \u0441\u0438\u043b\u044b \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0430 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <b><i>calculate_rate<\/i><\/b> \u043a\u043b\u0430\u0441\u0441\u0430 Rogue, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u0438\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u0434\u043e\u0440\u043e\u0433\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u043c).<\/li>\n<li>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043d\u0430\u0434 \u044d\u0442\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0451 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0443\u043b\u0443\u0447\u0448\u0430\u044f \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u044c. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u043c\u043e\u043c\u0435\u043d\u0442 \u043d\u0430\u0447\u0430\u0442\u044c <b>\u00ab\u0431\u0430\u043d\u0438\u0442\u044c\u00bb<\/b> \u044f\u0432\u043d\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0448\u043d\u044b\u0435 \u0433\u0435\u043d\u043e\u0442\u0438\u043f\u044b, \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044f \u0438\u0445 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430\u043c \u0441\u0440\u0430\u0436\u0430\u0442\u044c\u0441\u044f \u0438\u043b\u0438 \u0434\u0430\u0436\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0431\u0443\u0434\u0435\u0442 \u0441\u0443\u0436\u0430\u0442\u044c\u0441\u044f \u0432\u043e\u0440\u043e\u043d\u043a\u0430 \u00ab\u043b\u0438\u0434\u0435\u0440\u043e\u0432\u00bb, \u0433\u0434\u0435 \u043e\u043d\u0438 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439 \u0434\u043e\u043b\u0436\u043d\u044b \u0442\u043e\u0447\u043d\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u043a\u0442\u043e \u00ab\u0441\u0438\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0439\u00bb.<\/li>\n<\/ol>\n<p>  \u0412\u0435\u0441\u044c \u043a\u043e\u0434 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u044f \u0432\u044b\u043b\u043e\u0436\u0438\u043b \u043d\u0430 <a href=\"https:\/\/github.com\/andreaskosten\/rogue_equip_evolution\" rel=\"nofollow\"><b>\u0433\u0438\u0442\u0445\u0430\u0431\u0435<\/b><\/a>.<\/p>\n<p>  \u0423\u0432\u0430\u0436\u0430\u0435\u043c\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e, \u0431\u0443\u0434\u0443 \u0440\u0430\u0434 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u043f\u043e \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u0435.<\/p><\/div>\n<p> \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\/post\/499450\/\"> https:\/\/habr.com\/ru\/post\/499450\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\" data-io-article-url=\"https:\/\/habr.com\/ru\/post\/499450\/\">\u041a\u0430\u043a \u043f\u043e\u0434\u043e\u0431\u0440\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0443\u044e \u044d\u043a\u0438\u043f\u0438\u0440\u043e\u0432\u043a\u0443 \u0432 \u043b\u044e\u0431\u0438\u043c\u043e\u0439 \u0438\u0433\u0440\u0435? \u041a\u043e\u043d\u0435\u0447\u043d\u043e, \u043c\u043e\u0436\u043d\u043e \u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e \u043f\u0435\u0440\u0435\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0435 \u0435\u0451 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0430 \u0438\u0437 World of Warcraft) \u0438 \u043d\u0430\u0439\u0442\u0438 \u043d\u0430\u0438\u043b\u0443\u0447\u0448\u0435\u0435. \u0411\u0435\u0437 \u0432\u0441\u044f\u043a\u043e\u0439 \u043c\u0430\u0433\u0438\u0438 \u0438 \u043c\u0430\u0448\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u044f. \u041d\u043e \u043c\u043e\u0436\u043d\u043e \u043b\u0438 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0430 \u043d\u0435 \u00ab\u0432 \u043b\u043e\u0431\u00bb, \u0430 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0433\u0435\u043d\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u043e\u0432, \u043d\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044f\u044f \u043a\u0430\u0436\u0434\u0443\u044e \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u044e? \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0430\u044e\u0442\u0441\u044f \u0438 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u044e\u0442 \u0440\u0430\u0437\u0431\u043e\u0439\u043d\u0438\u043a\u0438? \u041f\u043e\u0435\u0445\u0430\u043b\u0438.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/zn\/wd\/vi\/znwdvivpeiswsupkqrhdpgvt0mg.png\" alt=\"image\">  <\/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-302686","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/302686","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=302686"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/302686\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=302686"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=302686"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=302686"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}