{"id":342890,"date":"2022-12-19T15:03:07","date_gmt":"2022-12-19T15:03:07","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=342890"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2022-12-19T15:03:07","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=342890","title":{"rendered":"<span>\u0418\u0437\u0443\u0447\u0438\u0442\u044c \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u00ab\u0412\u043b\u0430\u0441\u0442\u0435\u043b\u0438\u043d\u0430 \u041a\u043e\u043b\u0435\u0446\u00bb \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u0440\u0438\u0432\u043e\u0439 \u042d\u0431\u0431\u0438\u043d\u0433\u0430\u0443\u0437\u0430<\/span>"},"content":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e92\/a2f\/e0e\/e92a2fe0ea45aff853a9abbce6846c5f.JPG\" width=\"925\" height=\"613\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0412\u0441\u0435 \u0440\u0443\u0441\u0441\u043a\u0438\u0435 \u0444\u0430\u043d\u0430\u0442\u044b \u0422\u043e\u043b\u043a\u0438\u0435\u043d\u0430 \u0437\u043d\u0430\u044e\u0442, \u043a\u0430\u043a\u0430\u044f \u0431\u0435\u0434\u0430 \u0442\u0432\u043e\u0440\u0438\u0442\u0441\u044f \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430\u043c\u0438 \u0435\u0433\u043e \u0432\u0435\u043b\u0438\u043a\u043e\u0433\u043e \u0440\u043e\u043c\u0430\u043d\u0430 (\u0434\u0430\u043b\u0435\u0435 \u2013 \u0412\u041a) \u043d\u0430 \u044f\u0437\u044b\u043a \u041f\u0443\u0448\u043a\u0438\u043d\u0430 \u0438 \u0414\u043e\u0441\u0442\u043e\u0435\u0432\u0441\u043a\u043e\u0433\u043e. \u041f\u043e\u044f\u0441\u043d\u044e \u0432\u043a\u0440\u0430\u0442\u0446\u0435. \u0427\u0435\u0440\u0435\u0437 \u0441\u043e\u0432\u0435\u0442\u0441\u043a\u0443\u044e \u0446\u0435\u043d\u0437\u0443\u0440\u0443 \u0432 1982 \u0433\u043e\u0434\u0443 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0442\u0430\u0449\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u043e\u043c, \u0434\u0430\u043b\u044c\u0448\u0435 \u0434\u0435\u043b\u043e \u0437\u0430\u0433\u043b\u043e\u0445\u043b\u043e. \u0427\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u0434\u043e\u0448\u0435\u043b \u043b\u0438 \u0424\u0440\u043e\u0434\u043e \u0434\u043e \u0420\u043e\u043a\u043e\u0432\u043e\u0439 \u0433\u043e\u0440\u044b, \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u0434\u0438\u043b\u0435\u0442\u0430\u043d\u0442\u043e\u0432 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u043f\u0435\u0440\u0435\u0432\u0435\u043b\u0438 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435, \u043a\u0442\u043e \u043a\u0430\u043a \u043f\u043e\u043d\u044f\u043b. \u041a\u043e\u0433\u0434\u0430 \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u0430 \u0442\u043e\u043b\u043a\u0438\u0435\u043d\u0438\u0437\u043c\u0430 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438 \u0431\u044b\u043b\u0430 \u0443\u0436\u0435 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u0432\u044b\u0448\u0435\u043b, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434. \u041d\u043e \u0437\u0430\u043f\u0430\u043b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u0430 \u043a \u0442\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0436\u0435 \u0438\u0441\u0441\u044f\u043a, \u0442\u0430\u043a \u0447\u0442\u043e \u0438 \u044d\u0442\u043e\u0442 \u0442\u0440\u0443\u0434 \u0432\u044b\u0448\u0435\u043b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u044b\u043c: \u0442\u044e\u0440\u0435\u043c\u043d\u044b\u0439 \u0436\u0430\u0440\u0433\u043e\u043d, \u0440\u0443\u0433\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430, \u0435\u0436\u0435\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0435 \u043e\u0442\u0441\u044b\u043b\u043a\u0438 \u043a \u0441\u043e\u0432\u0435\u0442\u0441\u043a\u0438\u043c \u0440\u0435\u0430\u043b\u0438\u044f\u043c\u2026<\/p>\n<p>\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043d\u0430 \u043d\u0430\u0448\u0435\u0433\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u0434\u0432\u043e\u044f\u043a\u043e\u0435 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435. \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u0430\u044f \u0441\u0442\u0438\u043b\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0433\u0435\u043d\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u0438\u043b\u043e\u043b\u043e\u0433\u0430, \u0432 \u0440\u0443\u043a\u0430\u0445 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0436\u0435\u0441\u0442\u043a\u0438\u0439 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u0433\u043d\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u043f\u043b\u0430\u0441\u0442\u0438\u043b\u0438\u043d (&#171;On he led them, into the mouth of darkness, and still on under the deep clouded night&#187;). \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 &#8212; \u043e\u0431\u0438\u043b\u0438\u0435 \u0438\u0434\u0438\u043e\u043c, \u0444\u0440\u0430\u0437\u043e\u0432\u044b\u0445 \u0433\u043b\u0430\u0433\u043e\u043b\u043e\u0432, \u0438\u0433\u0440\u044b \u0441\u043b\u043e\u0432 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0442\u0430\u043a\u0438\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043a\u0430\u043a\u0438\u0435 \u043d\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u0435 \u043d\u0435 \u0441\u044b\u0449\u0435\u0448\u044c.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0432\u043e\u0438\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u043e \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u0438\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D1%80%D0%B8%D0%B2%D0%B0%D1%8F_%D0%B7%D0%B0%D0%B1%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F\" rel=\"noopener noreferrer nofollow\">\u043a\u0440\u0438\u0432\u043e\u0439 \u042d\u0431\u0431\u0438\u043d\u0433\u0430\u0443\u0437\u0430<\/a>.<\/p>\n<p>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440: \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u0430, \u0447\u0442\u043e \u0442\u0430\u043a\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u043d\u0435 \u0441\u043e\u0447\u0442\u0443\u0442 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u043e\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044e \u0435\u0435 \u0432 &#171;\u042f \u043f\u0438\u0430\u0440\u044e\u0441\u044c&#187;. \u0415\u0441\u043b\u0438 \u043c\u043e\u0434\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u043e\u0447\u0442\u0443\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c, \u0442\u043e \u0431\u0443\u0434\u0443 \u0440\u0430\u0434\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u0432 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0445\u0430\u0431\u044b.<\/p>\n<h2>\u0421\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u0437\u044b \u0442\u0435\u0440\u043c\u043e\u0432<\/h2>\n<p>\u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0441\u044f \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u0445 \u0441\u043b\u043e\u0432 \u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0412\u041a. \u0427\u0430\u0441\u0442\u043e\u0442\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043f\u043b\u043e\u0445\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u044b \u0432\u0432\u0438\u0434\u0443 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430, \u043f\u043e\u043b\u0443\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0441\u043b\u043e\u0432 \u0438 \u0438\u0437\u0431\u044b\u0442\u043a\u0430 \u043c\u0430\u043b\u043e\u0443\u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043b\u0435\u043a\u0441\u0438\u043a\u0438. \u0414\u0430 \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0440\u0443\u0447\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0442\u0438\u043b\u0438\u0441\u0442\u0438\u043a\u0443 \u0438 \u0443\u0447\u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041d\u043e \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0432 \u043d\u0430\u0438\u0432\u043d\u044b\u0435 \u0441\u0442\u0443\u0434\u0435\u043d\u0447\u0435\u0441\u043a\u0438\u0435 \u0433\u043e\u0434\u044b \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043d\u0430\u0434 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0412\u041a, \u0438 \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440 \u0443 \u043c\u0435\u043d\u044f \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432, \u0440\u0430\u0437\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u043a\u0430\u0440\u0430\u043d\u0434\u0430\u0448\u043e\u043c \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044e \u041c\u044e\u043b\u043b\u0435\u0440\u0430 \u0438 ABBYY Lingvo.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/9d4\/64b\/743\/9d464b743b47ed27503ba7d05af712d4.jpg\" alt=\"\u0421\u0430\u043c\u044b\u0439 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0438\u0437 \u043c\u043e\u0438\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 Lord of the Rings, \u0438\u0441\u043f\u043e\u0440\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u043c\u0435\u0442\u043a\u0430\u043c\u0438\" title=\"\u0421\u0430\u043c\u044b\u0439 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0438\u0437 \u043c\u043e\u0438\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 Lord of the Rings, \u0438\u0441\u043f\u043e\u0440\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u043c\u0435\u0442\u043a\u0430\u043c\u0438\" width=\"2048\" height=\"1367\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/9d4\/64b\/743\/9d464b743b47ed27503ba7d05af712d4.jpg\" data-blurred=\"true\"\/><figcaption>\u0421\u0430\u043c\u044b\u0439 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0438\u0437 \u043c\u043e\u0438\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 Lord of the Rings, \u0438\u0441\u043f\u043e\u0440\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u043c\u0435\u0442\u043a\u0430\u043c\u0438<\/figcaption><\/figure>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432 Excel, \u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0432\u044b\u043f\u0438\u0441\u044b\u0432\u0430\u044f \u0442\u0435\u0440\u043c, \u0441\u0432\u043e\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0438 \u043d\u043e\u043c\u0435\u0440 \u0433\u043b\u0430\u0432\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f. \u0423\u0431\u0438\u0432 \u043d\u0430 \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u043f\u0430\u0440\u0443 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0432\u0435\u0447\u0435\u0440\u043e\u0432, \u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u043a\u043d\u0438\u0433\u0443, \u0442.\u0435. \u043f\u0435\u0440\u0432\u0443\u044e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0442\u043e\u043c\u0430. \u041c\u043e\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b 6745 \u0441\u043b\u043e\u0432 \u0438 \u0441\u043b\u043e\u0432\u043e\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0439.<\/p>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430. \u0414\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u044f \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u0443.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/72a\/7d0\/8d7\/72a7d08d7fcf6a13a5eabd08cbc4365f.JPG\" alt=\"\u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0431\u0430\u0437\u0430. \u0414\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b \u0432\u0438\u0434\u043d\u044b \u043d\u0435\u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c \u0433\u043b\u0430\u0437\u043e\u043c\" title=\"\u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0431\u0430\u0437\u0430. \u0414\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b \u0432\u0438\u0434\u043d\u044b \u043d\u0435\u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c \u0433\u043b\u0430\u0437\u043e\u043c\" width=\"701\" height=\"424\"\/><figcaption>\u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0431\u0430\u0437\u0430. \u0414\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b \u0432\u0438\u0434\u043d\u044b \u043d\u0435\u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c \u0433\u043b\u0430\u0437\u043e\u043c<\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430, \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u043b\u0441\u044f \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044e \u0441\u043b\u043e\u0432\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u043d\u0438\u0442\u0441\u044f \u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u044f \u043a \u0441\u043b\u0443\u0447\u0430\u044e.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0440\u043c\u044b \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u043d\u044b\u043c \u0433\u043d\u0435\u0437\u0434\u0430\u043c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u043c\u0441\u044f \u043a \u043c\u043e\u0449\u0438 pandas. \u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0435.<\/p>\n<pre><code class=\"python\">import pandas as pd import pathlib excel_data = pd.read_excel(pathlib.Path('c:\/', 'LotR', '\u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0422\u043e\u043b\u043a\u0438\u0435\u043d\u0430.xlsx'), dtype = str) df = pd.DataFrame(excel_data, columns=['Word', 'Russian', 'Chapters']) # \u044d\u0442\u0438 \u0436\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043b\u0438\u0441\u0442\u0430 Excel<\/code><\/pre>\n<p>\u0415\u0449\u0435 \u0440\u0430\u0437 \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a:<\/p>\n<pre><code class=\"python\">df = df.astype({'Word': str, 'Russian': str, 'Chapters': str})<\/code><\/pre>\n<p>\u0418 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0432\u043e\u0434\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 pivot_table(). \u0410\u0433\u0440\u0435\u0433\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f set \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u043e\u043c\u0435\u0440\u0430 \u0433\u043b\u0430\u0432, \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0432 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b.<\/p>\n<pre><code class=\"python\">pt = pd.pivot_table(df,                    values=['Russian', 'Chapters'],                    index='Word',                    aggfunc={'Russian': set,                             'Chapters': set})<\/code><\/pre>\n<p>\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 Excel:<\/p>\n<pre><code class=\"python\">pt.to_excel('C:\/\u0412\u043b\u0430\u0441\u0442\u0435\u043b\u0438\u043d \u041a\u043e\u043b\u0435\u0446\/\u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0422\u043e\u043b\u043a\u0438\u0435\u043d\u0430 \u0441\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439.xlsx')<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0431\u0430\u0437\u0430 \u0442\u0435\u0440\u043c\u043e\u0432 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6c9\/384\/3f7\/6c93843f774a956bc34735a0445325f3.JPG\" alt=\"\u0421\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u0442\u0435\u0440\u043c\u043e\u0432\" title=\"\u0421\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u0442\u0435\u0440\u043c\u043e\u0432\" width=\"989\" height=\"424\"\/><figcaption>\u0421\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u0442\u0435\u0440\u043c\u043e\u0432<\/figcaption><\/figure>\n<p>\u0418 \u0432 \u043d\u0435\u0439 \u0432\u0441\u0435\u0433\u043e 3851 \u0437\u0430\u043f\u0438\u0441\u044c, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0432\u0434\u0432\u043e\u0435.<\/p>\n<p>\u041b\u0438\u0448\u043d\u0438\u0435 \u043a\u0430\u0432\u044b\u0447\u043a\u0438 \u0438 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0440\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0430\u0432\u0442\u043e\u0437\u0430\u043c\u0435\u043d\u043e\u0439. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u0440\u0430\u0432\u0430\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0440\u0443\u0447\u043d\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044f\u0445 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u043f\u043e \u0447\u0430\u0441\u0442\u044f\u043c \u0440\u0435\u0447\u0438.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043c\u0435\u043d\u044f \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u043b\u043e, \u0447\u0442\u043e \u0432 \u043c\u043e\u0435\u0439 \u0431\u0430\u0437\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u043d\u0435 \u0432\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u0440\u043c\u043e\u0432, \u0430 \u043b\u0438\u0448\u044c \u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0438 \u043c\u0435\u043d\u044f \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u0430. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043d\u0430\u043a\u0440\u0435\u043f\u043a\u043e \u043e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u043c\u043e\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0431\u044b\u043b\u0438 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0433\u043b\u0430\u0432\u0430\u0445. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b\u0430 \u0432\u0447\u0435\u0440\u043d\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0441\u043b\u043e\u0432, \u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438.<\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u2013 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"python\">Chapter\\s1.*?(\\bterm).*?Chapter\\s2<\/code><\/pre>\n<p>\u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0432, \u0435\u0441\u0442\u044c \u043b\u0438 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u0432\u0430 term \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 Chapter 1 \u0438 Chapter 2. \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 (\u043e\u043d \u0436\u0435 \u00ab\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u00bb) \\b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u043b\u043e\u0432\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u043c\u044b \u0438\u0449\u0435\u043c \u0441\u043b\u043e\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438 term, \u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043a\u0430\u043a\u043e\u0435-\u043b\u0438\u0431\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, terms).<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u0438\u043c\u0435\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0440\u043e\u043c\u0430\u043d\u0430 text \u0438 \u043c\u0430\u0441\u0441\u0438\u0432 vec \u0438\u0437 \u0434\u0432\u0443\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 (vec[0] &#8212; \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0436\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0433\u043b\u0430\u0432, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0439\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e, \u0438 vec[1] &#8212; \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0442\u0435\u0440\u043c), \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0442\u0435\u0440\u043c\u0430 vec[1] \u043f\u043e \u0433\u043b\u0430\u0432\u0430\u043c:<\/p>\n<pre><code class=\"python\">import re def check_chapters(vec):     global text     ch = list(map(int, vec[0].split(',')))      for i in range(1, 13):         match = re.search(r'Chapter\\s{}.*?(\\b{}).*?Chapter\\s{}'.format(i, vec[1], i + 1), text, flags=re.IGNORECASE) if i &lt; 12 else re.search(r'Chapter\\s{}.*?(\\b{})'.format(i, vec[1]), text, flags=re.IGNORECASE)         if match and not i in ch:             ch.append(i)      ch.sort()     return ch<\/code><\/pre>\n<p>\u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u0432 \u0446\u0438\u043a\u043b\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0432 \u0440\u043e\u043c\u0430\u043d\u0435 13-\u0439 \u0433\u043b\u0430\u0432\u044b, \u0430 \u0441\u043f\u0438\u0441\u043e\u043a ch \u2013 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u043c\u0435\u0440\u043e\u0432 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0433\u043b\u0430\u0432 \u043a \u0441\u0442\u0440\u043e\u043a\u0435 vec[0]. \u0418 \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0433\u043b\u0430\u0432 \u043f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u0437\u0430\u0431\u044b\u043b\u0438 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p>\u0417\u0430\u043a\u043e\u043d\u0447\u0438\u0432 \u044d\u0442\u0443 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443, \u0441\u043d\u043e\u0432\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c \u0438\u0437 Excel-\u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0417\u0430\u0442\u0435\u043c \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0438 \u0443\u0434\u0430\u043b\u0438\u043c \u0438\u0437 \u043d\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043a\u0430\u0440\u0435\u0442\u043a\u0438.<\/p>\n<pre><code class=\"python\">f = open('C:\/Fellowship Part 1.txt') text = f.read().replace('\\n', '').replace('\\r', '')<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430\u0448\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043a \u0434\u0432\u0443\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c \u0434\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c\u0430 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 Excel:<\/p>\n<pre><code class=\"python\">df['New chapters'] = df[['Chapters', 'Word']].apply(check_chapters, axis=1) df.to_excel('C:\/\u0412\u043b\u0430\u0441\u0442\u0435\u043b\u0438\u043d \u041a\u043e\u043b\u0435\u0446\/\u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0422\u043e\u043b\u043a\u0438\u0435\u043d\u0430 \u0441\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439.xlsx')<\/code><\/pre>\n<p>\u0425\u043e\u0442\u044f \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u043c\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e &#8212; \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f, \u043d\u0430 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0441 4-\u044f\u0434\u0435\u0440\u043d\u044b\u043c Intel i5-8265U \u0438 8 \u0413\u0431 \u041e\u0417\u0423 \u043c\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u044b\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d \u0432\u0441\u0435\u0433\u043e \u0437\u0430 874 \u0441\u0435\u043a\u0443\u043d\u0434\u044b (\u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0441\u0435\u043a\u0430\u043b\u043e\u0441\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 timeit.default_timer()).<\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u0431\u0430\u0437\u0430 \u0442\u0435\u0440\u043c\u043e\u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0442 \u044d\u0442\u0438\u043c \u043f\u0440\u0430\u0432\u044b\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u043c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/308\/333\/eb0\/308333eb004f7040a6fa12686d78d5cd.JPG\" alt=\"\u041f\u0440\u0435\u0434\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e \u043c\u043e\u0438\u043c \u0440\u0443\u0447\u043d\u044b\u043c \u0432\u044b\u043f\u0438\u0441\u043a\u0430\u043c, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d \u043f\u043e \u043d\u0435\u043c\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\" title=\"\u041f\u0440\u0435\u0434\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e \u043c\u043e\u0438\u043c \u0440\u0443\u0447\u043d\u044b\u043c \u0432\u044b\u043f\u0438\u0441\u043a\u0430\u043c, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d \u043f\u043e \u043d\u0435\u043c\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\" width=\"879\" height=\"425\"\/><figcaption>\u041f\u0440\u0435\u0434\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e \u043c\u043e\u0438\u043c \u0440\u0443\u0447\u043d\u044b\u043c \u0432\u044b\u043f\u0438\u0441\u043a\u0430\u043c, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d \u043f\u043e \u043d\u0435\u043c\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438<\/figcaption><\/figure>\n<h2>\u041e\u0442 Excel \u043a SQLite<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 SQLite, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 Android.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5be\/041\/953\/5be041953b3bcc466a17a95a0cc702bb.JPG\" alt=\"ER-\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\" title=\"ER-\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\" width=\"747\" height=\"288\"\/><figcaption>ER-\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/figcaption><\/figure>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u0440\u0438\u0432\u0430\u044f \u042d\u0431\u0431\u0438\u043d\u0433\u0430\u0443\u0437\u0430 \u2013 \u044d\u0442\u043e \u0433\u0440\u0430\u0444\u0438\u043a, \u0438, \u043a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0435\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u2013 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u044b\u0439. \u042d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 \u0411\u0414 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 repeat, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0439. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430 \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 1 \u0434\u0435\u043d\u044c, \u0432\u0442\u043e\u0440\u043e\u0435 \u0447\u0435\u0440\u0435\u0437 2, \u0442\u0440\u0435\u0442\u044c\u0435 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0434\u0435\u043b\u044e, \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0435 \u0447\u0435\u0440\u0435\u0437 \u0434\u0432\u0435 \u043d\u0435\u0434\u0435\u043b\u0438. \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c 1-\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435\u043c \u0441\u0430\u043c\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u0440\u043c\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043b\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 repeat \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"340\" width=\"340\">\n<p align=\"left\"><strong>id<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>interval<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"340\" width=\"340\">\n<p align=\"left\">2<\/p>\n<\/td>\n<td>\n<p align=\"left\">1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"340\" width=\"340\">\n<p align=\"left\">3<\/p>\n<\/td>\n<td>\n<p align=\"left\">2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"340\" width=\"340\">\n<p align=\"left\">4<\/p>\n<\/td>\n<td>\n<p align=\"left\">7<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"340\" width=\"340\">\n<p align=\"left\">5<\/p>\n<\/td>\n<td>\n<p align=\"left\">14<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 words \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u043d\u043e\u043c\u0435\u0440 \u0438 \u0434\u0430\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f. \u0422\u0430\u043a \u043a\u0430\u043a \u0432 SQLite \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u0442\u044b, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0435\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 entries \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0433\u043b\u0430\u0432\u044b. \u0412 \u043d\u0435\u0439 \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u0434\u043b\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0411\u0414 \u043a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Third_Normal_Form\" rel=\"noopener noreferrer nofollow\">\u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435<\/a>. \u0421\u0435\u0439\u0447\u0430\u0441 \u044f \u043f\u043e\u043a\u0430\u0436\u0443, \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Excel \u0432 SQLite, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442 sqlite3.<\/p>\n<pre><code class=\"python\">import sqlite3 as sl<\/code><\/pre>\n<p>\u041e\u0442\u043a\u0440\u043e\u0435\u043c \u0444\u0430\u0439\u043b \u0441 \u043f\u0443\u0441\u0442\u043e\u0439 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<pre><code class=\"python\">con = sl.connect(pathlib.Path('c:\/', 'LotR', 'lotrvoc.db'))<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u043b\u043e\u0432 \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u043e\u043c\u0435\u0440\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c\u0430 \u0441 \u0442\u043e\u0439 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u043e\u0439, \u0447\u0442\u043e ID \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u0435\u0434\u0438\u043d\u0438\u0446\u044b.<\/p>\n<pre><code class=\"python\">df = df.assign(idWord = df['Chapters'].index + 1) # \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f \u0441 1<\/code><\/pre>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0434\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c \u0432 \u0411\u0414: <\/p>\n<pre><code class=\"python\">df[['idWord','Word','Russian']].to_sql('words', con, if_exists = 'replace', index = False)<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b entries \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 explode() \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u0430 pandas. \u041e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0430 \u043f\u043e \u0447\u0438\u0441\u043b\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043f\u043e\u043b\u0435 chapters (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0442\u0430\u043c, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438, \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a \u043d\u0438\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e split()). \u0421\u043a\u0430\u0436\u0435\u043c, \u0437\u0430\u043f\u0438\u0441\u044c<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">3691<\/p>\n<\/td>\n<td>\n<p align=\"left\">1, 2, 3, 5<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>explode() \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442 \u0432<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">3691<\/p>\n<\/td>\n<td>\n<p align=\"left\">1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">3691<\/p>\n<\/td>\n<td>\n<p align=\"left\">2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">3691<\/p>\n<\/td>\n<td>\n<p align=\"left\">3<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">3691<\/p>\n<\/td>\n<td>\n<p align=\"left\">5<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041a\u043e\u0434:<\/p>\n<pre><code class=\"python\">df = df.assign(idChapter = df['Chapters'].str.split(', ')).explode('idChapter') df = df.astype({'idChapter': int}) df[['idWord','idChapter']].to_sql('entries', con, if_exists = 'replace', index = False)<\/code><\/pre>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438. \u0414\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b words \u044d\u0442\u043e \u043b\u0435\u0433\u043a\u043e:<\/p>\n<pre><code class=\"python\">con.execute('CREATE UNIQUE INDEX IF NOT EXISTS \"idWord\" ON \"words\" (\"idWord\");')<\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u043a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f entries &#8212; \u044d\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u0440\u044e\u043a \u0441 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c index \u0443 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u0442. \u041a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u0432\u0441\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u043d\u0435 \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 explode(). \u041f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u043a\u0430 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u043d\u0430 \u0441\u043e\u0441\u0442\u0430\u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/303\/333\/0f7\/3033330f779678976023bc5f00b76b0b.png\" alt=\"\u041e\u0431\u0449\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u0442\u0435\u0440\u043c\u043e\u0432 \u0438 \u0447\u0438\u0441\u043b\u043e \u043d\u043e\u0432\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u0434\u0432\u0435\u043d\u0430\u0434\u0446\u0430\u0442\u0438 \u0433\u043b\u0430\u0432\" title=\"\u041e\u0431\u0449\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u0442\u0435\u0440\u043c\u043e\u0432 \u0438 \u0447\u0438\u0441\u043b\u043e \u043d\u043e\u0432\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u0434\u0432\u0435\u043d\u0430\u0434\u0446\u0430\u0442\u0438 \u0433\u043b\u0430\u0432\" width=\"1653\" height=\"993\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/303\/333\/0f7\/3033330f779678976023bc5f00b76b0b.png\"\/><figcaption>\u041e\u0431\u0449\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u0442\u0435\u0440\u043c\u043e\u0432 \u0438 \u0447\u0438\u0441\u043b\u043e \u043d\u043e\u0432\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u0434\u0432\u0435\u043d\u0430\u0434\u0446\u0430\u0442\u0438 \u0433\u043b\u0430\u0432<\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0441\u0438\u043d\u0438\u0435 \u0441\u0442\u043e\u043b\u0431\u0438\u043a\u0438, \u043b\u0438\u0448\u044c \u0434\u043b\u044f \u043e\u0441\u0432\u043e\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445-\u0442\u0440\u0435\u0445 \u0433\u043b\u0430\u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0440\u044b\u0432\u043e\u043a. \u0417\u0430\u0442\u0435\u043c \u0447\u0438\u0441\u043b\u043e \u0438\u0437\u0443\u0447\u0430\u0435\u043c\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0439\u043e\u043d\u0435 \u0434\u0432\u0443\u0445\u0441\u043e\u0442, \u0430 \u0434\u043b\u044f \u0433\u043b\u0430\u0432\u044b 10 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0432\u0441\u0435\u0433\u043e 103. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0430\u0434\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0445\u043e\u0440\u043e\u0448\u0435\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u043d\u043e\u043c \u0437\u0430\u043f\u0430\u0441\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u0442\u0435\u0440\u043c\u044b \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f.<\/p>\n<h2>Android-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043c\u043e\u0433\u0430\u0442\u044c \u0432 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u0438 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Android Studio \u0438 Java. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 reword.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0445\u0432\u0430\u0442\u0438\u0442 \u043e\u0434\u043d\u043e\u0439 activity, \u0433\u0434\u0435 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u044f\u0442\u0441\u044f \u0442\u0435\u0440\u043c, \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0438 \u0434\u0432\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u2013 \u00ab\u0417\u043d\u0430\u044e\u00bb \u0438 \u00ab\u041d\u0435 \u0437\u043d\u0430\u044e\u00bb. \u0417\u0434\u0435\u0441\u044c \u0436\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0440\u0435\u0436\u0438\u043c\u0430 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f\/\u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u0442\u0435\u0440\u043c\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u0434 activity_mail.xml \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?> &lt;androidx.constraintlayout.widget.ConstraintLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"     xmlns:app=\"http:\/\/schemas.android.com\/apk\/res-auto\"     xmlns:tools=\"http:\/\/schemas.android.com\/tools\"     android:layout_width=\"match_parent\"     android:layout_height=\"match_parent\"     android:background=\"#d1d1d1\"     android:orientation=\"vertical\">      &lt;TextView         android:id=\"@+id\/tvWord\"         android:layout_width=\"0dp\"         android:layout_height=\"191dp\"         android:layout_marginStart=\"38dp\"         android:layout_marginTop=\"61dp\"         android:layout_marginEnd=\"38dp\"         android:layout_marginBottom=\"61dp\"         android:text=\"TextView\"         android:textColor=\"#09627C\"         android:textSize=\"40dp\"         app:layout_constraintBottom_toTopOf=\"@+id\/tvTranslation\"         app:layout_constraintEnd_toEndOf=\"parent\"         app:layout_constraintHorizontal_bias=\"0.0\"         app:layout_constraintStart_toStartOf=\"parent\"         app:layout_constraintTop_toTopOf=\"parent\"         app:layout_constraintVertical_bias=\"0.0\" \/>      &lt;TextView         android:id=\"@+id\/tvTranslation\"         android:layout_width=\"0dp\"         android:layout_height=\"182dp\"         android:layout_marginStart=\"38dp\"         android:layout_marginEnd=\"38dp\"         android:layout_marginBottom=\"240dp\"         android:onClick=\"onSuggestionClick\"         android:text=\"TextView\"         android:textColor=\"#635C5C\"         android:textSize=\"36dp\"         android:textStyle=\"italic\"         app:layout_constraintBottom_toBottomOf=\"parent\"         app:layout_constraintEnd_toEndOf=\"parent\"         app:layout_constraintHorizontal_bias=\"0.0\"         app:layout_constraintStart_toStartOf=\"parent\" \/>      &lt;Button         android:id=\"@+id\/btKnow\"         android:layout_width=\"wrap_content\"         android:layout_height=\"wrap_content\"         android:layout_marginStart=\"44dp\"         android:layout_marginBottom=\"68dp\"         android:onClick=\"onKnowClick\"         android:text=\"\u0423\u0436\u0435 \u0437\u043d\u0430\u044e\"         app:layout_constraintBottom_toBottomOf=\"parent\"         app:layout_constraintStart_toStartOf=\"parent\"         app:layout_constraintTop_toBottomOf=\"@+id\/tvTranslation\"         app:layout_constraintVertical_bias=\"0.967\" \/>      &lt;Button         android:id=\"@+id\/btWillLearn\"         android:layout_width=\"wrap_content\"         android:layout_height=\"wrap_content\"         android:layout_marginEnd=\"56dp\"         android:layout_marginBottom=\"72dp\"         android:onClick=\"onWillLearnClick\"         android:text=\"\u0423\u0447\u0438\u0442\u044c\"         app:layout_constraintBottom_toBottomOf=\"parent\"         app:layout_constraintEnd_toEndOf=\"parent\" \/>      &lt;RadioGroup         android:id=\"@+id\/rgLearnRepeat\"         android:layout_width=\"0dp\"         android:layout_height=\"wrap_content\"         android:orientation=\"horizontal\"         app:layout_constraintEnd_toEndOf=\"parent\"         app:layout_constraintHorizontal_bias=\"0.0\"         app:layout_constraintStart_toStartOf=\"parent\"         app:layout_constraintTop_toTopOf=\"parent\">          &lt;RadioButton             android:id=\"@+id\/rbLearn\"             android:layout_width=\"match_parent\"             android:layout_height=\"wrap_content\"             android:layout_marginLeft=\"24dp\"             android:layout_weight=\"1\"             android:checked=\"true\"             android:text=\"\u0423\u0447\u0438\u0442\u044c\"             android:textColorLink=\"#00BCD4\" \/>          &lt;RadioButton             android:id=\"@+id\/rbRepeat\"             android:text=\"\u041f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c\"             android:layout_width=\"match_parent\"             android:layout_height=\"wrap_content\"             android:layout_marginLeft=\"24dp\"             android:layout_weight=\"1\" \/>     &lt;\/RadioGroup> &lt;\/androidx.constraintlayout.widget.ConstraintLayout><\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043a\u043b\u0430\u0441\u0441\u044b \u0434\u043b\u044f \u0441\u043b\u043e\u0432\u0430 \u0438 \u0433\u043b\u0430\u0432\u044b, \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<p>\u0412\u043e\u0442 \u043a\u0430\u043a \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u043b\u0430\u0441\u0441 Word:<\/p>\n<pre><code class=\"java\">public class Word {     private int id;     private String word;     private String translation;     private boolean isKnow;     private boolean isFirstShow;     private int remember;     private int repnum; }<\/code><\/pre>\n<p>Remember \u2013 \u044d\u0442\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0449\u0438\u0439, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b \u0441\u043b\u043e\u0432\u043e \u043f\u0440\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438. \u041b\u0438\u0447\u043d\u043e \u043c\u043d\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0430 \u0434\u043b\u044f \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u0431\u0443\u043b\u0435\u0432\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \u0430 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e.<\/p>\n<p>\u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440, \u0433\u0435\u0442\u0442\u0435\u0440\u044b \u0438 \u0441\u0435\u0442\u0442\u0435\u0440\u044b \u0438 \u0432\u043d\u0435\u0441\u0435\u043c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043b\u043e\u0432\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u043c \u0435\u0433\u043e \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u043d\u0435\u0438\u0437\u0443\u0447\u0435\u043d\u043d\u044b\u043c (isKnow), \u0430 \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a remember \u043e\u0431\u043d\u0443\u043b\u0438\u043c.<\/p>\n<pre><code class=\"java\">public Word(int id, String word, String translation, int repnum, boolean isFirstShow) {     this.id = id;     this.word = word;     this.translation = translation;     this.isKnow = false;     this.isFirstShow = isFirstShow;     this.remember = 0;     this.repnum = repnum; }<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u043a\u0430\u0437\u0430 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0435\u0442\u043e\u0434 setFirstShow(), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u0444\u0438\u043a\u0441\u0438\u0440\u0443\u0435\u0442 \u0444\u0430\u043a\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0432\u0448\u0435\u0433\u043e\u0441\u044f \u043f\u043e\u043a\u0430\u0437\u0430 \u0442\u0435\u0440\u043c\u0430:<\/p>\n<pre><code class=\"java\">public void setFirstShow() {     this.isFirstShow = false; }<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u043d\u0430 \u0435\u0434\u0438\u043d\u0438\u0446\u0443:<\/p>\n<pre><code class=\"java\">public void incRemember() {     this.remember ++; }<\/code><\/pre>\n<p>\u0411\u0443\u0434\u0435\u043c \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0442\u0435\u0440\u043c \u0438\u0437\u0443\u0447\u0435\u043d\u043d\u044b\u043c, \u043b\u0438\u0431\u043e \u0435\u0441\u043b\u0438 \u043e\u043d \u0431\u044b\u043b \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u0440\u0430\u043d\u0435\u0435, \u043b\u0438\u0431\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b \u0435\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u0440\u0430\u0437. \u0415\u0441\u043b\u0438 \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u0440\u0435\u0432\u044b\u0441\u0438\u0442 \u043b\u0438\u043c\u0438\u0442, \u0442\u043e \u0442\u0435\u043c \u043b\u0443\u0447\u0448\u0435.<\/p>\n<pre><code class=\"java\">public boolean learned() {     if (this.isKnow || this.remember > 3)         return true;     return false; }<\/code><\/pre>\n<p>\u0411\u0440\u0440, \u0445\u0430\u0440\u0434\u043a\u043e\u0434\u0438\u043d\u0433! \u041d\u0438\u043a\u043e\u0433\u0434\u0430 \u0442\u0430\u043a \u043d\u0435 \u0434\u0435\u043b\u0430\u0439\u0442\u0435!)<\/p>\n<p>\u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0444\u0430\u0439\u043b\u0430 Chapter.java, \u0442\u043e \u043e\u0434\u043d\u043e\u0438\u043c\u0435\u043d\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 \u0438\u043c\u0435\u0435\u0442 \u043c\u0435\u043d\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u0443\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443:<\/p>\n<pre><code class=\"java\">public class Chapter {     private int id;     private String name;     private int booknumber;     private int volumenumber; }<\/code><\/pre>\n<p>\u0418\u0437 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432 \u0437\u0434\u0435\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442 \u043d\u043e\u043c\u0435\u0440\u0430 \u0433\u043b\u0430\u0432\u044b \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d\u0438\u044f \u043d\u0435\u0438\u0437\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u0438\u0437 \u0433\u043b\u0430\u0432\u044b \u0442\u0435\u043a\u0443\u0449\u0435\u0439.<\/p>\n<pre><code class=\"java\">public void incId() {     this.id ++; }<\/code><\/pre>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043a\u043b\u0430\u0441\u0441\u0435 DatabaseHelper.<\/p>\n<pre><code class=\"java\">public class DatabaseHelper extends SQLiteOpenHelper {     public static final String DBNAME;     public static final String DBLOCATION;     private Context mContext;     private SQLiteDatabase mDatabase;     private int maxRepnum; }<\/code><\/pre>\n<p>\u042d\u0442\u0438 \u043f\u043e\u043b\u044f \u0445\u0440\u0430\u043d\u044f\u0442 \u0438\u043c\u044f \u0438 \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0411\u0414, \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u043e\u0431\u044a\u0435\u043a\u0442 \u0411\u0414 SQLite \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u0438\u0437\u043d\u0430\u0442\u044c \u0442\u0435\u0440\u043c \u0438\u0437\u0443\u0447\u0435\u043d\u043d\u044b\u043c. \u0417\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u044f\u043c\u043e \u0437\u0434\u0435\u0441\u044c \u0438\u043b\u0438 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440\u0435. \u0418\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0441\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f mDatabase, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c \u043c\u0435\u0442\u043e\u0434\u0435 openDatabase(). \u0415\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u0430, \u043a\u0430\u043a \u0438 \u043f\u0430\u0440\u043d\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 closeDatabase().<\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0411\u0414 \u0443\u043b\u043e\u0436\u0438\u043b\u0430\u0441\u044c \u0432 \u0442\u0440\u0438 \u043c\u0435\u0442\u043e\u0434\u0430.<\/p>\n<p>\u041c\u0435\u0442\u043e\u0434 getCurrentChapter() \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442, \u043a\u0430\u043a\u0443\u044e \u0433\u043b\u0430\u0432\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c. \u0418\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0447\u0442\u043e \u0447\u0442\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u0445\u0440\u043e\u043d\u043e\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435, \u043d\u0430\u043f\u0438\u0448\u0435\u043c SQL \u0437\u0430\u043f\u0440\u043e\u0441 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0435\u043f\u0440\u043e\u0447\u0438\u0442\u0430\u043d\u043d\u043e\u0439 \u0433\u043b\u0430\u0432\u044b \u0441 \u043d\u0430\u0438\u043c\u0435\u043d\u044c\u0448\u0438\u043c ID:<\/p>\n<pre><code class=\"java\">public Chapter getCurrentChapter() {     openDatabase();     String query = \"SELECT id, name, booknumber, volumenumber FROM chapters WHERE isread = 0 ORDER BY id LIMIT 1\";     Cursor cursor = mDatabase.rawQuery(query, new String[] {});     cursor.moveToFirst();     Chapter ch = new Chapter(0, \"\", 0, 0);     if (!cursor.isAfterLast()) {         ch.setId(cursor.getInt(0));         ch.setName(cursor.getString(1));         ch.setBooknumber(cursor.getInt(2));         ch.setVolumenumber(cursor.getInt(3));     }     cursor.close();     closeDatabase();     return ch; }<\/code><\/pre>\n<p>\u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0438\u0437\u0443\u0447\u0430\u0435\u043c\u044b\u0445\/\u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0435\u043c\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432. \u0417\u0434\u0435\u0441\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0434\u0432\u0430 SQL-\u0437\u0430\u043f\u0440\u043e\u0441\u0430.<\/p>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u043e\u0432\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u2013 \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u044b \u0438 \u0447\u0438\u0441\u043b\u043e \u0442\u0435\u0440\u043c\u043e\u0432, \u0438\u0437\u0443\u0447\u0430\u0435\u043c\u044b\u0445 \u0437\u0430 \u043e\u0434\u0438\u043d \u0441\u0435\u0430\u043d\u0441):<\/p>\n<pre><code class=\"sql\">SELECT idWord, Word, Russian FROM words WHERE repnum = 0 and idWord IN (SELECT idWord FROM entries WHERE idChapter = ?) ORDER BY RANDOM() LIMIT ?<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043b\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f (\u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0435 \u0436\u0435 + \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0439, \u043f\u043e\u0441\u043b\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0442\u0435\u0440\u043c \u0441\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u043d\u044b\u043c):<\/p>\n<pre><code class=\"sql\">SELECT idWord, Word, Russian, repnum, ((strftime('%s', 'now') - strftime('%s', repdate)) \/ 86400.0) AS days FROM words WHERE idWord IN (SELECT idWord FROM entries WHERE idChapter = ?)         AND repnum > 0 AND repnum &lt; ? AND days > (SELECT interval FROM repeat WHERE id = repnum + 1) ORDER BY days DESC LIMIT ?<\/code><\/pre>\n<p>\u0422\u0430\u043a \u043a\u0430\u043a \u043d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0441\u043b\u043e \u0434\u043d\u0435\u0439 (\u0430 \u043d\u0435 \u0447\u0430\u0441\u043e\u0432 \u0438\u043b\u0438 \u043c\u0438\u043d\u0443\u0442), \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0445 \u0441 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f, \u0442\u043e \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435\u043c \u0431\u044b\u043b\u0430 \u0431\u044b \u0444\u0443\u043d\u043a\u0446\u0438\u044f julianday() \u0438\u0437 SQLite. \u041e\u0434\u043d\u0430\u043a\u043e \u043e\u043d\u0430 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438 Java, \u0442\u043e \u0435\u0441\u0442\u044c \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0438 \u0441\u0442\u0430\u0440\u044b\u043c\u0438 \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430\u043c\u0438. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0432\u044b\u0447\u0438\u0442\u0430\u0442\u044c \u043d\u0435 \u0434\u043d\u0438, \u0430 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u044b\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0430\u0442, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 strftime() \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c (\u00ab\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0435\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f\u00bb) &#171;%s&#187; \u2013 \u0447\u0438\u0441\u043b\u043e \u0441\u0435\u043a\u0443\u043d\u0434, \u043f\u0440\u043e\u0448\u0435\u0434\u0448\u0438\u0445 \u0441 \u043d\u0430\u0447\u0430\u043b\u0430 \u044d\u043f\u043e\u0445\u0438 Unix, &#8212; \u0430 \u0437\u0430\u0442\u0435\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u0442\u044c \u0441\u0435\u043a\u0443\u043d\u0434\u044b \u0432 \u0434\u043d\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0435\u043b\u0435\u043d\u0438\u044f \u043d\u0430 60*60*24.<\/p>\n<p>\u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0442\u0435\u0440\u043c\u044b, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0443\u0436\u0435 \u0431\u044b\u043b\u043e \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 (repnum > 0), \u043e\u0434\u043d\u0430\u043a\u043e \u043d\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0439 (repnum &lt; maxRepnum) \u0438, \u0433\u043b\u0430\u0432\u043d\u043e\u0435, \u0438\u0441\u0442\u0435\u043a \u043b\u0438\u043c\u0438\u0442 \u0434\u043b\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f (repnum + 1). \u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u044b\u0434\u0430\u0442\u044c \u0442\u0435\u0440\u043c\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0436\u0434\u0443\u0442 \u0441\u0432\u043e\u0435\u0439 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0434\u043e\u043b\u044c\u0448\u0435 \u0432\u0441\u0435\u0445 (ORDER BY days DESC). \u041a\u0440\u0438\u0432\u0430\u044f \u042d\u0431\u0431\u0438\u043d\u0433\u0430\u0443\u0437\u0430 \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438.<\/p>\n<p>\u041f\u043e\u043b\u043d\u044b\u0439 \u043a\u043e\u0434 \u043c\u0435\u0442\u043e\u0434\u0430 getListWord() \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"java\">public List&lt;Word> getListWord(int idChapter, int wordsInDay, boolean isRepeat) {     Word w = null;     List&lt;Word> wordList = new ArrayList&lt;>();     openDatabase();     String query = \"\";     Cursor cursor;     if (!isRepeat) {         query = \"SELECT idWord, Word, Russian\\n\" +                 \"FROM words\\n\" +                 \"WHERE repnum = 0 and idWord IN (SELECT idWord FROM entries WHERE idChapter = ?)\\n\" +                 \"ORDER BY RANDOM()\\n\" +                 \"LIMIT ?\";         cursor = mDatabase.rawQuery(query, new String[]{String.valueOf(idChapter), String.valueOf(wordsInDay)});     }     else {         query = \"SELECT idWord, Word, Russian, repnum, ((strftime('%s', 'now') - strftime('%s', repdate)) \/ 86400.0) AS days \\n\" +                 \"FROM words\\n\" +                 \"WHERE idWord IN (SELECT idWord FROM entries WHERE idChapter = ?)\\n\" +                 \"AND repnum > 0 AND repnum &lt; ? AND days > (SELECT interval FROM repeat WHERE id = repnum + 1)\\n\" +                 \"ORDER BY days DESC\\n\" +                 \"LIMIT ?\";         cursor = mDatabase.rawQuery(query, new String[]{String.valueOf(idChapter),                 String.valueOf(maxRepnum), String.valueOf(wordsInDay)});     }     if (cursor.moveToFirst()) {         int repnum = 0;         boolean isFirstShow = (isRepeat == false);         while (!cursor.isAfterLast()) {             if (isRepeat)                 repnum = cursor.getInt(3);              w = new Word(cursor.getInt(0), cursor.getString(1),                     cursor.getString(2), repnum, isFirstShow);             wordList.add(w);             cursor.moveToNext();         }     }     cursor.close();     closeDatabase();     return wordList; }<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u043c\u0435\u0442\u043e\u0434 saveListWord() \u0441\u043b\u0443\u0436\u0438\u0442 \u0434\u043b\u044f \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e\/\u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0442\u0435\u0440\u043c\u043e\u0432 \u0432 \u0411\u0414. \u041f\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b\u043c \u0432\u044b\u0448\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0434\u0430\u0442\u0443 \u0432 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.<\/p>\n<pre><code class=\"java\">        openDatabase();         ContentValues values = new ContentValues();          SimpleDateFormat formatter= new SimpleDateFormat(\"yyyy-MM-dd\");         Date date = new Date(System.currentTimeMillis());         values.put(\"repdate\", formatter.format(date));<\/code><\/pre>\n<p>\u041e\u0447\u0435\u043d\u044c \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0430\u043b\u0435\u0435 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435<\/p>\n<pre><code class=\"sql\">UPDATE words SET repnum = repnum + 1 WHERE idWord IN (\u2026)<\/code><\/pre>\n<p>\u0438 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u043e\u0434\u043d\u0438\u043c \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u043c. \u041d\u043e \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0437\u0430\u043f\u0440\u043e\u0441 \u0441 UPDATE \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c \u0432 \u0441\u044b\u0440\u043e\u043c \u0432\u0438\u0434\u0435, \u0442\u043e \u0435\u0441\u0442\u044c \u0432 \u043c\u0435\u0442\u043e\u0434\u044b execSQL() \u0438 rawQuery() \u043a\u043b\u0430\u0441\u0441\u0430 SQLiteDatabase. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438, \u043c\u0435\u0442\u043e\u0434 execSQL() \u043d\u0435 \u043f\u0440\u0435\u0434\u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438\/\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f, \u0430 rawQuery() &#8212; \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 SELECT. \u0412 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u0436\u0435 \u043c\u0435\u0442\u043e\u0434 update() \u0442\u0430\u043a \u0437\u0430\u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u0432\u0441\u0442\u0430\u0432\u0438\u0448\u044c \u0438\u043d\u043a\u0440\u0435\u043c\u0435\u043d\u0442 repnum \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043f\u043e\u043b\u0435\u0439. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u043f\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0443 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0430 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430:<\/p>\n<pre><code class=\"java\">        for (int i = 0; i &lt; wordList.size(); i ++) {             Word w = wordList.get(i);             if (w.getIsKnow())                 values.put(\"repnum\", maxRepnum);             else if (w.getRemember() > 3)                 values.put(\"repnum\", w.getRepnum() + 1);             mDatabase.update(\"Words\", values, \"idWord = ?\", new String[]{String.valueOf(w.getId())});         }<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u0442\u0435\u0440\u043c \u0440\u0430\u043d\u0435\u0435 \u0431\u044b\u043b \u0438\u0437\u0432\u0435\u0441\u0442\u0435\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0438 \u043d\u0435 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438, \u0442\u043e \u0435\u043c\u0443 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0432\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u043b\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0439. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u043d\u043e\u043c\u0435\u0440 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f, \u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0442\u0435\u0445 \u0442\u0435\u0440\u043c\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u043b \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u0440\u0430\u0437 (\u0441\u043d\u043e\u0432\u0430 \u0445\u0430\u0440\u0434\u043a\u043e\u0434\u0438\u043d\u0433!). \u0415\u0441\u043b\u0438 \u043a\u0430\u043a-\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c, \u0447\u0442\u043e \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u0438\u043b\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435 \u044d\u0442\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430, \u0442\u043e \u0442\u0435\u043c \u043b\u0443\u0447\u0448\u0435: \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u2013 \u043c\u0430\u0442\u044c \u0443\u0447\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0438\u0437\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0441\u043b\u043e\u0432. \u0414\u0443\u043c\u0430\u0435\u0442\u0435, \u0447\u0442\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c nlearned \u0434\u043b\u044f \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u044b \u043d\u0430 wordsInDay? \u041d\u0438\u0447\u0435\u0433\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e. \u0412\u0430\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0433\u043b\u0430\u0432, \u0442.\u043a. \u0441\u043b\u043e\u0432\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0442\u0441\u044f \u0432 \u0440\u0430\u0437\u043d\u044b\u0445 \u0433\u043b\u0430\u0432\u0430\u0445. \u041d\u043e \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 update() \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0440\u0435\u0448\u0438\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0442\u043e\u0436\u0435 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043f\u043e\u0434\u0441\u0447\u0435\u0442\u044b \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 SQL, \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u0445\u044d\u0448-\u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0430 \u0435\u0435 \u0437\u0430\u0442\u0435\u043c \u043f\u043e\u0441\u0442\u0440\u043e\u0447\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0432 \u0411\u0414.<\/p>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u0434\u0441\u0447\u0435\u0442 \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0442\u0435\u043c \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0442\u0440\u0435\u0445 \u0437\u043d\u0430\u0447\u0438\u043c\u044b\u0445 \u0442\u0430\u0431\u043b\u0438\u0446 \u2013 words, entries \u0438 chapters:<\/p>\n<pre><code class=\"sql\">SELECT id, COUNT(entries.idWord) FROM chapters JOIN entries ON chapters.id = entries.idChapter JOIN words ON words.idWord = entries.idWord WHERE words.Repnum >= ? GROUP BY entries.idChapter<\/code><\/pre>\n<p>\u0417\u0430\u043f\u0438\u0441\u0430\u0432 \u044d\u0442\u043e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u0432 \u0441\u0442\u0440\u043e\u043a\u043e\u0432\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e query, \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c:<\/p>\n<pre><code class=\"sql\">        Cursor cursor = mDatabase.rawQuery(query, new String[] {String.valueOf(maxRepnum)});         if (cursor.moveToFirst()) {             Hashtable&lt;Integer, Integer> hashtable = new Hashtable&lt;>();             while (!cursor.isAfterLast()) {                 hashtable.put(cursor.getInt(0), cursor.getInt(1));                 cursor.moveToNext();             }              values.clear();             Set&lt;Integer> keySet = hashtable.keySet();             for (Integer key : keySet) {                 values.put(\"nlearned\", String.valueOf(hashtable.get(key)));                 mDatabase.update(\"chapters\", values, \"id = ?\", new String[]{String.valueOf(key)});             }         }         cursor.close();<\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 isread, \u0435\u0441\u043b\u0438 \u043a\u0430\u043a\u0430\u044f-\u0442\u043e \u0433\u043b\u0430\u0432\u0430 \u043e\u043a\u0430\u0437\u0430\u043b\u0430\u0441\u044c \u0438\u0437\u0443\u0447\u0435\u043d\u043d\u043e\u0439. \u0415\u0441\u043b\u0438 \u0433\u0434\u0435-\u0442\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0435\u0440\u043c\u043e\u0432, \u0447\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0433\u043b\u0430\u0432\u0430, &#8212; \u043d\u0438\u0447\u0435\u0433\u043e \u0441\u0442\u0440\u0430\u0448\u043d\u043e\u0433\u043e, \u043f\u0440\u0438\u0433\u043e\u0434\u044f\u0442\u0441\u044f)<\/p>\n<pre><code class=\"java\">        values.clear();         values.put(\"isread\", \"1\");         mDatabase.update(\"chapters\", values, \"nlearned >= nwords\", new String[]{});<\/code><\/pre>\n<p>\u0418 \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0411\u0414 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430 closeDatabase().<\/p>\n<p>\u0412 \u043a\u043b\u0430\u0441\u0441\u0435 MainActivity, \u043f\u043e\u043c\u0438\u043c\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u043f\u043e\u043b\u0435\u0439 \u0434\u043b\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f, \u043d\u0430\u043c \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e:<\/p>\n<pre><code class=\"java\">private Chapter curChapter; private int wordsInDay; private int curWordPos; private boolean isRepeat;<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u0431\u0443\u0434\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u0442\u044c, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435, \u0447\u0438\u0441\u043b\u043e \u0441\u043b\u043e\u0432, \u0438\u0437\u0443\u0447\u0430\u0435\u043c\u044b\u0445 \u0437\u0430 1 \u0434\u0435\u043d\u044c (\u0438\u043b\u0438, \u0442\u043e\u0447\u043d\u0435\u0435, \u0437\u0430 1 \u0441\u0435\u0430\u043d\u0441), \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u043f\u043e\u0437\u0438\u0446\u0438\u044e \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0438\u0437\u0443\u0447\u0430\u0435\u043c\u044b\u0445 \u0441\u043b\u043e\u0432 \u0438 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u0440\u0435\u0436\u0438\u043c\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0412 \u043c\u0435\u0442\u043e\u0434\u0435 onCreate() \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u044b View \u0441 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 activity, \u0437\u0430\u0434\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 wordsInDay (\u0441\u043d\u043e\u0432\u0430 \u0445\u0430\u0440\u0434\u043a\u043e\u0434\u0438\u043d\u0433!) \u0438 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441\u043b\u0443\u0448\u0430\u0442\u0435\u043b\u044f OnCheckedChangeListener \u0434\u043b\u044f \u0440\u0430\u0434\u0438\u043e\u043a\u043d\u043e\u043f\u043e\u043a. \u041f\u0440\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0438 \u0440\u0435\u0436\u0438\u043c\u0430 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f\/\u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u043d\u0430\u0434\u043e \u0431\u0443\u0434\u0435\u0442 \u0441\u043c\u0435\u043d\u0438\u0442\u044c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440\u0430 isRepeat \u0438 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u0438\u0437 \u0411\u0414 \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u0435\u0440\u043c\u043e\u0432.<\/p>\n<pre><code class=\"java\">        super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);         tvWord = (TextView)findViewById(R.id.tvWord);         tvTranslation = (TextView)findViewById(R.id.tvTranslation);         btKnow = (Button)findViewById(R.id.btKnow);         btWillLearn = (Button)findViewById(R.id.btWillLearn);         wordsInDay = 10; \/\/ \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u043b\u043e\u0432 \u0438\u0437\u0443\u0447\u0438\u043c \u0437\u0430 1 \u0441\u0435\u0430\u043d\u0441          RadioGroup rgLearnRepeat = (RadioGroup)findViewById(R.id.rgLearnRepeat);         rgLearnRepeat.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()         {             public void onCheckedChanged(RadioGroup group, int checkedId) {                 if (checkedId == R.id.rbRepeat)                     isRepeat = true;                 else                     isRepeat = false;                 Log.w(\"isRepeat\", \"isRepeat = \" + isRepeat);                 getListWord();             }         });<\/code><\/pre>\n<p>\u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445. \u0415\u0441\u043b\u0438 \u0411\u0414 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435, \u0442\u043e \u043a\u043e\u043f\u0438\u0440\u0443\u0435\u043c \u0435\u0435. \u041d\u0435\u043f\u043b\u043e\u0445\u043e\u0439 \u0443\u0440\u043e\u043a \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 <a href=\"https:\/\/www.youtube.com\/watch?v=aLnVhgYdVd8\" rel=\"noopener noreferrer nofollow\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>\u0417\u0430\u0442\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0433\u043b\u0430\u0432\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u0435\u0442\u043e\u0434\u0430, \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0430\u043d\u0435\u0435:<\/p>\n<pre><code class=\"java\">        curChapter = mDBHelper.getCurrentChapter();         if (curChapter.getId() == 0) {             Toast.makeText(this, \"\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u0433\u043b\u0430\u0432\u0443 \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f\", Toast.LENGTH_SHORT).show();             return;         }<\/code><\/pre>\n<p>\u0418 \u0441\u043f\u0438\u0441\u043e\u043a \u0441\u043b\u043e\u0432 \u0434\u043b\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0438\u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f:<\/p>\n<pre><code class=\"java\">        getListWord();<\/code><\/pre>\n<p>\u041c\u0435\u0442\u043e\u0434 getListWord() \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043e\u0434\u043d\u043e\u0438\u043c\u0435\u043d\u043d\u044b\u0439 \u043c\u0435\u0442\u043e\u0434 \u0438\u0437 \u043a\u043b\u0430\u0441\u0441\u0430 DatabaseHelper, \u043d\u043e \u0435\u0449\u0435 \u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u043f\u043e \u0433\u043b\u0430\u0432\u0430\u043c \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u2013 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435. \u0415\u0441\u043b\u0438 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u043d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u0439\u0442\u0438 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0442\u0435\u0440\u043c\u043e\u0432, \u0434\u0435\u043b\u0430\u0435\u043c \u0432\u044b\u0432\u043e\u0434, \u0447\u0442\u043e \u043f\u043e\u043a\u0430 \u043d\u0438 \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0430 \u043d\u0435 \u0438\u0441\u0442\u0435\u043a \u043b\u0438\u043c\u0438\u0442 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f, \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432 \u0440\u0435\u0436\u0438\u043c \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u0436\u0435 \u0438 \u0442\u0430\u043c \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438\u0441\u044c \u0442\u0435\u0440\u043c\u044b, \u0442\u043e \u0440\u0430\u043f\u043e\u0440\u0442\u0443\u0435\u043c \u043e\u0431 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0433\u043b\u0430\u0432\u044b. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0441 \u0447\u0438\u0441\u0442\u043e\u0439 \u0441\u043e\u0432\u0435\u0441\u0442\u044c\u044e \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c \u0447\u0438\u0442\u0430\u0442\u044c.<\/p>\n<pre><code class=\"java\">public void getListWord() {     mWordList = mDBHelper.getListWord(curChapter.getId(), wordsInDay, isRepeat);     if (mWordList.size() == 0) {         if (isRepeat) {             Toast.makeText(this, \"\u0412\u0441\u0435 \u0441\u043b\u043e\u0432\u0430 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u044b!\", Toast.LENGTH_LONG).show();             RadioGroup rgLearnRepeat = (RadioGroup) findViewById(R.id.rgLearnRepeat);             rgLearnRepeat.check(R.id.rbLearn);         } else {             while (mWordList.size() == 0) {                 Toast.makeText(this, \"\u0413\u043b\u0430\u0432\u0430 \" + curChapter.getId() + \" \u0438\u0437\u0443\u0447\u0435\u043d\u0430\", Toast.LENGTH_LONG).show();                 curChapter.incId();                 mWordList = mDBHelper.getListWord(curChapter.getId(), wordsInDay, isRepeat);             }         }     }     if (!isRepeat &amp;&amp; mWordList.size() == 0)         Toast.makeText(this, \"\u0412\u0441\u0435 \u0433\u043b\u0430\u0432\u044b \u0438\u0437\u0443\u0447\u0435\u043d\u044b\", Toast.LENGTH_LONG).show();     else {         curWordPos = 0;         showNextWord();     } }<\/code><\/pre>\n<p>\u041d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0440\u0435\u0436\u0438\u043c\u0430, \u0435\u0441\u043b\u0438 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0442\u0435\u0440\u043c\u043e\u0432, \u043e\u0431\u043d\u0443\u043b\u044f\u0435\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a curWordPos, \u0447\u0442\u043e\u0431\u044b \u043e\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u043b \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u0441\u043f\u0438\u0441\u043a\u0430, \u0438 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u043c \u043c\u0435\u0442\u043e\u0434 showNextWord().<\/p>\n<p>\u0417\u0434\u0435\u0441\u044c \u043c\u043d\u0435 \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0432\u0438\u0436\u0435\u043d\u0438\u044f \u043f\u043e \u0441\u043f\u0438\u0441\u043a\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0438\u0441\u043a \u0432 \u043d\u0435\u043c \u043d\u0435\u0438\u0437\u0443\u0447\u0435\u043d\u043d\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0441 0, \u0430 \u0441 curWordPos, \u0434\u043e\u0445\u043e\u0434\u0438\u0442 \u0434\u043e \u043a\u043e\u043d\u0446\u0430 \u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430.<\/p>\n<pre><code class=\"java\">        boolean isFound = false;         for (int i = curWordPos + 1; i &lt; mWordList.size(); i ++)             if (mWordList.get(i).learned() == false) {                 curWordPos = i;                 isFound = true;                 break;             }         if (!isFound) {             for (int i = 0; i &lt;= curWordPos; i ++)                 if (mWordList.get(i).learned() == false) {                     curWordPos = i;                     isFound = true;                     break;                 }         }<\/code><\/pre>\n<p>\u041d\u0430\u0439\u0434\u044f \u043d\u0435\u0438\u0437\u0443\u0447\u0435\u043d\u043d\u044b\u0439 \u0442\u0435\u0440\u043c, \u0432\u044b\u0432\u043e\u0434\u0438\u043c \u0435\u0433\u043e \u0432 activity \u0438 \u0437\u0430\u0434\u0430\u0435\u043c \u043d\u0430\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0430\u0445: \u0434\u043b\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u043f\u043e\u043a\u0430\u0437\u0430 \u2013 \u00ab\u0423\u0436\u0435 \u0437\u043d\u0430\u044e\u00bb \u0438 \u00ab\u0411\u0443\u0434\u0443 \u0443\u0447\u0438\u0442\u044c\u00bb, \u0434\u043b\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u2013 \u00ab\u0412\u0441\u043f\u043e\u043c\u043d\u0438\u043b\u00bb \u0438 \u00ab\u0417\u0430\u0431\u044b\u043b\u00bb. \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430, \u0442\u043e \u043e\u043d \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0448\u044c \u043f\u0440\u0438 \u043f\u0435\u0440\u0432\u043e\u043c \u043f\u043e\u043a\u0430\u0437\u0435 \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f, \u0430 \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c: \u00ab\u041f\u043e\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c?\u00bb.<\/p>\n<pre><code class=\"java\">        if (isFound) {                 \/\/ \u0435\u0441\u043b\u0438 \u044d\u0442\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u043e\u043a\u0430\u0437, \u0442\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043f\u0440\u043e\u0441\u0438\u043c, \u0437\u043d\u0430\u0435\u0442 \u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u044d\u0442\u043e \u0441\u043b\u043e\u0432\u043e                 tvWord.setText(mWordList.get(curWordPos).getWord());                 tvTranslation.setText(mWordList.get(curWordPos).getTranslation());                 if (!isRepeat &amp;&amp; mWordList.get(curWordPos).isFirstShow()) {                     btKnow.setText(\"\u0423\u0436\u0435 \u0437\u043d\u0430\u044e\");                     btWillLearn.setText(\"\u0411\u0443\u0434\u0443 \u0443\u0447\u0438\u0442\u044c\");                 }                 else {                     tvTranslation.setText(\"\u041f\u043e\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c?\");                     btKnow.setText(\"\u0412\u0441\u043f\u043e\u043c\u043d\u0438\u043b\");                     btWillLearn.setText(\"\u0417\u0430\u0431\u044b\u043b\");                 }             }         else {             Toast.makeText(this, \"\u0413\u043e\u0442\u043e\u0432\u043e! \u0421\u043b\u043e\u0432\u0430 \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0432\u044b\u0443\u0447\u0435\u043d\u044b!\", Toast.LENGTH_LONG).show();             mDBHelper.saveListWord(mWordList);             getListWord();         }     }<\/code><\/pre>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u043d\u0435\u0438\u0437\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0430 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 mWordList \u043d\u0435 \u043d\u0430\u0448\u043b\u043e\u0441\u044c, \u0442\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u043d\u043e\u0432\u044b\u0439.<br \/>\u0427\u0442\u043e\u0431\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0438 \u043f\u043e \u043a\u043b\u0438\u043a\u0443 \u043d\u0430 \u043d\u0430\u0434\u043f\u0438\u0441\u044c \u00ab\u041f\u043e\u0434\u0441\u043a\u0430\u0437\u0430\u0442\u044c?\u00bb, \u043c\u044b \u0440\u0430\u043d\u0435\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0432 \u0444\u0430\u0439\u043b\u0435 activity_main.xml \u043a \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430\u043c tvTranslation \u0441\u0442\u0440\u043e\u043a\u0443<\/p>\n<pre><code class=\"xml\">android:onClick=\"onSuggestionClick\"<\/code><\/pre>\n<p>\u041a\u043e\u0434 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439:   <\/p>\n<pre><code class=\"java\">public void onSuggestionClick(View view) {     tvTranslation.setText(mWordList.get(curWordPos).getTranslation()); }<\/code><\/pre>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043e\u043f\u0438\u0441\u0430\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u0434\u0432\u0443\u0445 \u043a\u043d\u043e\u043f\u043e\u043a \u2013 btKnow \u0438 btWillLearn.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0430 \u043f\u0435\u0440\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u00ab\u0423\u0436\u0435 \u0437\u043d\u0430\u044e\u00bb, \u0442\u043e \u043f\u043e \u0449\u0435\u043b\u0447\u043a\u0443 \u043d\u0430 \u043d\u0435\u0439 \u043d\u0430\u0434\u043e \u043f\u0440\u0438\u0441\u0432\u043e\u0438\u0442\u044c \u043f\u043e\u043b\u044f\u043c isKnow \u0438 isFirstShow \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0442\u0435\u0440\u043c\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f true \u0438 false. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u00ab\u0412\u0441\u043f\u043e\u043c\u043d\u0438\u043b\u00bb, \u0442\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0443\u0434\u0430\u0447\u043d\u044b\u0445 \u043f\u043e\u043f\u044b\u0442\u043e\u043a \u0432\u0441\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0441\u043b\u043e\u0432\u043e (remember). \u0412 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0442\u0435\u0440\u043c\u0443 \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430.<\/p>\n<pre><code class=\"java\">public void onKnowClick(View view) {     if (mWordList.get(curWordPos).isFirstShow()) {         mWordList.get(curWordPos).makeKnow();         mWordList.get(curWordPos).setFirstShow();     }     else         mWordList.get(curWordPos).incRemember();     showNextWord(); }<\/code><\/pre>\n<p>\u041f\u043e \u043a\u043b\u0438\u043a\u0443 \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u0435 \u043c\u044b \u0442\u043e\u0436\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c\u0443 \u0442\u0435\u0440\u043c\u0443, \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u043d\u0441\u0442\u0430\u0442\u0438\u0440\u0443\u044f \u0444\u0430\u043a\u0442 \u043f\u043e\u043a\u0430\u0437\u0430 (isFirstShow = false) \u0432 \u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u00ab\u0411\u0443\u0434\u0443 \u0443\u0447\u0438\u0442\u044c\u00bb.<\/p>\n<pre><code class=\"java\">public void onWillLearnClick(View view) {     if (mWordList.get(curWordPos).isFirstShow())         mWordList.get(curWordPos).setFirstShow();     showNextWord(); }<\/code><\/pre>\n<p>\u0412\u043e\u0442 \u0438 \u0432\u0435\u0441\u044c \u043a\u043e\u0434 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0437\u0430 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439 \u043f\u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0411\u0414, \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u044f\u0449\u0438\u0445\u0441\u044f \u043a \u043b\u043e\u0433\u0438\u043a\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 (\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u043c\u0435\u0440\u0442\u0432\u043e \u0432\u0435\u0448\u0430\u0435\u0442 \u043c\u043e\u0439 \u043d\u043e\u0443\u0442\u0431\u0443\u043a) \u0438 \u0432\u0438\u0434\u0438\u043c \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/f09\/c4e\/f7c\/f09c4ef7c21f35634bf4e04293a0a7d5.jpg\" alt=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 1) \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0438 2) \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f\" title=\"\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 1) \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0438 2) \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f\" width=\"1512\" height=\"1280\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f09\/c4e\/f7c\/f09c4ef7c21f35634bf4e04293a0a7d5.jpg\" data-blurred=\"true\"\/><figcaption>\u0421\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 1) \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0438 2) \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f<\/figcaption><\/figure>\n<p>\u0412\u0440\u0443\u0447\u043d\u0443\u044e \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u044f \u0438\u0437\u0443\u0447\u0435\u043d\u043d\u044b\u043c \u0442\u0435\u0440\u043c\u0430\u043c \u0434\u0430\u0442\u0443 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u043d\u0430 1, 2, 7 \u0438 14 \u0434\u043d\u0435\u0439 \u043d\u0430\u0437\u0430\u0434, \u044f \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043b\u0430, \u0447\u0442\u043e \u043e\u043d\u0438 \u0432\u044b\u0445\u043e\u0434\u044f\u0442 \u0434\u043b\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e.<\/p>\n<p>\u0410 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0443.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/275\/667\/e78\/275667e780e815a75db1bc8027dc1251.JPG\" alt=\"\u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u0440\u043c\u043e\u0432 \u043f\u043e \u043f\u0435\u0440\u0432\u044b\u043c 12-\u0442\u0438 \u0433\u043b\u0430\u0432\u0430\u043c \u0412\u041a\" title=\"\u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u0440\u043c\u043e\u0432 \u043f\u043e \u043f\u0435\u0440\u0432\u044b\u043c 12-\u0442\u0438 \u0433\u043b\u0430\u0432\u0430\u043c \u0412\u041a\" width=\"598\" height=\"361\"\/><figcaption>\u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u0435\u0440\u043c\u043e\u0432 \u043f\u043e \u043f\u0435\u0440\u0432\u044b\u043c 12-\u0442\u0438 \u0433\u043b\u0430\u0432\u0430\u043c \u0412\u041a<\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 nlearned, \u043f\u043e\u0441\u043b\u0435 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u044b\u0445 \u0436\u0435 \u0442\u0435\u0440\u043c\u043e\u0432 \u0438\u0437 \u0433\u043b\u0430\u0432\u044b 1 \u0443\u0436\u0435 \u043d\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0433\u043b\u0430\u0432\u044b \u0441 \u043d\u0443\u043b\u0435\u0432\u044b\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0438\u0437\u0443\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430. \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043f\u043e\u0432\u0442\u043e\u0440\u0430\u043c \u0441\u043b\u043e\u0432 \u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c, \u0438\u0437\u0443\u0447\u0430\u044f \u043e\u0434\u043d\u0443 \u0433\u043b\u0430\u0432\u0443, \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u043e\u0431\u0440\u0435\u0442\u0430\u0435\u0442 \u0437\u0430\u0434\u0435\u043b \u043d\u0430 \u0432\u0441\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435.<\/p>\n<p>\u041e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c activity \u0434\u043b\u044f \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438 \u0432\u044b\u0432\u043e\u0434\u0430 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0438, \u0444\u0430\u043d\u0444\u0430\u0440\u044b \u043f\u0440\u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0438 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0433\u043b\u0430\u0432\u044b \u0438\u2026 \u0435\u0449\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u044b\u0441\u044f\u0447 \u0442\u0435\u0440\u043c\u043e\u0432 \u0438\u0437 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u00ab\u0411\u0440\u0430\u0442\u0441\u0442\u0432\u0430 \u041a\u043e\u043b\u044c\u0446\u0430\u00bb.<\/p>\n<\/p>\n<\/div>\n<\/div>\n<\/div>\n<p> <!----> <!----><\/div>\n<p> <!----> <!----><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/706224\/\"> https:\/\/habr.com\/ru\/post\/706224\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0412\u0441\u0435 \u0440\u0443\u0441\u0441\u043a\u0438\u0435 \u0444\u0430\u043d\u0430\u0442\u044b \u0422\u043e\u043b\u043a\u0438\u0435\u043d\u0430 \u0437\u043d\u0430\u044e\u0442, \u043a\u0430\u043a\u0430\u044f \u0431\u0435\u0434\u0430 \u0442\u0432\u043e\u0440\u0438\u0442\u0441\u044f \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430\u043c\u0438 \u0435\u0433\u043e \u0432\u0435\u043b\u0438\u043a\u043e\u0433\u043e \u0440\u043e\u043c\u0430\u043d\u0430 (\u0434\u0430\u043b\u0435\u0435 \u2013 \u0412\u041a) \u043d\u0430 \u044f\u0437\u044b\u043a \u041f\u0443\u0448\u043a\u0438\u043d\u0430 \u0438 \u0414\u043e\u0441\u0442\u043e\u0435\u0432\u0441\u043a\u043e\u0433\u043e. \u041f\u043e\u044f\u0441\u043d\u044e \u0432\u043a\u0440\u0430\u0442\u0446\u0435. \u0427\u0435\u0440\u0435\u0437 \u0441\u043e\u0432\u0435\u0442\u0441\u043a\u0443\u044e \u0446\u0435\u043d\u0437\u0443\u0440\u0443 \u0432 1982 \u0433\u043e\u0434\u0443 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u0440\u043e\u0442\u0430\u0449\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0439 \u0442\u043e\u043c, \u0434\u0430\u043b\u044c\u0448\u0435 \u0434\u0435\u043b\u043e \u0437\u0430\u0433\u043b\u043e\u0445\u043b\u043e. \u0427\u0442\u043e\u0431\u044b \u0443\u0437\u043d\u0430\u0442\u044c, \u0434\u043e\u0448\u0435\u043b \u043b\u0438 \u0424\u0440\u043e\u0434\u043e \u0434\u043e \u0420\u043e\u043a\u043e\u0432\u043e\u0439 \u0433\u043e\u0440\u044b, \u0434\u0435\u0441\u044f\u0442\u043e\u043a \u0434\u0438\u043b\u0435\u0442\u0430\u043d\u0442\u043e\u0432 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u043f\u0435\u0440\u0435\u0432\u0435\u043b\u0438 \u0432\u0441\u0435 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435, \u043a\u0442\u043e \u043a\u0430\u043a \u043f\u043e\u043d\u044f\u043b. \u041a\u043e\u0433\u0434\u0430 \u043a\u0443\u043b\u044c\u0442\u0443\u0440\u0430 \u0442\u043e\u043b\u043a\u0438\u0435\u043d\u0438\u0437\u043c\u0430 \u0432 \u0420\u043e\u0441\u0441\u0438\u0438 \u0431\u044b\u043b\u0430 \u0443\u0436\u0435 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0430, \u0432\u044b\u0448\u0435\u043b, \u043d\u0430\u043a\u043e\u043d\u0435\u0446, \u0438 \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434. \u041d\u043e \u0437\u0430\u043f\u0430\u043b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u0430 \u043a \u0442\u043e\u043c\u0443 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0443\u0436\u0435 \u0438\u0441\u0441\u044f\u043a, \u0442\u0430\u043a \u0447\u0442\u043e \u0438 \u044d\u0442\u043e\u0442 \u0442\u0440\u0443\u0434 \u0432\u044b\u0448\u0435\u043b \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u044b\u043c: \u0442\u044e\u0440\u0435\u043c\u043d\u044b\u0439 \u0436\u0430\u0440\u0433\u043e\u043d, \u0440\u0443\u0433\u0430\u0442\u0435\u043b\u044c\u0441\u0442\u0432\u0430, \u0435\u0436\u0435\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0435 \u043e\u0442\u0441\u044b\u043b\u043a\u0438 \u043a \u0441\u043e\u0432\u0435\u0442\u0441\u043a\u0438\u043c \u0440\u0435\u0430\u043b\u0438\u044f\u043c\u2026<\/p>\n<p>\u041e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0436\u0435 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442 \u043d\u0430 \u043d\u0430\u0448\u0435\u0433\u043e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f \u0434\u0432\u043e\u044f\u043a\u043e\u0435 \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435. \u0421 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u0430\u044f \u0441\u0442\u0438\u043b\u0438\u0441\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430 \u0433\u0435\u043d\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0444\u0438\u043b\u043e\u043b\u043e\u0433\u0430, \u0432 \u0440\u0443\u043a\u0430\u0445 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0436\u0435\u0441\u0442\u043a\u0438\u0439 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u0433\u043d\u0435\u0442\u0441\u044f, \u043a\u0430\u043a \u043f\u043b\u0430\u0441\u0442\u0438\u043b\u0438\u043d (&#171;On he led them, into the mouth of darkness, and still on under the deep clouded night&#187;). \u0421 \u0434\u0440\u0443\u0433\u043e\u0439 &#8212; \u043e\u0431\u0438\u043b\u0438\u0435 \u0438\u0434\u0438\u043e\u043c, \u0444\u0440\u0430\u0437\u043e\u0432\u044b\u0445 \u0433\u043b\u0430\u0433\u043e\u043b\u043e\u0432, \u0438\u0433\u0440\u044b \u0441\u043b\u043e\u0432 \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u0442\u0430\u043a\u0438\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043a\u0430\u043a\u0438\u0435 \u043d\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u0435 \u043d\u0435 \u0441\u044b\u0449\u0435\u0448\u044c.<\/p>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u043e\u0441\u0432\u043e\u0438\u0442\u044c \u0432\u0441\u0435 \u044d\u0442\u043e \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u0438\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%9A%D1%80%D0%B8%D0%B2%D0%B0%D1%8F_%D0%B7%D0%B0%D0%B1%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F\" rel=\"noopener noreferrer nofollow\">\u043a\u0440\u0438\u0432\u043e\u0439 \u042d\u0431\u0431\u0438\u043d\u0433\u0430\u0443\u0437\u0430<\/a>.<\/p>\n<p>\u0414\u0438\u0441\u043a\u043b\u0435\u0439\u043c\u0435\u0440: \u043d\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u0430, \u0447\u0442\u043e \u0442\u0430\u043a\u0443\u044e \u0441\u0442\u0430\u0442\u044c\u044e \u043d\u0435 \u0441\u043e\u0447\u0442\u0443\u0442 \u0440\u0435\u043a\u043b\u0430\u043c\u043d\u043e\u0439, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u044e \u0435\u0435 \u0432 &#171;\u042f \u043f\u0438\u0430\u0440\u044e\u0441\u044c&#187;. \u0415\u0441\u043b\u0438 \u043c\u043e\u0434\u0435\u0440\u0430\u0442\u043e\u0440\u044b \u0441\u043e\u0447\u0442\u0443\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u043c, \u0442\u043e \u0431\u0443\u0434\u0443 \u0440\u0430\u0434\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u0449\u0435\u043d\u0438\u044e \u0432 \u0442\u0435\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0445\u0430\u0431\u044b.<\/p>\n<h2>\u0421\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0431\u0430\u0437\u044b \u0442\u0435\u0440\u043c\u043e\u0432<\/h2>\n<p>\u0412 \u043f\u0435\u0440\u0432\u0443\u044e \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u0441\u044f \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0442\u0435\u0445 \u0441\u043b\u043e\u0432 \u0438 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u0432 \u0412\u041a. \u0427\u0430\u0441\u0442\u043e\u0442\u043d\u044b\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u043f\u043b\u043e\u0445\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u044b \u0432\u0432\u0438\u0434\u0443 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0430, \u043f\u043e\u043b\u0443\u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u0441\u043b\u043e\u0432 \u0438 \u0438\u0437\u0431\u044b\u0442\u043a\u0430 \u043c\u0430\u043b\u043e\u0443\u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043b\u0435\u043a\u0441\u0438\u043a\u0438. \u0414\u0430 \u0438 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u043b\u043e\u0432\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0440\u0443\u0447\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u0442\u0438\u043b\u0438\u0441\u0442\u0438\u043a\u0443 \u0438 \u0443\u0447\u0435\u0441\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442 \u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f.<\/p>\n<p>\u041d\u043e \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0432 \u043d\u0430\u0438\u0432\u043d\u044b\u0435 \u0441\u0442\u0443\u0434\u0435\u043d\u0447\u0435\u0441\u043a\u0438\u0435 \u0433\u043e\u0434\u044b \u044f \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0430 \u043d\u0430\u0434 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0412\u041a, \u0438 \u0441 \u0442\u0435\u0445 \u043f\u043e\u0440 \u0443 \u043c\u0435\u043d\u044f \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432, \u0440\u0430\u0437\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u043a\u0430\u0440\u0430\u043d\u0434\u0430\u0448\u043e\u043c \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u044e \u041c\u044e\u043b\u043b\u0435\u0440\u0430 \u0438 ABBYY Lingvo.<\/p>\n<figure class=\"full-width\"><figcaption>\u0421\u0430\u043c\u044b\u0439 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u0438\u0437 \u043c\u043e\u0438\u0445 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u043e\u0432 Lord of the Rings, \u0438\u0441\u043f\u043e\u0440\u0447\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u043c\u0435\u0442\u043a\u0430\u043c\u0438<\/figcaption><\/figure>\n<p>\u041e\u0442\u043a\u0440\u044b\u0432 Excel, \u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443, \u0432\u044b\u043f\u0438\u0441\u044b\u0432\u0430\u044f \u0442\u0435\u0440\u043c, \u0441\u0432\u043e\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0438 \u043d\u043e\u043c\u0435\u0440 \u0433\u043b\u0430\u0432\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f. \u0423\u0431\u0438\u0432 \u043d\u0430 \u044d\u0442\u043e \u0434\u0435\u043b\u043e \u043f\u0430\u0440\u0443 \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u0432\u0435\u0447\u0435\u0440\u043e\u0432, \u044f \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043b\u0430\u0441\u044c, \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430 \u043f\u0435\u0440\u0432\u0443\u044e \u043a\u043d\u0438\u0433\u0443, \u0442.\u0435. \u043f\u0435\u0440\u0432\u0443\u044e \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0443 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0442\u043e\u043c\u0430. \u041c\u043e\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u043b 6745 \u0441\u043b\u043e\u0432 \u0438 \u0441\u043b\u043e\u0432\u043e\u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0439.<\/p>\n<p>\u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043c\u043d\u043e\u0433\u0438\u0435 \u0438\u0437 \u043d\u0438\u0445 \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430. \u0414\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438 \u044f \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043f\u043e \u0430\u043b\u0444\u0430\u0432\u0438\u0442\u0443.<\/p>\n<figure class=\"full-width\"><figcaption>\u041f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u0431\u0430\u0437\u0430. \u0414\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b \u0432\u0438\u0434\u043d\u044b \u043d\u0435\u0432\u043e\u043e\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c \u0433\u043b\u0430\u0437\u043e\u043c<\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u043d\u043e \u0438\u0437 \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u0430, \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u043e\u0434\u0431\u0438\u0440\u0430\u043b\u0441\u044f \u043a \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c\u0443 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044e \u0441\u043b\u043e\u0432\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u043d\u0438\u0442\u0441\u044f \u043e\u0442 \u0441\u043b\u0443\u0447\u0430\u044f \u043a \u0441\u043b\u0443\u0447\u0430\u044e.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0441\u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u0440\u043c\u044b \u043f\u043e \u0441\u043b\u043e\u0432\u0430\u0440\u043d\u044b\u043c \u0433\u043d\u0435\u0437\u0434\u0430\u043c. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u043c\u0441\u044f \u043a \u043c\u043e\u0449\u0438 pandas. \u0421\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0434\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c \u043f\u043e \u0442\u0430\u0431\u043b\u0438\u0446\u0435.<\/p>\n<pre><code class=\"python\">import pandas as pd import pathlib excel_data = pd.read_excel(pathlib.Path('c:\/', 'LotR', '\u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0422\u043e\u043b\u043a\u0438\u0435\u043d\u0430.xlsx'), dtype = str) df = pd.DataFrame(excel_data, columns=['Word', 'Russian', 'Chapters']) # \u044d\u0442\u0438 \u0436\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0434\u043e\u043b\u0436\u043d\u044b \u0444\u0438\u0433\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435 \u043b\u0438\u0441\u0442\u0430 Excel<\/code><\/pre>\n<p>\u0415\u0449\u0435 \u0440\u0430\u0437 \u0443\u0431\u0435\u0434\u0438\u043c\u0441\u044f, \u0447\u0442\u043e \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a:<\/p>\n<pre><code class=\"python\">df = df.astype({'Word': str, 'Russian': str, 'Chapters': str})<\/code><\/pre>\n<p>\u0418 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0432\u043e\u0434\u043d\u0443\u044e \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 pivot_table(). \u0410\u0433\u0440\u0435\u0433\u0438\u0440\u0443\u044e\u0449\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f set \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u043e\u043c\u0435\u0440\u0430 \u0433\u043b\u0430\u0432, \u0443\u0441\u0442\u0440\u0430\u043d\u0438\u0432 \u0434\u0443\u0431\u043b\u0438\u043a\u0430\u0442\u044b.<\/p>\n<pre><code class=\"python\">pt = pd.pivot_table(df,                    values=['Russian', 'Chapters'],                    index='Word',                    aggfunc={'Russian': set,                             'Chapters': set})<\/code><\/pre>\n<p>\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u0432 Excel:<\/p>\n<pre><code class=\"python\">pt.to_excel('C:\/\u0412\u043b\u0430\u0441\u0442\u0435\u043b\u0438\u043d \u041a\u043e\u043b\u0435\u0446\/\u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0422\u043e\u043b\u043a\u0438\u0435\u043d\u0430 \u0441\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439.xlsx')<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0431\u0430\u0437\u0430 \u0442\u0435\u0440\u043c\u043e\u0432 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<figure class=\"full-width\"><figcaption>\u0421\u0432\u0435\u0434\u0435\u043d\u043d\u0430\u044f \u0431\u0430\u0437\u0430 \u0442\u0435\u0440\u043c\u043e\u0432<\/figcaption><\/figure>\n<p>\u0418 \u0432 \u043d\u0435\u0439 \u0432\u0441\u0435\u0433\u043e 3851 \u0437\u0430\u043f\u0438\u0441\u044c, \u0442\u043e \u0435\u0441\u0442\u044c \u043e\u0431\u044a\u0435\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0432\u0434\u0432\u043e\u0435.<\/p>\n<p>\u041b\u0438\u0448\u043d\u0438\u0435 \u043a\u0430\u0432\u044b\u0447\u043a\u0438 \u0438 \u0444\u0438\u0433\u0443\u0440\u043d\u044b\u0435 \u0441\u043a\u043e\u0431\u043a\u0438 \u043c\u043e\u0436\u043d\u043e \u0443\u0431\u0440\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0430\u0432\u0442\u043e\u0437\u0430\u043c\u0435\u043d\u043e\u0439. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043f\u0440\u0430\u0432\u0430\u044f \u043a\u043e\u043b\u043e\u043d\u043a\u0430 \u043d\u0443\u0436\u0434\u0430\u0435\u0442\u0441\u044f \u0432 \u0440\u0443\u0447\u043d\u043e\u043c \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438, \u0442\u0430\u043a \u043a\u0430\u043a \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044f\u0445 \u043f\u0440\u0438\u043d\u044f\u0442\u043e \u0433\u0440\u0443\u043f\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u043f\u043e \u0447\u0430\u0441\u0442\u044f\u043c \u0440\u0435\u0447\u0438.<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u043c\u0435\u043d\u044f \u0431\u0435\u0441\u043f\u043e\u043a\u043e\u0438\u043b\u043e, \u0447\u0442\u043e \u0432 \u043c\u043e\u0435\u0439 \u0431\u0430\u0437\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u044b \u043d\u0435 \u0432\u0441\u0435 \u0441\u043b\u0443\u0447\u0430\u0438 \u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u0440\u043c\u043e\u0432, \u0430 \u043b\u0438\u0448\u044c \u0442\u0435, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043a\u043e\u0433\u0434\u0430-\u0442\u043e \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0438 \u043c\u0435\u043d\u044f \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0447\u0438\u043a\u0430. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u043d\u0438\u0445 \u043f\u043e \u043c\u0435\u0440\u0435 \u0440\u0430\u0431\u043e\u0442\u044b \u043d\u0430\u0434 \u0442\u0435\u043a\u0441\u0442\u043e\u043c \u043d\u0430\u043a\u0440\u0435\u043f\u043a\u043e \u043e\u0442\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u0432 \u043c\u043e\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0431\u044b\u043b\u0438 \u043f\u043e\u043c\u0435\u0447\u0435\u043d\u044b \u0432 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0433\u043b\u0430\u0432\u0430\u0445. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0440\u0435\u0448\u0438\u043b\u0430 \u0432\u0447\u0435\u0440\u043d\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0445\u043e\u0442\u044f \u0431\u044b \u043f\u0440\u043e\u0441\u0442\u044b\u0445 \u0441\u043b\u043e\u0432, \u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0433\u0440\u0430\u043c\u043c\u0430\u0442\u0438\u043a\u0438.<\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u2013 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"python\">Chapter\\s1.*?(\\bterm).*?Chapter\\s2<\/code><\/pre>\n<p>\u0431\u0430\u043d\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0432, \u0435\u0441\u0442\u044c \u043b\u0438 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0441\u043b\u043e\u0432\u0430 term \u043c\u0435\u0436\u0434\u0443 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 Chapter 1 \u0438 Chapter 2. \u041e\u043f\u0435\u0440\u0430\u0442\u043e\u0440 (\u043e\u043d \u0436\u0435 \u00ab\u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u0430\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c\u00bb) \\b \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u043b\u043e\u0432\u0430, \u0442\u043e \u0435\u0441\u0442\u044c \u043c\u044b \u0438\u0449\u0435\u043c \u0441\u043b\u043e\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442\u0441\u044f \u0441 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438 term, \u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u0438\u043c\u0435\u0442\u044c \u043a\u0430\u043a\u043e\u0435-\u043b\u0438\u0431\u043e \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0435 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, terms).<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c, \u0438\u043c\u0435\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u0440\u043e\u043c\u0430\u043d\u0430 text \u0438 \u043c\u0430\u0441\u0441\u0438\u0432 vec \u0438\u0437 \u0434\u0432\u0443\u0445 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 (vec[0] &#8212; \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0436\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0433\u043b\u0430\u0432, \u0445\u0440\u0430\u043d\u044f\u0449\u0438\u0439\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0435 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043f\u044f\u0442\u0443\u044e, \u0438 vec[1] &#8212; \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0442\u0435\u0440\u043c), \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0442\u0435\u0440\u043c\u0430 vec[1] \u043f\u043e \u0433\u043b\u0430\u0432\u0430\u043c:<\/p>\n<pre><code class=\"python\">import re def check_chapters(vec):     global text     ch = list(map(int, vec[0].split(',')))      for i in range(1, 13):         match = re.search(r'Chapter\\s{}.*?(\\b{}).*?Chapter\\s{}'.format(i, vec[1], i + 1), text, flags=re.IGNORECASE) if i &lt; 12 else re.search(r'Chapter\\s{}.*?(\\b{})'.format(i, vec[1]), text, flags=re.IGNORECASE)         if match and not i in ch:             ch.append(i)      ch.sort()     return ch<\/code><\/pre>\n<p>\u0423\u0441\u043b\u043e\u0432\u0438\u0435 \u0432 \u0446\u0438\u043a\u043b\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u043b\u043e\u0441\u044c \u043f\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u044f \u0432 \u0440\u043e\u043c\u0430\u043d\u0435 13-\u0439 \u0433\u043b\u0430\u0432\u044b, \u0430 \u0441\u043f\u0438\u0441\u043e\u043a ch \u2013 \u0434\u043b\u044f \u0443\u0434\u043e\u0431\u0441\u0442\u0432\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u043c\u0435\u0440\u043e\u0432 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0433\u043b\u0430\u0432 \u043a \u0441\u0442\u0440\u043e\u043a\u0435 vec[0]. \u0418 \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u0435\u043c \u043e\u0442\u0441\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0433\u043b\u0430\u0432 \u043f\u043e \u0432\u043e\u0437\u0440\u0430\u0441\u0442\u0430\u043d\u0438\u044e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0440\u0430\u043d\u044c\u0448\u0435 \u0437\u0430\u0431\u044b\u043b\u0438 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p>\u0417\u0430\u043a\u043e\u043d\u0447\u0438\u0432 \u044d\u0442\u0443 \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443, \u0441\u043d\u043e\u0432\u0430 \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c \u0438\u0437 Excel-\u0442\u0430\u0431\u043b\u0438\u0446\u044b. \u0417\u0430\u0442\u0435\u043c \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0438 \u0443\u0434\u0430\u043b\u0438\u043c \u0438\u0437 \u043d\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0430 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 \u043a\u0430\u0440\u0435\u0442\u043a\u0438.<\/p>\n<pre><code class=\"python\">f = open('C:\/Fellowship Part 1.txt') text = f.read().replace('\\n', '').replace('\\r', '')<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u043c \u043d\u0430\u0448\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043a \u0434\u0432\u0443\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u0430\u043c \u0434\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c\u0430 \u0438 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 Excel:<\/p>\n<pre><code class=\"python\">df['New chapters'] = df[['Chapters', 'Word']].apply(check_chapters, axis=1) df.to_excel('C:\/\u0412\u043b\u0430\u0441\u0442\u0435\u043b\u0438\u043d \u041a\u043e\u043b\u0435\u0446\/\u0441\u043b\u043e\u0432\u0430\u0440\u044c \u0422\u043e\u043b\u043a\u0438\u0435\u043d\u0430 \u0441\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439.xlsx')<\/code><\/pre>\n<p>\u0425\u043e\u0442\u044f \u043f\u043e\u0438\u0441\u043a \u043f\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u043c\u0443 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044e &#8212; \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u0440\u0443\u0434\u043e\u0435\u043c\u043a\u0430\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f, \u043d\u0430 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0441 4-\u044f\u0434\u0435\u0440\u043d\u044b\u043c Intel i5-8265U \u0438 8 \u0413\u0431 \u041e\u0417\u0423 \u043c\u043e\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u0431\u044b\u043b \u043f\u0440\u043e\u0432\u0435\u0440\u0435\u043d \u0432\u0441\u0435\u0433\u043e \u0437\u0430 874 \u0441\u0435\u043a\u0443\u043d\u0434\u044b (\u0432\u0440\u0435\u043c\u044f \u0437\u0430\u0441\u0435\u043a\u0430\u043b\u043e\u0441\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438 timeit.default_timer()).<\/p>\n<p>\u0412 \u0438\u0442\u043e\u0433\u0435 \u0431\u0430\u0437\u0430 \u0442\u0435\u0440\u043c\u043e\u0432 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u043b\u0430\u0441\u044c \u0432\u043e\u0442 \u044d\u0442\u0438\u043c \u043f\u0440\u0430\u0432\u044b\u043c \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u043c.<\/p>\n<figure class=\"full-width\"><figcaption>\u041f\u0440\u0435\u0434\u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d \u043f\u043e \u043c\u043e\u0438\u043c \u0440\u0443\u0447\u043d\u044b\u043c \u0432\u044b\u043f\u0438\u0441\u043a\u0430\u043c, \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0439 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d \u043f\u043e \u043d\u0435\u043c\u0443 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438<\/figcaption><\/figure>\n<h2>\u041e\u0442 Excel \u043a SQLite<\/h2>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0434\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0431\u0430\u0437\u0443 \u0434\u0430\u043d\u043d\u044b\u0445 SQLite, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 Android.<\/p>\n<figure class=\"full-width\"><figcaption>ER-\u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c\u0430 \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445<\/figcaption><\/figure>\n<p>\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043a\u0440\u0438\u0432\u0430\u044f \u042d\u0431\u0431\u0438\u043d\u0433\u0430\u0443\u0437\u0430 \u2013 \u044d\u0442\u043e \u0433\u0440\u0430\u0444\u0438\u043a, \u0438, \u043a\u0430\u043a \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e, \u043e\u0434\u0438\u043d \u0438\u0437 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0435\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u0438\u044f \u2013 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u044b\u0439. \u042d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 \u0411\u0414 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u0442\u0430\u0431\u043b\u0438\u0446\u0430 repeat, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0430\u044f \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b\u044b \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0439. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430 \u043e\u0434\u0438\u043d \u0438\u0437 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0445 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439: \u043f\u0435\u0440\u0432\u043e\u0435 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435 \u0447\u0435\u0440\u0435\u0437 1 \u0434\u0435\u043d\u044c, \u0432\u0442\u043e\u0440\u043e\u0435 \u0447\u0435\u0440\u0435\u0437 2, \u0442\u0440\u0435\u0442\u044c\u0435 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u0434\u0435\u043b\u044e, \u0447\u0435\u0442\u0432\u0435\u0440\u0442\u043e\u0435 \u0447\u0435\u0440\u0435\u0437 \u0434\u0432\u0435 \u043d\u0435\u0434\u0435\u043b\u0438. \u041b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438 \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u0441\u0447\u0438\u0442\u0430\u0442\u044c 1-\u043c \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u0435\u043c \u0441\u0430\u043c\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u0440\u043c\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043b\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 repeat \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"340\" width=\"340\">\n<p align=\"left\"><strong>id<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>interval<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"340\" width=\"340\">\n<p align=\"left\">2<\/p>\n<\/td>\n<td>\n<p align=\"left\">1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"340\" width=\"340\">\n<p align=\"left\">3<\/p>\n<\/td>\n<td>\n<p align=\"left\">2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"340\" width=\"340\">\n<p align=\"left\">4<\/p>\n<\/td>\n<td>\n<p align=\"left\">7<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"340\" width=\"340\">\n<p align=\"left\">5<\/p>\n<\/td>\n<td>\n<p align=\"left\">14<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 words \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u043d\u043e\u043c\u0435\u0440 \u0438 \u0434\u0430\u0442\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f. \u0422\u0430\u043a \u043a\u0430\u043a \u0432 SQLite \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u0442\u044b, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0435\u0435 \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<p>\u0422\u0430\u0431\u043b\u0438\u0446\u0430 entries \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0433\u043b\u0430\u0432\u044b. \u0412 \u043d\u0435\u0439 \u0441\u0438\u043b\u044c\u043d\u043e \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430 \u0434\u043b\u044f \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0411\u0414 \u043a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Third_Normal_Form\" rel=\"noopener noreferrer nofollow\">\u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0435<\/a>. \u0421\u0435\u0439\u0447\u0430\u0441 \u044f \u043f\u043e\u043a\u0430\u0436\u0443, \u043f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0438\u0437 Excel \u0432 SQLite, \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u043f\u0430\u043a\u0435\u0442 sqlite3.<\/p>\n<pre><code class=\"python\">import sqlite3 as sl<\/code><\/pre>\n<p>\u041e\u0442\u043a\u0440\u043e\u0435\u043c \u0444\u0430\u0439\u043b \u0441 \u043f\u0443\u0441\u0442\u043e\u0439 \u0431\u0430\u0437\u043e\u0439 \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<pre><code class=\"python\">con = sl.connect(pathlib.Path('c:\/', 'LotR', 'lotrvoc.db'))<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441\u043b\u043e\u0432 \u043f\u043e\u043b\u0435 \u0434\u043b\u044f \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u043b\u044e\u0447\u0430. \u0424\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043e\u043d \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u043e\u043c\u0435\u0440\u0443 \u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c\u0430 \u0441 \u0442\u043e\u0439 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u043e\u0439, \u0447\u0442\u043e ID \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u0435\u0434\u0438\u043d\u0438\u0446\u044b.<\/p>\n<pre><code class=\"python\">df = df.assign(idWord = df['Chapters'].index + 1) # \u043d\u0443\u043c\u0435\u0440\u0430\u0446\u0438\u044f \u0441 1<\/code><\/pre>\n<p>\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0434\u0430\u0442\u0430\u0444\u0440\u0435\u0439\u043c \u0432 \u0411\u0414: <\/p>\n<pre><code class=\"python\">df[['idWord','Word','Russian']].to_sql('words', con, if_exists = 'replace', index = False)<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b entries \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u0441\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 explode() \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u0430 pandas. \u041e\u043d\u0430 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0438\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0435\u0440\u043c\u0430 \u043f\u043e \u0447\u0438\u0441\u043b\u0443 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u043f\u043e\u043b\u0435 chapters (\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f \u0442\u0430\u043c, \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0435 \u0437\u0430\u043f\u044f\u0442\u044b\u043c\u0438, \u0432 \u0432\u0438\u0434\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a \u043d\u0438\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e split()). \u0421\u043a\u0430\u0436\u0435\u043c, \u0437\u0430\u043f\u0438\u0441\u044c<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">3691<\/p>\n<\/td>\n<td>\n<p align=\"left\">1, 2, 3, 5<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>explode() \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442 \u0432<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td>\n<p align=\"left\">3691<\/p>\n<\/td>\n<td>\n<p align=\"left\">1<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">3691<\/p>\n<\/td>\n<td>\n<p align=\"left\">2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">3691<\/p>\n<\/td>\n<td>\n<p align=\"left\">3<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">3691<\/p>\n<\/td>\n<td>\n<p align=\"left\">5<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u041a\u043e\u0434:<\/p>\n<pre><code class=\"python\">df = df.assign(idChapter = df['Chapters'].str.split(', ')).explode('idChapter') df = df.astype({'idChapter': int}) df[['idWord','idChapter']].to_sql('entries', con, if_exists = 'replace', index = False)<\/code><\/pre>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0435 \u043a\u043b\u044e\u0447\u0438. \u0414\u043b\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b words \u044d\u0442\u043e \u043b\u0435\u0433\u043a\u043e:<\/p>\n<pre><code class=\"python\">con.execute('CREATE UNIQUE INDEX IF NOT EXISTS \"idWord\" ON \"words\" (\"idWord\");')<\/code><\/pre>\n<p>\u0410 \u0432\u043e\u0442 \u043a\u0430\u043a \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0432\u0438\u0447\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 \u0434\u043b\u044f entries &#8212; \u044d\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u0440\u044e\u043a \u0441 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c index \u0443 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0435\u0442. \u041a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u0432\u0441\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u0432 \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0441 \u043f\u0435\u0440\u0432\u043e\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u0438 \u043d\u0435 \u0440\u0430\u0437\u043c\u043d\u043e\u0436\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 explode(). \u041f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u043a\u0430 \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0431\u0435\u0437 \u0442\u0440\u0435\u0442\u044c\u0435\u0439 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u044b.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u0435\u0435 \u043d\u0430 \u0441\u043e\u0441\u0442\u0430\u0432 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0431\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445:<\/p>\n<figure class=\"full-width\"><figcaption>\u041e\u0431\u0449\u0435\u0435 \u0447\u0438\u0441\u043b\u043e \u0442\u0435\u0440\u043c\u043e\u0432 \u0438 \u0447\u0438\u0441\u043b\u043e \u043d\u043e\u0432\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0438\u0437 \u0434\u0432\u0435\u043d\u0430\u0434\u0446\u0430\u0442\u0438 \u0433\u043b\u0430\u0432<\/figcaption><\/figure>\n<p>\u041a\u0430\u043a \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0441\u0438\u043d\u0438\u0435 \u0441\u0442\u043e\u043b\u0431\u0438\u043a\u0438, \u043b\u0438\u0448\u044c \u0434\u043b\u044f \u043e\u0441\u0432\u043e\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u044b\u0445 \u0434\u0432\u0443\u0445-\u0442\u0440\u0435\u0445 \u0433\u043b\u0430\u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0441\u043e\u0432\u0435\u0440\u0448\u0438\u0442\u044c \u0440\u044b\u0432\u043e\u043a. \u0417\u0430\u0442\u0435\u043c \u0447\u0438\u0441\u043b\u043e \u0438\u0437\u0443\u0447\u0430\u0435\u043c\u044b\u0445 \u0442\u0435\u0440\u043c\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0440\u0436\u0430\u0442\u044c\u0441\u044f \u0432 \u0440\u0430\u0439\u043e\u043d\u0435 \u0434\u0432\u0443\u0445\u0441\u043e\u0442, \u0430 \u0434\u043b\u044f \u0433\u043b\u0430\u0432\u044b 10 \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442 \u0432\u0441\u0435\u0433\u043e 103. \u041a\u0440\u043e\u043c\u0435 \u0442\u043e\u0433\u043e, \u043d\u0430\u0434\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u0438 \u0445\u043e\u0440\u043e\u0448\u0435\u043c \u0441\u043b\u043e\u0432\u0430\u0440\u043d\u043e\u043c \u0437\u0430\u043f\u0430\u0441\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435 \u0442\u0435\u0440\u043c\u044b \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f.<\/p>\n<h2>Android-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435<\/h2>\n<p>\u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u043c\u043e\u0433\u0430\u0442\u044c \u0432 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0438 \u0441\u043b\u043e\u0432\u0430\u0440\u044f \u0438 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441. \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e Android Studio \u0438 Java. \u0418\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0431\u0443\u0434\u0443\u0449\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0434\u043e\u0445\u043d\u043e\u0432\u043b\u0435\u043d \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 reword.<\/p>\n<p>\u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0445\u0432\u0430\u0442\u0438\u0442 \u043e\u0434\u043d\u043e\u0439 activity, \u0433\u0434\u0435 \u0440\u0430\u0437\u043c\u0435\u0441\u0442\u044f\u0442\u0441\u044f \u0442\u0435\u0440\u043c, \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0438 \u0434\u0432\u0435 \u043a\u043d\u043e\u043f\u043a\u0438 \u2013 \u00ab\u0417\u043d\u0430\u044e\u00bb \u0438 \u00ab\u041d\u0435 \u0437\u043d\u0430\u044e\u00bb. \u0417\u0434\u0435\u0441\u044c \u0436\u0435 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0430\u0442\u0435\u043b\u044c \u0440\u0435\u0436\u0438\u043c\u0430 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f\/\u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f \u0442\u0435\u0440\u043c\u043e\u0432. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u0434 activity_mail.xml \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a:<\/p>\n<pre><code class=\"xml\">&lt;?xml version=\"1.0\" encoding=\"utf-8\"?> &lt;androidx.constraintlayout.widget.ConstraintLayout xmlns:android=\"http:\/\/schemas.android.com\/apk\/res\/android\"     xmlns:app=\"http:\/\/schemas.android.com\/apk\/res-auto\"<\/code><\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-342890","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/342890","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=342890"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/342890\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=342890"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=342890"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=342890"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}