{"id":443464,"date":"2024-12-26T08:54:58","date_gmt":"2024-12-26T08:54:58","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=443464"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=443464","title":{"rendered":"<span>\u0426\u0430\u0440\u0441\u0442\u0432\u043e \u0433\u0440\u0438\u0431\u043e\u0432. \u0421\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044f \u043c\u0438\u0446\u0435\u043b\u0438\u044f \u043d\u0430 p5py. \u0411\u0438\u0442\u0432\u044b \u0433\u0438\u0444\u043e\u0432. \u0427\u0430\u0441\u0442\u044c \u043f\u0435\u0440\u0432\u0430\u044f<\/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<p>\u041e\u0434\u043d\u0438 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0445, \u0441\u0430\u043c\u044b\u0445 \u0441\u043a\u0440\u044b\u0442\u043d\u044b\u0445 \u0438 \u0441\u0430\u043c\u044b\u0445 \u0434\u0440\u0435\u0432\u043d\u0438\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043c\u043e\u0432 \u043d\u0430 \u0417\u0435\u043c\u043b\u0435. \u0413\u0440\u0438\u0431\u044b. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0432 \u0441\u043a\u0440\u044b\u0442\u043e\u043c \u0446\u0430\u0440\u0441\u0442\u0432\u0435 \u043f\u043e\u0434 \u0433\u043e\u0440\u043e\u0439. \u041e\u043d\u0438 \u043c\u0435\u043d\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0432\u043b\u0435\u043a\u0430\u043b\u0438.<\/p>\n<blockquote>\n<p>\u0412 1998 \u0433\u043e\u0434\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0431\u0438\u043e\u043b\u043e\u0433\u043e\u0432 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u043b\u0430 \u0433\u0438\u0431\u0435\u043b\u044c \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432, \u0447\u044c\u0438 \u043a\u043e\u0440\u043d\u0438 \u0431\u044b\u043b\u0438 \u043e\u043f\u0443\u0442\u0430\u043d\u044b \u0433\u0440\u0438\u0431\u043d\u0438\u0446\u0435\u0439. \u0422\u043e\u0433\u0434\u0430-\u0442\u043e \u043e\u043d\u0438 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438, \u0447\u0442\u043e \u0441\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0451\u043d\u043a\u0430 \u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0432 \u041e\u0440\u0435\u0433\u043e\u043d\u0435 \u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0438\u0431\u043d\u0438\u0446\u044b, \u0430 \u0435\u0434\u0438\u043d\u044b\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043c. \u041a\u0440\u0443\u043f\u043d\u0435\u0439\u0448\u0435\u0435 \u0436\u0438\u0432\u043e\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u043d\u0430 \u0417\u0435\u043c\u043b\u0435: \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0441 880 \u0433\u0435\u043a\u0442\u0430\u0440\u043e\u0432 \u0438 \u0441\u0442\u0430\u0440\u0448\u0435 2,4 \u0442\u044b\u0441\u044f\u0447\u0438 \u043b\u0435\u0442.<\/p>\n<\/blockquote>\n<p>\u0425\u043e\u0447\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u043e\u0433\u043e \u0446\u0430\u0440\u0441\u0442\u0432\u0430 (\u043f\u0440\u044f\u043c\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043d\u0430 Python \u0438  <a href=\"https:\/\/p5py.khasang.ru\/\">p5py<\/a>). \u041f\u043e\u0441\u0430\u0434\u0438\u0442\u044c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u043f\u043e\u0440\u044b, \u043f\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0437\u0430 \u0440\u043e\u0441\u0442\u043e\u043c \u043c\u0438\u0446\u0435\u043b\u0438\u044f \u0438 \u0432\u043e\u0441\u0448\u0435\u0434\u0448\u0438\u043c\u0438 \u043f\u043b\u043e\u0434\u043e\u0432\u044b\u043c\u0438 \u0442\u0435\u043b\u0430\u043c\u0438, \u0438 \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0441\u043f\u043e\u0440\u0430\u043c\u0438-\u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a\u0430\u043c\u0438, \u043a\u0430\u043a \u043e\u043d\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043b\u043e\u043d\u0438\u0438.<\/p>\n<p>\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0435 \u0432 \u0426\u0430\u0440\u0441\u0442\u0432\u043e \u0413\u0440\u0438\u0431\u043e\u0432.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/536\/51a\/14c\/53651a14c1da06c5ce9e447ed306e4b2.jpeg\" alt=\"image\" title=\"\" width=\"602\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/536\/51a\/14c\/53651a14c1da06c5ce9e447ed306e4b2.jpeg\" data-blurred=\"true\"\/><\/figure>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u043b\u0430\u043d \u043f\u0440\u043e\u0441\u0442: \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u043a\u0430\u043a-\u0442\u043e \u043f\u0440\u043e\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0434\u043e\u0431\u044b\u0432\u0430\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438\u0437 \u043f\u043e\u0447\u0432\u044b. <\/p>\n<ul>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 1. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 2. \u0423\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0438 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 3. \u041e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u041c\u0443\u0440\u0430<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 4. \u0411\u043e\u0440\u044c\u0431\u0430 \u043a\u043b\u0430\u043d\u043e\u0432<\/p>\n<\/li>\n<\/ul>\n<h2>\u0427\u0430\u0441\u0442\u044c 1. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430<\/h2>\n<p><strong>\u041c\u0438\u0446\u0435\u043b\u0438\u0439<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0441\u0435\u0442\u044c\u044e (\u0433\u0440\u0430\u0444\u043e\u043c) \u0438\u0437 \u0443\u0437\u043b\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0441\u0442\u0451\u0442, \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u044f \u043f\u0438\u0442\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0430 \u0438\u0437 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0435\u0439 \u0441\u0440\u0435\u0434\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u043c \u043a\u043b\u0435\u0442\u043a\u0430\u043c, \u0435\u0441\u043b\u0438 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c \u0433\u0435\u043d\u043e\u043c\u0430 (\u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c, \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u043a\u0430 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e).<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"python\">class Mycelium:     def __init__(self, x, y):         self.nodes = [(x, y)]  # \u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0443\u0437\u043b\u043e\u0432         self.energy = 100      # \u042d\u043d\u0435\u0440\u0433\u0438\u044f \u0434\u043b\u044f \u0440\u043e\u0441\u0442\u0430         self.age = 0      def grow(self, environment):         # \u041b\u043e\u0433\u0438\u043a\u0430 \u0440\u043e\u0441\u0442\u0430 \u043c\u0438\u0446\u0435\u043b\u0438\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u0433\u0435\u043d\u043e\u043c\u0430         new_nodes = []         for x, y in self.nodes:             if self.energy &gt; 0:                 neighbors = get_neighbors(x, y)  # \u0421\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u043a\u043b\u0435\u0442\u043a\u0438                 for nx, ny in neighbors:                     if environment[nx][ny].resources &gt; 0:                         self.nodes.append((nx, ny))                         environment[nx][ny].resources -= 1                         self.energy -= 1         self.age += 1<\/code><\/pre>\n<p><strong>\u041e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0430\u044f \u0441\u0440\u0435\u0434\u0430<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u0441\u0435\u0442\u043a\u0430 \u043a\u043b\u0435\u0442\u043e\u043a, \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b: \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0441\u0432\u0435\u0442, \u0432\u043b\u0430\u0436\u043d\u043e\u0441\u0442\u044c \u0438 \u0442. \u0434. (\u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b);<\/p>\n<\/li>\n<li>\n<p>\u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0430\u043a\u043e\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043f\u043e\u0447\u0432\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043c\u0435\u0440\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u043c\u0438\u0446\u0435\u043b\u0438\u0435\u043c.<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"python\">class Environment:     def __init__(self, width, height):         self.grid = [[Cell(random.randint(50, 150)) for _ in range(width)] for _ in range(height)]         self.width = width         self.height = height  class Cell:     def __init__(self, resources):         self.resources = resources<\/code><\/pre>\n<p><strong>\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 p5py<\/strong>:<\/p>\n<pre><code class=\"python\">def setup():     global environment, mycelia     size(800, 800)     environment = Environment(100, 100)     mycelium = Mycelium(5, 5)  # \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u0432 \u0446\u0435\u043d\u0442\u0440\u0435  def draw():     global environment, mycelium     background(0)  # \u0427\u0435\u0440\u043d\u044b\u0439 \u0444\u043e\u043d     environment.display()  # \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c \u0441\u0440\u0435\u0434\u0443     mycelium.grow(environment)  # \u0420\u043e\u0441\u0442 \u043c\u0438\u0446\u0435\u043b\u0438\u044f     mycelium.display()  # \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u0438\u0446\u0435\u043b\u0438\u044f<\/code><\/pre>\n<h2>\u0421\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0432\u0441\u0451 \u0432 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043e\u0434<\/h2>\n<p>\u0421 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0432\u0441\u0451 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043d\u043e \u043a\u0430\u043a \u0431\u044b \u044d\u0442\u043e \u0432\u0441\u0451 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c? \u0421 \u0447\u0435\u0433\u043e \u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c? \u0411\u044b\u043b\u043e \u0431\u044b \u0437\u0434\u043e\u0440\u043e\u0432\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u0432 \u0432\u0438\u0434\u0435 \u0442\u043e\u043d\u043a\u0438\u0445 \u043d\u0438\u0442\u0435\u0439, \u043f\u0440\u043e\u0440\u0430\u0441\u0442\u0430\u044e\u0449\u0438\u0445 \u0432 \u0441\u0440\u0435\u0434\u0435.<\/p>\n<p><strong>\u041c\u0438\u0446\u0435\u043b\u0438\u0439.<\/strong> \u0411\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u044b\u0435, \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u044e\u0449\u0438\u0435 \u0443\u0437\u043b\u044b \u043c\u0438\u0446\u0435\u043b\u0438\u044f. \u041a\u0430\u0436\u0434\u044b\u0439 \u0443\u0437\u0435\u043b \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u043c\u0438, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0441\u0435\u0442\u044c.<\/p>\n<pre><code class=\"python\">self.links = []  # \u0421\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0443\u0437\u043b\u0430\u043c\u0438<\/code><\/pre>\n<p>\u0418 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c:<\/p>\n<pre><code class=\"python\">def display(self):     stroke(200, 150)  # \u0411\u0435\u043b\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0441 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e     stroke_weight(1)     for (x1, y1), (x2, y2) in self.links:         line(x1 * 80 + 40, y1 * 80 + 40, x2 * 80 + 40, y2 * 80 + 40)<\/code><\/pre>\n<blockquote>\n<p>\u0414\u0430, \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043b\u0438\u043d\u0438\u0439, \u043f\u0440\u043e\u0441\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c. \u0415\u0441\u043b\u0438 \u043d\u0430\u043c \u0432\u0441\u0451 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0433\u0438\u0444\u043e\u0432 (\u043d\u0438\u0442\u0435\u0439 \u043c\u0438\u0446\u0435\u043b\u0438\u044f), \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0445 \u0432 \u0432\u0438\u0434\u0435 \u0433\u0440\u0430\u0444\u0430 \u2014 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0441\u0442\u0432 \u0441 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043d\u0446\u043e\u0432 \u043c\u0438\u0446\u0435\u043b\u0438\u044f.<\/p>\n<\/blockquote>\n<p><strong>\u0421\u0440\u0435\u0434\u0430.<\/strong> \u041e\u0442\u0440\u0438\u0441\u0443\u0435\u043c \u0435\u0451 \u0432 \u0432\u0438\u0434\u0435 \u0442\u0435\u043f\u043b\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b, \u0433\u0434\u0435 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0446\u0432\u0435\u0442\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.<\/p>\n<pre><code class=\"python\">def display(self):     for x in range(self.width):         for y in range(self.height):             cell = self.grid[x][y]             fill(0, cell.resources, 0, 100)  # \u0417\u0435\u043b\u0435\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432             no_stroke()             rect(x * 80, y * 80, 80, 80)<\/code><\/pre>\n<p>\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0432\u0441\u0451 \u0432\u043c\u0435\u0441\u0442\u0435 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/336\/82d\/add\/33682dadd5cbec82c003bd09dc3cb6af.png\" alt=\"image\" title=\"\" width=\"1600\" height=\"1600\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/336\/82d\/add\/33682dadd5cbec82c003bd09dc3cb6af.png\"\/><\/figure>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk+IArhQBQCU++AxgDZkDOvUALKIOAUy4p6EAFz4o8qFVHAoAfVUoKKLOqa9xwADRQAHscQtZC61H1dgAOgpglAgLxQA2kzNQLAXTkbeTtHCQoAa3cvf3kAYihAQhBAJhBAeRBAdhBADhAoQB4QQFYQQDYQQBYQQGEQKBL0wG4QQAYQHMyg4NCHUQpREABzZA8ARgAGXoabJrJ20SgPAcGlFXbwAHc9A2MWgDcUcAoIFqxLQetWudVnV3GYvYVgTFNzVApbAycXUV4rYJsUFSaWts6oAB4Jq83m8OGAKFhNPRROdgq0UO0ABYAI0w0VGOjhiJRIF4PnMywoaw2W3BDjmKCoWARBKJYJJWAcCNE8IRO3iUEA+CCAPhBKiVAOIg1TyOSggEEQLkivJFQC8IJk8lBAFwglTygCEQeX1YHWS4gKAUXwUZCaHXMrGooEa6wfKCrdZ07YOWYUzy6-xOxD+BwgZ5geggMQCAB8UF6UEoVCgTF1xn1LB1YBwhqax2eZvNjQeSd4DjIMBgLSoTAjeosbFTGqa4SiWZzeYLeL8LGMhajxZjUASgBQQLmARhBqslKqkhaK0ulADIgMNLVsJNs2dodVCdJhd+vdnt43t9zygAFoeuPS19Wh1kDuoN1x8NRlAANS7qbKRQoXgwHiIRb2XbA3hYcARURMABM-TGN0cC9K2CSAIggeSVIA0iBypUmQytkIpQIA-CCAAIgXLpOh1R8lK4rKiOgByIOe35gL+qhzMarJMN0JZvFq4YmN05h0Y2Jj-uY-4xgmDwVi8e4KOEf7MXgUAABzBleUAACy9KxYmSdesnyaY-6KVJKlcRpylyWwnA8PwUAAKJTsS2xmtMagaFoOiqG+RhQOSlLUlATIsjsKYKE0c6nJ4ngAMLiFwTDkNQkAeqGmhYEwqmAWBMaMaotykJQoxMM5VIsLESUpWF6XuYiOyBJ+DyZQipzleeDyFaypy1Vg7DWFZVCPs+ZCvqEH4MVcJh5Wlf5NOV3XmoxBp3Plg01dRnmCcEYhcFwpw+SAjqLp4bpzTYwAoItsXGAtXAel6Pp+sYql9GB7KAOgg0F5FKMGAJwgUCAGIgyQqlAyRQOkvaZCKmQ5AR2RcsqUDoXkIolOhYrJFt+xgKoX4-n+9ETqQogcDFfW4BJqnIDjknGITuP6dwfACEFi2Wfe6iaNouihMYq7rn6I1DA8zOnZuHicxuvDsFZ6JHNR2K4r4iDGOVxgNWzmLIqifklRcVxUL4VDjV4TBbixQYNuGOtgY2qna3r+2ntlXnyJGOpdKYymqzc0nq+OlrBgCOp9X8TkUlSIbUEG-wePq-xuTNls2HLotVrm1AFtb0ao+jWA+nckeouwCSAMgglTdtUlQjg9cqoXk4P5FKhf4Na5ngqcAByYLQhAIjiJI0AePXrQC-e+jJzArBmu0XBgEiZBLVXtrgsYTcLa3gy8CgABef6SapK+J+PM41x4pm0pvMV9MBYGDNPLdSKcwgz1ITBwMYcDgUkWFFIKwp1C90GZM9X1v1Kyrg13KhUHIAsNmg9h6j0nLvekU9m4SCkIMEeHAIizG9LHK6bYoCAHIQEuD1nqABEQLkUpBgb3pA4VqT4XysHZIAPBBlTdhwgUZ+opwalGPjA1u9p5hMGIdse+gACEAIrkTIb8EKpFYZfCApC2oUPvjQuh1QCj3VlII4RmRRFAA\">\u041a\u043e\u0434<\/a><\/p>\n<blockquote>\n<p>\u0412\u0440\u043e\u0434\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433 \u0443\u0434\u0430\u043b\u0441\u044f (\u0445\u043e\u0442\u044f \u0435\u0441\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u0442\u044c). \u0415\u0441\u0442\u044c \u0437\u0435\u043c\u043b\u044f \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u0440\u0430\u0441\u0442\u0451\u0442. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u0434 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u0432\u044b\u0448\u0435 \u043f\u0440\u044f\u043c\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0410 \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u043f\u043e\u0442\u043e\u043c \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044e: \u0440\u0430\u0437\u043c\u0435\u0440 \u044d\u043a\u0440\u0430\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0430 \u044f\u0447\u0435\u0439\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043c\u0435\u043d\u044c\u0448\u0435.<\/p>\n<\/blockquote>\n<h2>\u0410\u043d\u0438\u043c\u0430\u0442\u043e\u0440\u044b, \u0432\u0430\u0448 \u0432\u044b\u0445\u043e\u0434!<\/h2>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u0434 \u0432\u0435\u0441\u0435\u043b\u043e, \u043d\u043e \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u0440\u043e\u0441 \u043d\u0435 \u0441\u043a\u0430\u0447\u043a\u043e\u043c, \u0430 \u043f\u043b\u0430\u0432\u043d\u043e. \u0410\u043d\u0438\u043c\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439: \u0434\u043e\u0431\u0430\u0432\u0438\u043c <code>return<\/code> \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0440\u043e\u0441\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u0437\u0430 \u043e\u0434\u0438\u043d \u0445\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0443\u0437\u0435\u043b. \u041d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e, \u043d\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0432\u0441\u0451 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c.<\/p>\n<pre><code class=\"python\">def grow(self, environment):     if self.energy &lt;= 0:         return  # \u0415\u0441\u043b\u0438 \u044d\u043d\u0435\u0440\u0433\u0438\u044f \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c, \u0432\u044b\u0445\u043e\u0434\u0438\u043c          # \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0443\u0437\u0435\u043b \u0437\u0430 \u0432\u044b\u0437\u043e\u0432     for (x, y) in self.nodes:         neighbors = get_neighbors(x, y, environment.width, environment.height)         for nx, ny in neighbors:             if environment.grid[nx][ny].resources &gt; 40 and (nx, ny) not in self.nodes:                 self.nodes.append((nx, ny))                 self.links.append(((x, y), (nx, ny)))                 environment.grid[nx][ny].resources -= 1                 self.energy -= 1                 return  # \u0412\u044b\u0445\u043e\u0434\u0438\u043c \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430     self.age += 1<\/code><\/pre>\n<blockquote>\n<p>\u0414\u0430, \u0442\u0443\u0442 \u043d\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043a\u0430 \u0447\u0442\u043e, \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u043d\u043e\u0432\u043e \u043f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u043c \u043f\u043e \u0432\u0441\u0435\u043c \u0443\u0437\u043b\u0430\u043c. \u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0448\u0430\u0433\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433, \u0430 \u043f\u043e\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u2014 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043e\u043d\u0430 \u043d\u0430\u043c \u0438\u043b\u0438 \u043d\u0435\u0442. \u0425\u043e\u0442\u044f \u044d\u0442\u0430 \u043d\u0435\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438 \u0444\u0438\u0447\u0435\u0439, \u0435\u0441\u043b\u0438 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u043d\u043e\u0432\u043e \u043f\u0435\u0440\u0435\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0443\u0437\u043b\u044b.<\/p>\n<\/blockquote>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0449\u0451 \u0442\u043e\u0447\u043a\u0438 \u043d\u0430 \u043a\u043e\u043d\u0446\u0430\u0445 \u0441\u0432\u044f\u0437\u0435\u0439, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0434\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438.<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5c9\/ec8\/814\/5c9ec881491d2d8101e09ae1c6d85d0c.gif\" alt=\"image\" title=\"\u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u043a\u0430\u043a \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u043e\u0433\u0438\u0431\u0430\u0435\u0442 \u0441\u043b\u0435\u0432\u0430 \u0431\u0435\u0434\u043d\u0443\u044e \u043d\u0430 \u0443\u0434\u043e\u0431\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0447\u0432\u0443.\" width=\"320\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5c9\/ec8\/814\/5c9ec881491d2d8101e09ae1c6d85d0c.gif\"\/><\/p>\n<div><figcaption><em>\u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u043a\u0430\u043a \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u043e\u0433\u0438\u0431\u0430\u0435\u0442 \u0441\u043b\u0435\u0432\u0430 \u0431\u0435\u0434\u043d\u0443\u044e \u043d\u0430 \u0443\u0434\u043e\u0431\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0447\u0432\u0443.<\/em><\/figcaption><\/div>\n<\/figure>\n<blockquote>\n<p>\u041f\u043e\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435, \u043a\u0430\u043a \u0443 \u0432\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0442\u0438 \u043c\u0438\u0446\u0435\u043b\u0438\u0439?<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAxgDZkDOvUALKIOAUy4oGEAFz4o8qFVHAoAfVUoKKLOua9xwADRQAHscStZC61H1dgAOgpglAgLxQA2szNQLAXTkbeTtHCQoAa3cvQOCQgwdRClEQAHNkDwAmTIAGIODQhzJU0SgPPLjbBN4UAC9SjwAOPPzFZShU8AB3PQNjJIA3FHAKCCSsS1brFBVCpJT0qAAecqtKhRBRLAYQCnkAYihAVBBAQRBAbhBADhAoQFkQQF4QQFYQQAEQQGYQC8B5EChAdhBABhBALhBAPhBboBxEAuZ2+J0AMiDGQBMIIBpEEAoiD-QAsIBdADwgUwUGPkyS6qmcrjKMSxUEOgDwQQCMII9vuTvoAhEFh0O+91RUFp-zOEIBUGRF1uUEAwiCfe5nL7fKBwz7-aHE4CYKA+cysVB7Qr40S8NbrKDJFCpAAWACNMNESjodfqjSBeAq-P0KEMRmMKFgHF0UFQsHq7Q6wKNxg49aJdXqJsTrLKQNrfBRkJptUGLcbNVqFDMoINhr6nS7Ou7PBQTP584h-A5NrwwDsxAIAHxQAAsOSglCo8oLxhjSucODjqpc6uTKZsfdcRRgMCSVGYzHb2os7CHlUK4SiY4n1GnNosxhn0fnC8XwQzjv9uao+cLxdL5crIGrUAAtB4AIxhlNzZJpZBPqCvw-BTZtl2A4oEAJBAER5FlAH4Qf5znublKWpf5aV+K5kVuf5nn+AVPjBYlCmKUoAGoXzoawlBUKgUF4GAeEQXp7EmJcsHACJRGYXIcmMZ84ByA8ChYsA2NULoExDZhn34mwI3lExn3MSSdxMTJzEyJVewSFcNTfEJBOE0TgywZgAGYpMqOTVComi6MJOS8CqewHBqeooCIhzHGc0oAHooEyHS-GfSzqNosgMgC+zCk81z3KcupvN8-zlKC6zQtszIIuqOLosirKfL8odEEyZKQrCwqMscqK3Jyly8v88J2IsqySoU4q6OMJKmravwis60KzLiXg9NEESxKM58+P8jBNCMxrgq6xBAt6ixJrAaafB6ubQtU1q+s4Hh+CgABRe1Mz9Z1kwotQNC0HRVAYowoDdD0vSgQNDKYgaEjPQlPE8ABhcQuGYchqEgMsWzWrjfJyPilRk1RlVISgSmYJ7PVYfwoHhxGQZRt79QmWJPsctG9UJUn8ISfGQ0JamsEpiqsqaFpyPaJb7o+4IZJMHHkfYwpSc59YZNjPZcf5qnRqFocxC4LhCUKM9PEvEt-PDFA5eYKHZa4Mt1VvatjCh8aJv-bUwFUQbWPY-qtU2DgZvKjy4vMJ3YvqYxqtET3Mvqdh8G4PgBABuWLvadRNG0XRQmMG8q3VaWFEKOO73VQkU+rOhLtNPExMta1fEQYxSeMOmhfNQ1jR+on5BkqhfCoUWvGYB95KgPidzbjv5Sh1vWB3Y2McHBRZxjWzovr123Mb4k0ybFYo2WR73U9ZtqHb5YPDHpZXtG4fggr-O10nadR-nVpAJ2PZD+NOhDkAZBAzn+GkOVuWF4Kgp5mXuW43-ufBjxZnGISAAcr6UQ+AIAiHEJIaAHgwHJCzu0fQ2wYBsGTKkLgYADRkHloAs6WBjBQNlrA1onlmDNChpQqS+DsyEmOj6AhEljamwUMQmBUhCTCBIVIZgcBjBwCVCSKAgBCEH+J8JETIWSoguIAMRBhQXEAJwg4ooDyNuLSR4-98CXSoOQHoQtMHYNwemE6J5nREOgRIKQrQcEcAiJ0SsG5WHyFof6dmUl2FWIgA4BxPRXHOiEYcQABCCwVpFAGR8jLhvGMM-KkNJ6SMmZNyFEfJBTClaJ42BDh3FAA\">\u041a\u043e\u0434<\/a><\/p>\n<p>\u0410 \u0435\u0449\u0451 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u0438\u043c\u0430\u0442\u044c \u0443 \u0437\u0435\u043c\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u0440\u0438 \u0440\u043e\u0441\u0442\u0435:<\/p>\n<pre><code class=\"python\">environment.grid[nx][ny].resources -= 80<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u2014 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432 \u043f\u043e\u0447\u0432\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044e\u0442\u0441\u044f, \u0437\u0435\u043c\u043b\u044f \u0442\u0435\u043c\u043d\u0435\u0435\u0442, \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043c\u0438\u0440:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2d5\/12f\/e49\/2d512fe49fa58770b74c08996c4cf71d.gif\" alt=\"image\" title=\"\" width=\"320\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/2d5\/12f\/e49\/2d512fe49fa58770b74c08996c4cf71d.gif\"\/><\/figure>\n<h2>\u0427\u0430\u0441\u0442\u044c 2. \u0423\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0438 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433<\/h2>\n<p>\u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0447\u0438\u0441\u0435\u043b. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u044b\u043d\u0435\u0441\u0435\u043c \u0432 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0445\u043e\u0442\u044f \u0431\u044b \u0440\u0430\u0437\u043c\u0435\u0440 \u044f\u0447\u0435\u0439\u043a\u0438:<\/p>\n<pre><code class=\"python\"># \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b CELL_SIZE = 20  # \u0420\u0430\u0437\u043c\u0435\u0440 \u044f\u0447\u0435\u0439\u043a\u0438<\/code><\/pre>\n<p>\u0418 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044f\u0447\u0435\u0435\u043a \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 \u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043b\u043e\u0441\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0448\u0438\u0440\u0438\u043d\u044b \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u044f\u0447\u0435\u0439\u043a\u0438:<\/p>\n<pre><code class=\"python\">class Environment:     def __init__(self):         self.width = width \/\/ CELL_SIZE  # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044f\u0447\u0435\u0435\u043a \u043f\u043e \u0448\u0438\u0440\u0438\u043d\u0435         self.height = height \/\/ CELL_SIZE  # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044f\u0447\u0435\u0435\u043a \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u044f\u0447\u0435\u0439\u043a\u0438. \u041c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0438\u0440 \u043f\u043e\u0431\u043e\u043b\u044c\u0448\u0435:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d90\/781\/9c2\/d907819c2b99de43121e40ad6fa67886.gif\" alt=\"image\" title=\"\" width=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d90\/781\/9c2\/d907819c2b99de43121e40ad6fa67886.gif\"\/><\/figure>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAxFIFgggfCCC8IIEEQQEIggBhB+wwNIg+AMIBRADIKA+gGUAkgC05UALxQATAAYoULoAIQUYHYQQDwggVhBAAiBRA8iCBxEDuBOEEBcIIA4QOgGMAGzIAZxCoAFlEfwBTQJQGCAAufFNTKhjgKGVlFAoULBzmELjgABooAA8KxFYUtIaoEsDgADoKMAzw-QBtZmqoWoBdVMbTZrb4igBrbqgekbHx0taYihiQAHNkfQNjUbGJ1rJNmL0oIwPGo5CUAC8z-XklNS05OgaMrM3wAHdi0oVNYANxQ4AoEDWWDqVwaKCyRzWG22UAAPPojPUlg0QDEsAwQBRTFxAKgggkA3CA+KCAWRB+I5AMwgPmcUCsoi8AlcPnJokEgBkQCqAJhBJIBREF4gBYQHw2WFpaWmda-ZQdLrnBaysxQQB4IIBGEAcoi1oikAtEdhsUGEvHJvPZUHFPn4UEAwiBWOzklmiKBCqy8AVq4CYKD9GqsVBEo5KmIhLHYuUxFCbAAWACNMHNToV1nGkynA4MgRRQeDIRQsK1figqFh43mC2AIVDWvHYwnoWqGn6QFAKAMKMg8p2m1mQJHW0t4VAQWDa0WSz9yz0u0N54ghq1cSEwATYuEAHxQAAsJkoVADXYqPeDHRwfbDnQjUej2JvXWOMBgayozGYp87tXYD4fRxTLML5vtQn45rUFRft2v5-v+2IToW9azlQ86VIuPYrmuG4gFuUAALT6AAHJc8GPisSJbMghFQAAjCOD64vihLElAgBIICKtqmoA-CC8BSdg2jqeq8MIvg2mK-C8PSvCOlY3JqkcJxnAA1Po9FXF8UBUCgIQwMEiAAi0MKPlg4DTDEzDGEYFS0XARhwYcplgOZyi-AOWDMLRDmNO2AaVLRNReVBlQGDUBjBteKxAcO8EhE5LluZmHkAMzedi-nKNpun6ec-l4E0Ky3A8UDKQVLStEVZwAPSGAxgy0ZlOl6WQOz1flNz3CpZVtJVUA1QYdUhY12UtblBjtYVnUld1FVTf1dWIAYw3Na1i0TeVvWlR1xXzfBUwWRlWUrYFy36RUQ1HWdgxLZdLXsPgQShOEcj5pOdbFvemk5HkBRFBMxlLEcZYVvG5zA5WfU1c8KgaNorF8JS7giAKMluHYdheFAvFQIAEiA+A4dp2ApKyNkl5yk82kNQNDrxw+qCM+Ejwgoy47gY1jMlCoIIlE+R5UoSqPQyHEgTMOQ1CQKuR55B51mGEY9nBr5yghqQlCnIZbQU-G0JDFAyuq+LGtA+WlasCMGmZFpTX6ZrANjL5lSG+rFkmyD9vRr5vZEkbrsk+5HvwbEgSBOcRwoT06E9MudVtigIfMHLweBKuEY4VuFRy7RCtpf+HTKHFZkWbnjExP4HlO7g1OKDDbw1PlNOw3IFSN3X1cvE392PWE1Mi59VvffkhTKJrFTYZuEaB2kRzj7hEbnLPW50JpaaKgOyZDhBFTg1WUDa9C94ZgmG9zKqbb+lQAxUN78zMPhAUXKwUEP-ZUFy-fT8Bln5v3g0349rlaal966lWvmqMcJh0SdidqiKAO8oBHguGifQADYH71-ksI+g4QggXfJ+f+v4rhMQJESLBJ9OBQEAMgg5JeD6ktPwSQAluKOBNHYfgDCiaISnFCc4AA5WsMR8AQGiHEBI0B9D8PWMvK2JR8QwDYPeTYgQwCJjIKHLh70sAVGEcHMRVxKrMBInLIx3kNHTnOC9Gsmi2BXB0aIxI5woi6MSMwMx9Z4FVX6tWN604GzuSpuFVigBCEF4FYMUxpTQ2B8IAMRAXQ+A8B6KAsSJAOCJvgTSVByD-A9kolRajxyvSQsWbRIj4iJCuKo-w0wfgbjAvZK4bjiytFugZbydiykQFaDU-4jToSsXMHxYQUAomxMpM4CotDdT6kNBE8SdpZIulsaUsRzSbYtTYEAA\">\u041a\u043e\u0434<\/a><\/p>\n<p>\u0414\u0430\u0436\u0435 \u0442\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432 \u043a\u043b\u0435\u0442\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u0440\u043e\u0441. \u041f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0431\u043e\u0433\u0430\u0442\u0443\u044e \u043f\u043e\u0447\u0432\u0443 (\u0431\u044b\u043b\u043e <code>40<\/code>, \u0441\u0442\u0430\u043b\u043e <code>100<\/code>):<\/p>\n<pre><code class=\"python\">if environment.grid[nx][ny].resources &gt; 100<\/code><\/pre>\n<p>\u041c\u0438\u0446\u0435\u043b\u0438\u0439 \u0440\u0430\u0441\u0442\u0451\u0442 \u0443\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435, \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0447\u0443\u0434\u043b\u0438\u0432\u043e \u043e\u0433\u0438\u0431\u0430\u0435\u0442 \u0431\u0435\u0434\u043d\u0443\u044e \u043f\u043e\u0447\u0432\u0443:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/05e\/0cf\/4c5\/05e0cf4c5aed6d9d2341ab5b2487e027.gif\" alt=\"image\" title=\"\" width=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/05e\/0cf\/4c5\/05e0cf4c5aed6d9d2341ab5b2487e027.gif\"\/><\/figure>\n<h2>\u0423\u0441\u043a\u043e\u0440\u044f\u0435\u043c\u0441\u044f<\/h2>\n<p>\u041d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e. \u041d\u0430\u0438\u0432\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u043e\u0441\u0442\u0430 \u043d\u0430\u043c \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442. \u041d\u0443\u0436\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0438 \u0440\u0430\u0441\u0447\u0451\u0442 \u043d\u043e\u0432\u044b\u0445 \u0443\u0437\u043b\u043e\u0432 \u043c\u0438\u0446\u0435\u043b\u0438\u044f. 20 FPS \u0432 \u043d\u0430\u0447\u0430\u043b\u0435, \u043f\u043b\u0430\u0432\u043d\u043e \u043f\u0430\u0434\u0430\u0435\u0442 \u0434\u043e 5 FPS, \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 15 FPS. \u041c\u0435\u0434\u043b\u0435\u043d\u043d\u043e.<\/p>\n<h2>\u041f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433<\/h2>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431: \u0431\u0443\u0434\u0435\u043c \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u0441\u044f\u0442\u044b\u0439 \u043a\u0430\u0434\u0440. \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0440\u0435\u0434\u043a\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u043d\u043e \u044d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"python\">if frame_count % 10 == 0:     background(0)     environment.display()<\/code><\/pre>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAxFIFgggfCCC8IIEEQQEIggBhB+wwNIg+AMIBRADIKA+gGUAkgC05UALxQATAAYoULoAIQUYHYQQDwggVhBAAiBRA8iCBxEDuBOEEBcIIA4QOgGMAGzIAZxCoAFlEfwBTQJQGCAAufFNTKhjgKGVlFAoULBzmELjgABooAA8KxFYUtIaoEsDgADoKMAzw-QBtZmqoWoBdVMbTZrb4igBrbqgekbHx0taYihiQAHNkfQNjUbGJ1rJNmL0oIwPGo5CUAC8z-XklNS0dJboGjKzN8AB3YqlCprABuKHAFAgaywdSuDRQWSOaw22ygAB59EZ6ksGiAYlgGCAKKYuIBUEEEgG4QHxQQCyIPxHIBmEB8zigVlEXgErh8FNEgkAMiAVQBMIJJAKIgvEALCA+GxwtIy0zrP7KDpdc4LOVmKCAPBBAIwgDlE2tEUkFojsNigwl4FL5HKgEp8-CggGEQKx2Cms0RQYVWXiC9XATBQfo1VioYlHZUxELYnHymIoTYACwARpg5qdCut48nU0HBsCKGCIVCKFhWn8UFQsAn84WwJDoa0E3HEzD1Q1-SAoBQBhRkHku83syAo22lgioKDwXXi6XfhWet2hgvEENWniQmBCbFwgA+KAAFhMlCoge7FV7IY6OH74c6kejMZxt66xxgMDWVGYzDPXdq7Efj5HFMsyvu+1BfrmtQVN+PZ-v+AE4pORYNnOVALpUS69qu66biA25QAAtPoAAclwIU+KzIlsyBEVAACMo6PniBJEiSUCAEggop2magD8ILwlJ2Laur6rwwi+La4r8LwDK8E6Vg8uqRwnGcADU+gMVc3xQFQKAhDAwSIICLSwk+WDgNMMTMMYRgVHRcBGPBhxmWAFnKH8g5YMwdGOY0HaBpUdE1N50GVAYNQGCGN4rMBI4ISEzmue5WaeQAzD5OIBcoOl6QZ5wBXgTQrLcDxQCphUtK0xVnAA9IYjGDHRWW6fpZA7A1BU3PcqnlW0VVQLVBj1aFTU5a1eUGB1RVdaVPWVdNA31YgBgjS1bVLZNFV9WVnUlQtCFTJZmXZatQUrQZFTDcd52DMtV2tew+BBKE4RyAWU71iWD5aTkeQFEUEwmUsRzlpWCbnCDVb9bVzwqBo2hsXwVLuCIgqyW4dh2F4UB8VAgASID4Dj2nYikrE2yXnGTLZQ1AMOvPDGqIz4yPCKjLjuJj2OycKgiicTFEVahqo9DIcSBMw5DUJAa7Hnknk2YYRgOSGfnKKGpCUKcRltJTCYwkMUAq2rEua8DFZVqwIyaZk2nNQZWuA2MfmVEbGuWaboMOzGfl9sSxtu6THmewhsSBIE5xHKhPQYT0K71e2KCh8w8sh4Ea6Rrh24VPLdGK+lAEdMo8XmZZedMTE-iec7uA04osNvDUBW03DcgVE39c1y8zcPU9YQ06LX3Wz9+SFMoWsVDhW6RkHaRHBPeGRucc-bnQWnpkqg4psOkEVBD1ZQDrMIPpmiab3MartgGVADFQPvzMwBGBRcrDQY-DnQfLD-P4G2cWw+DQ-r2PKM0r4NzKjfdU44TAYi7M7NEUBd5QGPBcdE+hAFwIPn-JYx8hwhFAh+L8AC-xXGYoSYk2DT6cCgIAZBAKS8ANFafgkhBI8UcKaOw-BGHEyQtOaE5wABydYYj4AgNEOICRoD6AEesFe1sSgEhgGwB8mxAhgCTGQMO3CPpYAqCIkO4irhVWYKReWxifKaJnOcV6tYtFsCuLosRiRzhRD0YkZg5iGwIOqgNGs70ZyNg8tTCKbFACEILwKw4oTRmhsD4QAYiCuh8B4T0UA4kSAcMTfAWkqDkABJ7ZRqj1ETjeshEsOjRHxESFcccoAyBQmUP4TcJYoAAFJ6ImF0JiTBpg1H+GmL8Bpn4HLqncSWVod1DI+XseUiArQ+kAmGTCNi5h+LCCgNEuJVJnAVDoXqA0RpIkSXtHJV0diyniNGbbVqtiGiFwTGAP4wAYAhDYEAA\">\u041a\u043e\u0434<\/a><\/p>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u0441 60 FPS, \u0437\u0430\u0442\u0435\u043c \u0441\u043d\u043e\u0432\u0430 \u043f\u0430\u0434\u0430\u0435\u0442 \u0434\u043e 5 FPS \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 30 FPS. \u042d\u0442\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435. <\/p>\n<h2>\u0412\u0442\u043e\u0440\u043e\u0439 \u0448\u0430\u0433. \u041f\u043e\u0438\u0441\u043a \u0432 \u0448\u0438\u0440\u0438\u043d\u0443<\/h2>\n<p>\u0412\u0441\u0435 \u043d\u043e\u0432\u044b\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0443\u0437\u043b\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432 <code>nodes<\/code>. \u0427\u0442\u043e\u0431\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u0439, \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0443\u0437\u0435\u043b \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c. \u0410 \u0440\u0430\u0437 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043c\u044b \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0443\u0437\u043b\u0430 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439:<\/p>\n<pre><code class=\"python\">self.current_index = 0  # \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 nodes<\/code><\/pre>\n<p>\u0417\u0430\u043c\u0435\u043d\u0438\u043c \u043d\u0430\u0448 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0430\u043b\u044f\u043f\u043e\u0432\u0430\u0442\u044b\u0439 \u0446\u0438\u043a\u043b <code>for<\/code> \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 <code>brake<\/code>:<\/p>\n<pre><code class=\"python\">for (x, y) in self.nodes:<\/code><\/pre>\n<p>\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0443\u0437\u043b\u0430:<\/p>\n<pre><code class=\"python\">x, y = self.nodes[self.current_index]  # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0443\u0437\u0435\u043b \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443 self.current_index += 1  # \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0438\u043d\u0434\u0435\u043a\u0441 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0443\u0437\u043b\u0430<\/code><\/pre>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAxFIFgggfCCC8IIEEQQEIggBhB+wwNIg+AMIBRADIKA+gGUAkgC05UALxQATAAYoULoAIQUYHYQQDwggVhBAAiBRA8iCBxEDuBOEEBcIIA4QOgGMAGzIAZxCoAFlEfwBTQJQGCAAufFNTKhjgKGVlFAoULBzmELjgABooAA8KxFYUtIaoEsDgADoKMAzw-QBtZmqoWoBdVMbTZrb4igBrbqgekbHx0taYihiQAHNkfQNjUbGJ1rJNmL0oIwPGo5CUAC8z-XklNS0dJauGo-8GEBA1wp5DKVc4mMxQQBEIHYvIBhEEAkiA+DxQHz8QAsINDBFBAEwgUBsokEgh8WLsUA6XU+aSuGSym3AAHdiqUKmsAG4ocAUCAAuoU0woLJHNYbbZQAA8+iM9SWDX+WF+FFMXEAqCCCQDcID4oIBZEH4jkAzCA+ZxQKyiLwCVw+VX4wAyIBUsZJAKIgvFRPhsvKgbvWdOUZJicwWbq4gDwQQCMIA5RMHRFIsaI7DYoMJeKqraaoE6UVAYVY7KqjaJsZIrLwcR9pQMdk0Vj6Qj1vr9-hRAdQYpUhoqoIB8EETMNcMbjmezUEA-CC8ZFojEwt21v4A3JNkEAan0AEY24BiEGJ6vN0djo-RXkxqNVht4ofDvGEvigarsqJhgDkQOF2XUjzOW6UemIoTYACwARpg5lOQp1i-P8AP6GpmQoNkOS5BtWjpFAqCwb8oJgsBOQBVpv0-H8sHYaVgEwUkBgoZA8lJXCwJAEIpWlPkslZdkMLgrBWlpJCegoFsuMQIZWn+EIwF+WJwgAPigAAWExKCoKBmG4ioyNYUkwBwCijirOj6K+StOl9Y4YBgNYqGYBTSNqAidOuFYplmQzjOoMyIMGVgKnMpTLKs6y0iY2CsI4qguJ4sj+ME4SQFEqAAFp9AADkuHzdJaVZ1i2ZBYqgJdJxWE4zkXLK6AaakoCoFAQhgYJEEZFoeWlEIsHAaYYmYYwjAqJc4CMbzrkasBmuUOkqKwZglx6hoiJAeTKiXGoxvcyoDBqAwVI02y8lmbT6r6gahtAkaAGZxqWGblDKiqqvOGa8ArFLbgeKB51utp7rOAB6Qw3QaRAlzO8rKrIcsfpum57ny57WleqAPoML60kWv6LsBq6DBBlYoae0GHphuHTEQAxEYBoHUdwCGMbJsHoc+nypha07zqJubCaqioEYZlnBgJ9nAfYfAglCcI5Gg5jMIbbSSpyPICiKCY6qWI5EOQ79zkVlDoY+54VA0bQ2z4Tc7BELERzcOxoSHEdAAkQHwHBROwcpSnD9vOR28PVqBNdeHXwT1nx3EN433DN4d80Ec87fqlZAvOHoehkOJAmYchqEgATZLyEb2sMIxupUybslQBUk9OGq2hd798NbPPlAL0hKGLhWkJQ1gRipTJSv+qqS7lsY85BCii5ahule7+i8-Iwu68HlYy-wrbrNiQJAnOI5Ap6Hi+NxxpgBQRfmEzhfAgE30ItEipM6XbPjp0jplAapqWqv+j-n8EaQVJj3tbkGobo-t4Kl-7Q-9FBazeLzfmYR3bx3Fm3SW+RCjKBLhUcKIlfQj2Sm0ZBkVfTnEwaJOgJUgLeiov+GiLlEAVFVqhKAM8R4gR-CQv0iw0h5yoAMKg495jMGirNC4bl5I8O6u5TO3C+F7w6s3OephFKknLAuUqZZHqlUQG6fkFwxT6G4mKKAlCoCyTUeKGRWiZ6SMaHQ6iIQHImTMtI5SPVZTykoqBBhnAoCAGQQVUJ5RBJn4JIEkg5HCxjsPwHxds-IsQBOcAAchhGI+AIDRDiAkaA+honrHwW3EocoYBsG0psQIYBfxkCXmE0WWAKjxIXkkq4r1mAJUznUnqJTWLnCFuhUpbArgVMSYkc4URKmJGYE0rCOi3owzQiLVi2FhpuxWm2QAhCC8CsKiXsuIfCADEQbMiJsRQA2RIBwdt8AlSoOQBkI88kFKKVAIZDZykJPiIkK4qjQBkC5MofwwkGxQAAKRZRMLoCUJjCn+GmLSD5plupumuWxbm1UepdPuRAdi9JBnC38g2FS4JzC8BEKsjZ6pnAVBPGGCMUYVlpn4BmLMqpOl3KSa0GFHSGi32-GAOkwAYAhDYEAA\">\u041a\u043e\u0434<\/a><\/p>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u0441 60 FPS \u0438 \u0434\u0430\u043b\u0435\u0435 \u043f\u043b\u0430\u0432\u043d\u043e \u043f\u0430\u0434\u0430\u0435\u0442 \u0434\u043e 30 FPS. \u0412\u043e\u0442, \u0443\u0436\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u043e.<\/p>\n<blockquote>\n<p>\u2014 \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u043a\u0438 \u044d\u0442\u043e\u043c\u0443 \u0433\u043e\u0441\u043f\u043e\u0434\u0438\u043d\u0443.<br \/>\u041d\u0430\u0448\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0432 \u0448\u0438\u0440\u0438\u043d\u0443 ( <a href=\"https:\/\/en.wikipedia.org\/wiki\/Breadth-first_search\">BFS<\/a>), \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c, \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0434\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0443\u0437\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b, \u043d\u043e \u0435\u0449\u0451 \u043d\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u044b. \u041d\u043e \u043d\u0430\u043c \u043f\u043e\u043a\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f. \u041c\u044b \u0432\u0435\u0434\u044c \u0438 \u0442\u0430\u043a \u043f\u043e\u0441\u043b\u043e\u0439\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435, \u043d\u043e \u043d\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0443\u0437\u043b\u044b.<\/p>\n<\/blockquote>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/09d\/db8\/b9b\/09ddb8b9bd9c04d505435ca33fb446e6.gif\" width=\"187\" height=\"175\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/09d\/db8\/b9b\/09ddb8b9bd9c04d505435ca33fb446e6.gif\"\/><\/figure>\n<blockquote>\n<p>\u0427\u0451\u0440\u043d\u044b\u0439 \u2014 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043e, \u0441\u0435\u0440\u044b\u0439: \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435.<br \/>\u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u043e\u0438\u0441\u043a \u0432 \u0448\u0438\u0440\u0438\u043d\u0443, \u0430 \u043d\u0435 \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0443 (DFS)? \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0433\u0440\u0438\u0431\u043d\u0438\u0446\u0435 \u043d\u0435 \u0432\u044b\u0433\u043e\u0434\u043d\u043e \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043c\u0438\u0440 \u043e\u0434\u043d\u0438\u043c \u043e\u0442\u0440\u043e\u0441\u0442\u043a\u043e\u043c, \u0435\u0441\u043b\u0438 \u0440\u044f\u0434\u043e\u043c \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u0422\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u0438\u0442\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0441\u0442\u0432 \u043e\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u0440\u043e\u0441\u0442\u043a\u0430 \u044f\u0432\u043d\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u043c \u0433\u0438\u0444\u0430\u043c.<\/p>\n<\/blockquote>\n<h2>\u0422\u0440\u0435\u0442\u0438\u0439 \u0448\u0430\u0433<\/h2>\n<p>\u0417\u0430\u043c\u0435\u043d\u0438\u043c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u0440\u0442\u0435\u0436\u0438:<\/p>\n<pre><code class=\"python\">self.links.append(((x, y), (nx, ny)))<\/code><\/pre>\n<p>\u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0434\u043b\u0438\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<pre><code class=\"python\">self.links.append((x * self.size + self.size \/ 2, y * self.size + self.size \/ 2, nx * self.size + self.size \/ 2, ny * self.size + self.size \/ 2))<\/code><\/pre>\n<p>\u0417\u0430\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0443 \u043d\u0430\u0441 \u0441\u0442\u0430\u043d\u0435\u0442 \u0441\u043e\u0432\u0441\u0435\u043c \u043a\u0440\u0430\u0442\u043a\u0438\u043c:<\/p>\n<pre><code class=\"python\">for l in self.links:     x1, y1, x2, y2 = l     line(x1, y1, x2, y2)<\/code><\/pre>\n<blockquote>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0442\u0430\u043a\u0443\u044e \u0437\u0430\u043c\u0435\u043d\u0443? \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Brython (\u043e\u043d\u043b\u0430\u0439\u043d-\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440 Python \u0432 JS) \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043a\u043e\u0440\u0442\u0435\u0436\u0430\u043c\u0438. \u0418, \u043a\u0441\u0442\u0430\u0442\u0438, \u043e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043a\u043e\u0440\u0442\u0435\u0436\u0430 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f, \u044d\u0442\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442 \u043a\u043e\u0434 \u0435\u0449\u0451 \u0432 \u043f\u043e\u043b\u0442\u043e\u0440\u0430 \u0440\u0430\u0437\u0430.<\/p>\n<\/blockquote>\n<p>\u0421\u0442\u0430\u043b\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e 60-70 FPS.<\/p>\n<h2>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0431\u0430\u0433<\/h2>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u044d\u043d\u0435\u0440\u0433\u0438\u0438 \u0443 \u043c\u0438\u0446\u0435\u043b\u0438\u044f \u043c\u0430\u043b\u043e, \u0438 \u043e\u043d\u0430 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u043d\u044c\u0448\u0435, \u0445\u043e\u0442\u044f \u0435\u0449\u0451 \u0435\u0441\u0442\u044c \u0443\u0437\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438. \u041d\u043e \u0435\u0441\u043b\u0438 \u044d\u043d\u0435\u0440\u0433\u0438\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u043e \u0442\u044b\u0441\u044f\u0447\u0438 <code>self.energy = 1220<\/code>, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0443 <code>IndexError: 'list index out of range'<\/code> \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435:<\/p>\n<pre><code class=\"python\">x, y = self.nodes[self.current_index]<\/code><\/pre>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u0447\u043a\u0443:<\/p>\n<pre><code class=\"python\">if self.current_index &gt;= len(self.nodes):     return<\/code><\/pre>\n<p>\u0418\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438:<br \/><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAxFIFgggfCCC8IIEEQQEIggBhB+wwNIg+AMIBRADIKA+gGUAkgC05UALxQATAAYoULoAIQUYHYQQDwggVhBAAiBRA8iCBxEDuBOEEBcIIA4QOgGMAGzIAZxCoAFlEfwBTQJQGCAAufFNTKhjgKGVlFAoULBzmELjgABooAA8KxFYUtIaoEsDgADoKMAzw-QBtZmqoWoBdVMbTZrb4igBrbqgekbHx0taYihiQAHNkfQBGA2NRsYnWsk2YvSgjI8aTkJQALwv9eSU1LR0lm4aT-wYQEBrQp5DKVS4mMxQQBEIHYvIBhEEAkiA+DxQHz8QAsILDBFBAEwgUBsokEgh8OLsUA6XW+aRuGSym3AAHdiqUKmsAG4ocAUCBAupU0woLInNYbbZQAA8+iM9SWDUBWH+FFMXEAqCCCQDcID4oIBZEH4jkAzCA+ZxQKyiLwCVw+dWEwAyIBUcZJAKIgvHRPhs-NQQpWfwBQNy1BiYIAfPpAmtmS12p0YiE+bK5TEFSAlfHTB6PVxAHgggEYQByibOiKQ40R2GxQYS8dU281QF1oqBwqx2dUm0S4yRWXh4r6ygY7JorCkxnq-f6AijAgOVIbKqCAfBBK3DXCWy43m1BAPwgvFRGKxcI9o99E-9oKgAGo9rPAMQgpM1luLpZ3mK82PR6uNvFz+d4wl8UA1djonCgByIAidj6tujbWrKHrrCgmwABYAEaYHM5yFHBiEoSAIT9DUrIUByXI8hOrQMigVBYAhBFEWA3JAq0CExPBCFYOwsrAJg5IDBQyB5OSzFYahMqpoKUDspydEkVgrT0hRPQUNOCmIEMrSAiEYD-LE4RBlAAAcJiUFQUDMIpFS8aw5JgDg-EnEOIQiamaR2dGISnDAMBrFQzCmTxtTsU5PwrFMszuZ51A+WCuADpG9xPOeMVtHFFwAPSGDUeCJa0yUJXcjypel3GZXl8VnllOVpQY5nINFJUXGVdVQJVrABYFpgScRDFyVQClKbxqnqZpIDaVAAC0+gGR6srCusWzIONUC7AeKxnPVex0A0tJQFQKAhDAwSIBGwBxksIRYOA0wxMwxhGBUuxwEYrW3OdYCXcoDKCaxzC7E9DScSAUCBKgSonCFDlTWklS7DU0NVFVgwGJcgQQ6YUxXVDMMVJU8OIAY7D4EEoThHIhGSfRE6OVtOR5AURQTCdxwrORlEIZczNUU1aWvCoGjaLOfB3nYIg4tubh2LCm7boAEiA+A4aJ2MtkZMSxOD6MriE4ClXOKDzHz85WPjuMLovuBLW7toIP4K9NKzdZcPQ9DIcSBMw5DUJAalGXkWDMLdhhGI9ln-dkwOkJQ5xHYxn1sTOwfKKHbsRyc7MIawIw0pk227ftZCHfTjl-VxYL8YnV3JxRVEM-Gwd8UqpeR+rrFV4FsSBED+gnN1PRKSpKONMAKBt77FSt4EakxkN2kVH7uwB79TkdMoZ0XVd8+poC-g+1FUDc+82gZdFu+83IFRHx8p863vcj44TYQ787lOZ9T+SFMoR0VINWkxs3zkrJ-w0xkuP-bSdAtroWUJhZCqE8KDAqCnCojc2KOUgdhOYCwbjByoAMKgtd5jMFGrDR6FRvrT1YMQv2BCyEmRnmnAuaQzLkn7GCMqWCMosMQB6MSJhJRFXFFAFOUAjJXAlPoXiEooCILoWMFBqEwpeR8gwiyT15SKgEixVBnAoCAGQQdUn5RBVn4JIMkG5HCljsPwQxCsOpSSBJcAAcnRGI+AIDRDiAkaA+gHHrFAZnEoCoYBsEcpsQIYAkJkCBtY8mWAKguNbu4m4yVmAGT9skp6kTpKXBJrRKJbAbixLcYkS4UQ4mJGYOkhiAitaFXKaRRBnNDCWUhIAQhBeBWHRCufEPhABiIM2ZEuIoA9IkA4BW+AtpUHIEyKuwTQnhPEqTTqE4YmuPiIkG4YlQBkB5MofwmkJxQAAKSLRMLoKUUioBhP8NMekuzvKPQ9DUmSO09oHVyQ0fJKyICyUZGU+ZNiJyNIsLwEQnSemamcBUT8eYCxFg6XWfgDYmzqjycs9xrQnk50Ok9JeCEwAMmADAXCrAgA\">\u041a\u043e\u0434<\/a><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ff\/7f6\/645\/5ff7f66459c25e228deefc806f110e76.gif\" alt=\"image\" title=\"\u0417\u0430\u0432\u043e\u0440\u0430\u0436\u0438\u0432\u0430\u044e\u0449\u0435 \u0440\u0430\u0441\u0442\u0451\u0442\" width=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/5ff\/7f6\/645\/5ff7f66459c25e228deefc806f110e76.gif\"\/><\/p>\n<div><figcaption><em>\u0417\u0430\u0432\u043e\u0440\u0430\u0436\u0438\u0432\u0430\u044e\u0449\u0435 \u0440\u0430\u0441\u0442\u0451\u0442<\/em><\/figcaption><\/div>\n<\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a53\/b89\/f9a\/a53b89f9a50d6d2f474fcdf0acbf3d5b.gif\" alt=\"image\" title=\"\" width=\"602\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a53\/b89\/f9a\/a53b89f9a50d6d2f474fcdf0acbf3d5b.gif\"\/><\/figure>\n<h2>\u0427\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u0448\u0430\u0433. \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u0437\u0430 \u0440\u0430\u0437<\/h2>\n<p>\u041c\u043e\u0436\u043d\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0435\u0449\u0451 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0437\u043b\u043e\u0432 \u0437\u0430 \u0440\u0430\u0437. \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u0432\u0435\u0434\u0451\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0443\u0437\u043b\u043e\u0432:<\/p>\n<pre><code class=\"python\">step = 0 while self.current_index &lt; len(self.nodes) and self.energy &gt; 0 and step &lt; 4:     step += 1     # ...<\/code><\/pre>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAxFIFgggfCCC8IIEEQQEIggBhB+wwNIg+AMIBRADIKA+gGUAkgC05UALxQATAAYoULoAIQUYHYQQDwggVhBAAiBRA8iCBxEDuBOEEBcIIA4QOgGMAGzIAZxCoAFlEfwBTQJQGCAAufFNTKhjgKGVlFAoULBzmELjgABooAA8KxFYUtIaoEsDgADoKMAzw-QBtZmqoWoBdVMbTZrb4igBrbqgekbHx0taYihiQAHNkfQNjUbGJ1rJNmL0oIwPGo5CUAC8z-XklNS0dJauGo-8GEBA1wp5DKVc4mMxQQBEIHYvIBhEEAkiA+DxQHz8QAsINDBFBAEwgUBsokEgh8WLsUA6XU+aSuGSym3AAHdiqUKmsAG4ocAUCAAuoU0woLJHNYbbZQAA8+iM9SWDX+WF+FFMXEAqCCCQDcID4oIBZEH4jkAzCA+ZxQKyiLwCVw+VX4wAyIBUsZJAKIgvFRPhsvNQApWPz+ANy1BiIIAfPpAmtGS12p0YiEedKZTE5SAFbHTHRpSEsDEYKC3XSABYoENNT2-f4UQF+kGiqAhlhHMlR1hQShUIvhoVbZABi5N6hNDNZqsAFilyfTmagAGp9ABGN0NLiAPBBAIwgDlES9EUixojsNigwl4qqtpqgTpRUBhVjsqqNomxkisvBxH2TpgGO1bbXrIR63xLPqB-pDIqUCAPggB4wq4267heV5QIA-CC8MiaIYjCc5pL+3plr6wKTjOwGAMQgxLquaW47kh6JeJiqKqoavArmuvDCL4UBqnYqIwoAciBwnYuqIRelrSmhpjrCgmy5gARpgcynIUIliZJIAhP0NTMhQbIclyZatHSKBUFguaqepYCcgCrS5jEom5lg7AvlAwCYKSAwUMgeSkhZ8lSSOtnulArLssZmlYK0tK6T0FCVEMYWIEMrT-CEYC-LE4RdgAHCYzZQMw4UVM5jYdDgrl1pGIRed56ErF+xwwDAaxUMwWVObUNlldcKxTLMVU1dQ9UgrgH6tLcDyTv1g1nAA9IYNR4CN9xnBOM1DRNBg5b1C1zWtUBLTlyB9Tcs3DXti2GKwzUtWkfkaaZIVUGFEVRTFcUJSASVQAAtPoaVCbGgrrB2b0zm6RwnHNANUpkUBUCgIQwMEiBhsAMZLOm4DTDEzDGEYp3XFgKMxModLuVZzAAMxYw09kgNWqAKkc7UlV9lTTjUTNVMtgwGOcgRfVMaOM8zFSVGziAGOw+BBKE4RyGp-kmWWXnUtkvoFEUEyI4cKw6XpubnJr+mbRNzwqBo2jAXwxF2CIWKIW4djQvBiGABIgPgOCidiAys5mWTg+ie2JOBjQbihG28psHj47iW9b7h2whd6CIxbtpis13nD0PQyHEgTMOQ1CQLFzZ5FgzBGBUGMnXZDnKNTpCUKc8NmYT1lART2TVznddHLruasCMYNZJD0Ow-DauNC3IKue3aOd7p+kj9KLcuQqk-177Vlzy+sSBIE5xHNdPR3dFX3kwWWcl1Am+BLFUZPUlFRn9ORiY0faQdMoyNgKjbDP6Y-z+EXq2G1eNoKafVAHGzkBUMBbxIFByAXIUW4swhQAzlveW4Mch5GVsoeGFRHqJQbKVcq4Y8HPSjOcEhSU6AKxksoOSEkpLKUGBULuFRV7WS8nQhScwFhXBblQAYVBF7zGYK9FmmMKjMDEawCRZ9RHSMyvfHuhDhKNXOCCea-CpoaMQG6fk3ZxSOTFFALuPYWwmAMc5IxbDlGNE4VJTqtV6rZVJE1K4sp5RuUslwzgUBADIIKqOiohDz8EkCSOCjgdx2H4CEt2F0AoAnOAAOWMjEfAEBohxASNAfQyT1hUPBiUOUMA2BeU2IEMA4kyDbzibLLAFR0mbyyVcLgo1mA6VznSfGM8DLGKBGATpbCsYtNmswNKZ9ibGCxq0sZFQxlYxqYFc4UsjK1K-g0BpmTEjnCiI0xIzAFmmRMQHSavlpaXS0mw-Wx1gKAEIQXgVhURQVxD4QAYiBXkRNiKAbyJAODdvgBWVByAMhHmUipVTTkrMCvUjJ8REhXD0aAMgXJlD+ASmWKAABSKAD89AShsZU-w0xaRorqk-aUBytIDxhmQOGWMNmwogMFek+yznxLLI2cE5heAiGeW89UzgKh0VXOuTcTzTz8HPJeVUVx6VZNaFSoeWM365n6cAGASlRZAA\">\u041a\u043e\u0434<\/a><\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c73\/f2f\/00b\/c73f2f00baf1a682e431295b080ad1c8.gif\" alt=\"image\" title=\"\" width=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/c73\/f2f\/00b\/c73f2f00baf1a682e431295b080ad1c8.gif\"\/><\/figure>\n<h2>\u0413\u043b\u044f\u0434\u0438 \u0432 \u043a\u043e\u0440\u0435\u043d\u044c<\/h2>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u0442\u0443\u0449\u0438\u0445 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0439 \u043c\u0438\u0446\u0435\u043b\u0438\u044f:<\/p>\n<pre><code class=\"python\">def display(self):     for x, y in self.nodes[self.current_index:]:         fill(\"red\")         rect(x*self.size, y*self.size, self.size, self.size)<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/6ee\/1f5\/8c9\/6ee1f58c981c398834027acfd4da1e35.png\" alt=\"image\" title=\"\" width=\"1600\" height=\"1600\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6ee\/1f5\/8c9\/6ee1f58c981c398834027acfd4da1e35.png\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d7a\/e6b\/507\/d7ae6b507dee33ec72a4ed120b3b62e2.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d7a\/e6b\/507\/d7ae6b507dee33ec72a4ed120b3b62e2.gif\"\/><\/figure>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAwgKIAyPA+gGUAkgC0uUALxQAjAAY6AYwA2ZAM5qoAWUSKApspQMIALnxQLUKnuBR+-FBRRZ7zNQeAAaKAA9viVjNLYKh3ZWAAOgowa01pAG1mPygAgF1zEIswyMMKAGs4qHj0zKyPCL0KPRAAc2RpGQAmRoVS0PKyGr0pKFbS7Ii1FAAvbuluPiExCVKMzIHFBhAQSpdHax8euSg5kN3rWxrwAHc3D29KgDcUcAoIVcDd4JRbAcrquqgAHmk5ILbLCssEsKDs2i92uEIotlqsHNQ9JsAHzSZSVM5Q6KxR4AwF6YEgUG4nZPSxqLB6GBbUkWY4ACxQaMhkRhKwoawRmy+UDRLAGWL0alYUEoVGZFSqtWQSN6IuooQpVO5ABZ-rjyZSoABqBo0kLJerigVqeILJZsjkbVJg4lm2Hs+EbbW64lQKooGp0gBGmEKXRc7s9PpAaiS-guFGut3u7IixxQVCwdIjUbAd1WETpeg9dKw7FdwEwbuSFGQjjd2aDvrVrtQtiuNzTMawESOCfiFB8qQ7iFSERWajAS30mhlAA5tqKoMxO95S8Lojhy-yYoKa7WyeVjREyDAYJUqMwZyWAvmNyEBrkCju9wej5tcOKhqNtU+Rt0APRQRr+PBvl9av+n7fnOD5Aa+AzPsBP5usgj6Qe+EHlFBUBfo0rBnuelgNtGGZtlQHZdj2fYDkOIAjlAAC00gTnqrpvJKnzUbIeoDJ03Q6ix+w2FYKBqDAqiIBiwA4v0WDgHkejMI0cBwJhF7iWAkn8Mcla5swMjycEhYgL4v7Lluq4mnaFqOoiJipOupTAIyyjMAARCsVD2VppQrIoWBJLgCGjP43nIe+3g+XoQUBaMrlZIpymqTmnkAMwRVAOk8qgoKXo4BRWZkPgyP4uW+DBiCND0yh0ZYuRSTleXeD4hXoUoqgaFAXCRo26bsjWBx2PCziuNkonzOU8aJnSPTDUmqFfhMAgiOIrHlFmsU9Itno4B+U28DN0zzVC+E9PE8QcAYdnkNQkD9qKjieXI3gtHIGFJUW-CpaQlBdMJmZqXm1rJc95ane9AzjXSrDpNxthUHxAlkEJ-VZY9umbP9b1SUDCZJgNALJWWoIA6jC1fZjrr6Moyg9AM+HxERvZlZkNmk8wN1QCTyj9oKZEjt4TPyPdtMhNE-DkhJUmJW07meWB01TOIv6PlLs1cN48vTErm3S1w7D4Co6iaEdpOdTx9iOL1-DCd4pHDoKROblCFvkYKPR2yOdBdf6-CBt6vphik3jA94K25pjHvBoUxS7MlVDJFQONFMwlH5fd3gaVzrBJ0z8ep9O3Og-Ds6wT0myAZHv5F4geoQtsPzFt8UDA3KYqV9IpY1wHWDw8Ewe+je+7UEeefzvJQIghWOYh3QADEUCAMgggDcIIAfCCAIwggAMIDPgAyIIAvCCANIggCsIFAgD8INvgACINvgA8INv69b9v+A4U2qw9AAcmmej4BAugGEY0DSI-VQuzx7jAjANgNYajKDAF6MgZMb7tSwN4V+JMP67EnlBZg8YzrHBUujZMtd1hgHQa3eSyDlRyCZgANmIfJJB75mATiZnFFoFDQhUJod4Gh8koHNh6C1VM0C2C7Dge-YwPQdDwOMMwdhGY67rRAlAcRsZW6TW-JrLqVByCnExiAsBECZGtVwuyWBb9DDGF2BCUAZB7j8EUEOdkUAACkshtiSF+PDcBig8hHCsYeXmbRZEtkhvxQSvDgj8MMRAVsJwxE6NvuyYUfCDEfwiH46GQlWBAA\">\u041a\u043e\u0434<\/a><\/p>\n<h2>\u041f\u044f\u0442\u044b\u0439 \u0448\u0430\u0433. \u0415\u0449\u0451 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433<\/h2>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f <code>get_neighbors()<\/code> \u0434\u043e\u043b\u0436\u043d\u0430 \u044f\u0432\u043d\u043e \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442\u044c \u043a\u043b\u0430\u0441\u0441\u0443 <code>Environment<\/code>. \u041e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0442\u0430\u043a\u043e\u0439:<\/p>\n<pre><code class=\"python\">def get_neighbors(x, y, width, height):     neighbors = []     for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]:         nx, ny = x + dx, y + dy         if 0 &lt;= nx &lt; width and 0 &lt;= ny &lt; height:             neighbors.append((nx, ny))     return neighbors<\/code><\/pre>\n<p>\u0421\u0442\u0430\u043d\u0435\u0442 \u0442\u0430\u043a\u043e\u0439:<\/p>\n<pre><code class=\"python\">def get_neighbors(self, x, y):     neighbors = []     for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]:         nx, ny = x + dx, y + dy         if 0 &lt;= nx &lt; self.width and 0 &lt;= ny &lt; self.height:             neighbors.append((nx, ny))     return neighbors<\/code><\/pre>\n<p>\u0418 \u0441\u0442\u0440\u043e\u043a\u0430 <code>neighbors = get_neighbors(x, y, environment.width, environment.height)<\/code>  \u0441\u0442\u0430\u043d\u0435\u0442 \u043b\u0430\u043a\u043e\u043d\u0438\u0447\u043d\u0435\u0435:<br \/><code>neighbors = environment.get_neighbors(x, y)<\/code><\/p>\n<p>\u0410 \u0435\u0449\u0451 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043c\u0435\u043b\u043e\u0447\u044c \u0432 \u0432\u0438\u0434\u0435 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u0438 \u043a \u0440\u0430\u0437\u043c\u0435\u0440\u0443 \u044d\u043a\u0440\u0430\u043d\u0430:<\/p>\n<pre><code class=\"python\">if window_width &gt; 600:     size(800, 800) else:     size(window_width, window_height)<\/code><\/pre>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAwgKIAyPA+gGUAkgC0uUALxQAjAAY6AYwA2ZAM5qoAWUSKApspQMIALnxQLUKnuBR+-FBRRZ7zNQeAAaKAA9viVjNLYKh3ZWAAOgowa01pAG1mPygAgF1zEIswyMMKAGs4qHj0zKyPCL0KPRAAc2RpGQAmRoVS0PKyGr0pKFbS7Ii1FAAvbuluPiExCVKMzIHFBhAQSpdHax8euSg5kN3rWxrwAHc3D29KgDcUcAoIVcDd4JRbAcrquqgAHmk5ILbLCssEsKDs2i92uEIotlqsHNQ9JsAHzSZSVM5Q6KxR4AwF6YEgUG4nZPSxqLB6GBbUkWY4ACxQaMhkRhKwoawRmy+UDRLAGWL0alYUEoVGZFSqtWQSN6IuooQpVO5ABZ-rjyZSoABqBo0kLJerigVqeILJZsjkbVJg4lm2Hs+EbbW64lQKooGp0gBGmEKVxuYDuqwiXRc7s9PpAaiS-nYruAmDdyQoyEcbr0Hu9vrVrtQtn9t3u7JDIBQVHiFB8qQriFSERWajAS30mhlAA5tqKoMxK94U8Lojg0-yYoKc7myeVjREyDAYJUqMwe8mAnGJyEBrkCjO5wul5tcOKhqNtUeRt0APRQRr+PBnk9a++X699g9P08DY-Pm9u5CHz-nh+5RflAV6NKwa7rpYBaBkWWAlmWFZVjWdYNk2IAtlAAC00gdnqrpvJKnw4bIeoDJ03Q6qR+w2FYKBqDAqiIBiwA4v0WDgHkejMI0cBwJBG4cWAXH8McGaelgzAyAJwQJiAvi3sOU6jiadoWo6iImKk46lMAjLKMwABEKxUIZMmlCsiiST4uAAaM-i2cB57eHZeguU5ozmVkQkiWJmaSQAzF5UByTyqCgpujgFDpmQ+DI-jxb4P6II0PTKPhli5NxcUJd4PjJeBSiqBoUBcBQ1yFqsOYHHY8LOK42RsfM5THGWWB0j0rVUO1oFXhMAgiOIZHlHS4l0jg0ijf5vVQP1UxDW0AxHGWPTxPEHAGAZ5DUJA9aio4klyN4LRyBBIWJvw4WkJQXQsREU0Saw1qhZdabbbdAxde1T10MENVUPRjFkMxjUxed8mbG9N3cZ9bV0k1AKhamoLvTDI1jVgCOuvoyjKD0S2luWyG1hlmR6bjzBHVAOPKPWgroS23hU-Ip2kyE0T8OSnHccFbSWdZd5zYNXC3oeQvTN44viJLvADdM7A0Yc+L8OGWZRixeWxmDquRoUxR6qFVDJFQyNFMwWGJad3hSUzrDW1TFt292zNPWDwS9r+PSbI+Ru3j7iBsxC2w-Em3zil9HVdsH0gpmHAwPeNbulDrvo7vO1BLh7-bBUCILppmutQUV6iaBtuPVbR9iOPV-Aa6Q9PNoKWOTlCaGN4UbcYYKdAAMRQIAyCCANwggB8IIAjCCAAwgg+ADIggC8IIA0iCAKwgUCAPwgC+AAIgC+ADwgC8z-PC-4DBQbsj0ABygZ6PgEC6AYRjQNIZ9VHQNXuMCMBsDmNTKGAXpkHjh9wd4K+ONb67AhK1HaxxRJwygDKAAbHIP4eo+5fmYMqBB3h4GszaMg88zAOxUwCi0YKKD8HeHwQJAw7gwYoPATQSBEdvC0LAJAhOmNdj-1WD0MqFVYKrDYLsIBN9jA9B0MA4wzAOHFgjjNH8kj4KsJkQrf65BTgI0-t-X+UA5GAOvoYYwoDbCgDIPcfgigmzHwAKSyG2JIX4YMf6KDyEccxi4sGlDkREAGDEmL8OCIIvREASzMIkeVAMR9MY2gsP42+njAY+NYEAA\">\u041a\u043e\u0434<\/a><\/p>\n<h2>\u0428\u0435\u0441\u0442\u043e\u0439 \u0448\u0430\u0433. \u041d\u0430\u0441\u044b\u043f\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e Dependency Injection<\/h2>\n<p>\u041c\u0438\u0446\u0435\u043b\u0438\u0439 \u0443 \u043d\u0430\u0441 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0441\u0442\u0451\u0442 \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0439 \u0441\u0440\u0435\u0434\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0435\u0433\u043e \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 \u043a\u043b\u0430\u0441\u0441\u0430 <code>Mycelium<\/code>. \u041f\u0435\u0440\u0435\u0434\u0430\u0434\u0438\u043c \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u0440\u0435\u0434\u044b \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440:<\/p>\n<pre><code class=\"python\">environment = Environment() mycelium = Mycelium(environment.width \/\/ 2, environment.height \/\/ 2, environment)  # \u041f\u0435\u0440\u0435\u0434\u0430\u0435\u043c \u0441\u0440\u0435\u0434\u0443 class Mycelium:     def __init__(self, x, y, environment):         self.environment = environment  # \u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u0441\u0441\u044b\u043b\u043a\u0443 \u043d\u0430 \u0441\u0440\u0435\u0434\u0443 \u0418 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u0441\u044f \u0432\u044b\u0437\u043e\u0432 `grow()`. \u0412\u043c\u0435\u0441\u0442\u043e mycelium.grow(environment) \u0441\u0442\u0430\u043d\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e mycelium.grow().<\/code><\/pre>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAwgKIAyPA+gGUAkgC0uUALxQAjAAY6AYwA2ZAM5qoAWUSKApspQMIALnxQLUKnuBR+-FBRRZ7zNQeAAaKAA9vibz0KADcUcAoIIKxWM0s4qHdlYAA6INDwyIocaTSwsAio83iLRJSKMGtNaQBtZj8oRFYAXSLi0uTDCgBrKqhqluKSj1SKPRAAc2RpGQAmGYVBhOGycb0pKAXB9rUUAC816W4+ITEJQdb49sUGEBAoh2o9H3W5KAu4i+tbcfAAdzcPDF3pYULZ2kExpMoAAeaRyWKLSx3LA3ChvRagpZJZLXW73RzWZ4APmkyiCAOx5UqQMRSL0KJAaNpb2BJSwehgL1ZUF+AAsUGSsSlcXcsg9CTCoGSWO0qXo1KwoJQqEKRpDkESNkrqAl2ZzoVAACwI2lqPVQADU025cXqU1VcrU1SuN1FLgJTya6OZLrxYo9zytshtllGKHGvIARpheuCQnkCllkqsXGGI9GQGo6v52MyoMBMFAKPUKMhHEW9OGozGTXnUGDhrkMlFkyAUFRqsWmp3EE1knc1GAbvpNJqAByvZVQZjF7ylxXlHDl2UVeW1uuWFeVZJkGAwIJUZgzkuNXMby7DTo9Hd7g9H564VU7faWp97NYAeigM38eDfL4tf9P2-OcHyA19tnfKAvx-ItkEfSCAPAmDWDPc9N0beNmyTH5207Hxu1LPsByHEARygABaaQJxDU1MPVSjrUWdoVjWIMZDoOIvisFA1BgVREApYAaS2LBwC6PRmBmOA4DQy4xLACT+F+SsIywZgZDkuICxAXxf2XYZHWdYYRXxR4fBMJp10GYABWUZgACI7ioBytMGO5FHUnxcEQvR-B84Znz8oDvF8ty2XEvRlNU3l1IAZnC-NC2UVA0XaK81Gs4ofBkfxct8WDEBmdZlFoqVHEknK8u8HxCpmdh8BUdRNC4LD8kyLBa24+xHGcVxShEtphl+dssF5dYRqoMboK-I4BBEcRuXaXkYuyKAVqrHAP1m3h5tOJbhlwlUamqDgDHs8hqEgftlUcdS5G8eY5FQpLdP4VLSEoVYhOSDa1OaV67A+y7vvaSaxuaTjLG4qheP4shBIGrLAeecsQcksHRt5QbER0hpga+jHhj+2KcbzfRlBS6R2iO6oCOqXsyu0uzmAeqAKeUft5VIkdvDZ+RnqZ0MwH4M1IrYIWLA8ry-zmk5xF-R85YWrhvGV041d2+WuAaribCgFN+DTatMyEmqc2R42M16fpuTxqh6ioMs0VqCj8ue7wNL51hPbZt2fenfnmmRuJZzg9ZAysO1XydsrMVeWEi2eA1Mam8apwT6RS0lZbVpDwYrZjG992oI8w-nRLkVRCsq2t9ClFUDQoDOymuv1nqnBcfgzdIbnh3lMmMOxEj+96EeyPlOgAGIoEAZBBAG4QQA+EEARhBAAYQefABkQQBeEEAaRBAFYQKBAH4QPfAAEQPfAB4QPet93vf8CbdqonWAA5fI9HwCBdAMIxoGkF-Rjobi7gUQwDYLWcYygwCRjICle+iYsDeA-hTb+FxMQjSur8ZSWMoCagAGxyHhNyGeQVmCGnwd4PBgtFhEPfMwCcbM4rzESsQuh3g6FyQMO4ZGxC0E0AweDXk3geFgAwSTaIFxYEdXWK1dID8sgSziIgr+xh1g6CQcYZgEiWz8JmiBKAmikyiJ0bBfR0QLAz0APggp896ABYQVeF8oCAEEQM+1jADCIAA-WVByD-BxuAyB0C9FtTgQgz+hhjAoNsKAMgkR+CKCHFkKAABSWQrxJBwmRlAxQXQfhxMPJQwYJjkiwz4gJeRlhFGhIgK2YRbBvQWHKd-QpcMSmsCAA\">\u041a\u043e\u0434<\/a><\/p>\n<h2>\u0427\u0430\u0441\u0442\u044c 3. \u041e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u041c\u0443\u0440\u0430<\/h2>\n<p>\u0410 \u043f\u043e\u0447\u0435\u043c\u0443 \u0443 \u043d\u0430\u0441 \u0432\u0441\u0451 \u0442\u0430\u043a\u043e\u0435 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u043e\u0435? \u0411\u043e\u043b\u044c\u0448\u0435 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0441\u0445\u0435\u043c\u0443. \u041c\u043e\u0436\u043d\u043e \u0436\u0435 \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0424\u043e\u043d \u041d\u0435\u0439\u043c\u0430\u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u041c\u0443\u0440\u0430:<\/p>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/99e\/3bc\/542\/99e3bc542509431c1686c82c38c67b54.png\" alt=\"image\" title=\"\u041e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u041c\u0443\u0440\u0430\" width=\"188\" height=\"188\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/99e\/3bc\/542\/99e3bc542509431c1686c82c38c67b54.png\"\/><\/p>\n<div><figcaption><em>\u041e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u041c\u0443\u0440\u0430<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u0412\u043e\u0442 \u0442\u0430\u043a \u043c\u044b \u0440\u0430\u0441\u0448\u0438\u0440\u0438\u043c \u043f\u0435\u0440\u0435\u0431\u043e\u0440:<\/p>\n<pre><code class=\"python\"># for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]: for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1), (-1, -1), (1, -1), (-1, 1), (1, 1)]:<\/code><\/pre>\n<p>\u0418 \u0442\u043e\u0433\u0434\u0430 \u043d\u0430\u0448 \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0442\u0443\u0440\u0430\u043b\u044c\u043d\u043e:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/714\/0f7\/cd1\/7140f7cd10e3e6dcacc3ca83f6f004b4.png\" alt=\"image\" title=\"\" width=\"1600\" height=\"1600\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/714\/0f7\/cd1\/7140f7cd10e3e6dcacc3ca83f6f004b4.png\"\/><\/figure>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ba5\/6f2\/534\/ba56f25345b82d702b5c1e19a201cacc.gif\" alt=\"image\" title=\"\u0412\u0438\u0434 \u0441 \u0432\u044b\u0441\u043e\u0442\u044b \u043f\u0442\u0438\u0447\u044c\u0435\u0433\u043e \u043f\u043e\u043b\u0451\u0442\u0430\" width=\"320\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ba5\/6f2\/534\/ba56f25345b82d702b5c1e19a201cacc.gif\"\/><\/p>\n<div><figcaption><em>\u0412\u0438\u0434 \u0441 \u0432\u044b\u0441\u043e\u0442\u044b \u043f\u0442\u0438\u0447\u044c\u0435\u0433\u043e \u043f\u043e\u043b\u0451\u0442\u0430<\/em><\/figcaption><\/div>\n<\/figure>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/200\/7d6\/11f\/2007d611fe7426c5f028541868c091de.gif\" alt=\"image\" title=\"\u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u044c\u0441\u044f\" width=\"320\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/200\/7d6\/11f\/2007d611fe7426c5f028541868c091de.gif\"\/><\/p>\n<div><figcaption><em>\u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u044c\u0441\u044f<\/em><\/figcaption><\/div>\n<\/figure>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk+okUAxmADYsCmjWKYFAzqnSYcVdgEcAru3z4QEigAoAlDIDEUQFgggPhBAvCCBBEEBCIIAYQHQcDSIPgDCAUQAytgPoBlAJIAta1AC8UAIwAGKCh1QAIQI0B2EEAeEEBWEEABEChAeRBAcRBowE4QQC4QQA4QGUYWMj4BAFlERnYWFAkIAC58IKDRYCgHBxQKFCxmhT4y4AAaKAAPfsR+gHN2Ckh2JRq6uahulmAAOknRAR8AbQUhqEQlAF1a+aDFlfKKAGsNqE2jk9Oe5fHJiHZvKBep45Oz5Yn2CBRsgfL4AExg-w-eZ-MjjD5Qh4LJ58FAAL3ePhs9mc7ms0Lmf0k7CkH1ExK6TzW7D4KiRfwAbihUVh2FQyeIpMoZHMGp9wAB3SlLfoTJngChvChYGYEuooRp-AFA5AAHh8-lmSLqIHYWAkIAoQXUgFQQPSAbhBMlBALIgOjigGYQTIJKDhIzpXRJTLmox6QAyIP1AEwgZkAoiBaQAsIJlInKggqoBxFESpFIlN4NVrtaQ9QaKNHBsMPomSexlhgYBxgFhlMaoIA8EEAjCCxIx1ozmANGaKRKCAYRBwtFzVBMuEoFoUrFohGM0FcxR2ChRgALABGmBu4w6M7nS5XO2Gooo4t4UqwywFKCoWHne4Pkomx-ns4XMtzwEwUAouwoyFab4fW5AfHTbVYzFFAJSPZ4QDPTZ3wOaDEAOZZdT4MADVKAQAD4-ACKBKHZBR336T8U0mHBvz+akBFwqB8I-fY3zAUijUZZl2jZQDJ2RJZVjAdZljIGAYAmKgFBowj9jpDi6j+C5rj4gShJEnc9iUfpRLfcSJMkqAQLA28IKgmC4IQpCUJANCoAAWh8AAOREtM4lZlWBSzQVzeknmJKQ5ME6gRII9SlBTYIoEAFBAtGbANzQSDsoB0LQg1Sbte37ANh1HcdfTcup1DKbp2IeZiWTZbyFLUojNJhJ44XeABqVykVZAZKz4LAQAUeNhRWTzphTGqoAAIgGqAapatqOsK1iqEC-oAhm-wVGhPkqGZMsyEQTrZSRF8QDzPZUCYjyk3YfKTmAFA2AUfrdSofqKqRXUuB2XA-lRDFhmelF0XYfoXq+n7PoxO6pNasBLnYBRIX8Ga4Hm3NRtB9gHAFX9K18IGgm26iBl8YY0dUgYwWGMEUzIp4ZIArLThBsGkZRhQAGZ0fmbGHGWvhVpBQZfDwBzlle2ref5qAAHooDBSm9l8VmVryTnEG53BBa+4alYxEWxYlgnpfZ2WPgJnnfrVvrDfeUXxY4xAwW1jmPktg2AYFk31fNycLnBlm2Y53Hrdl-otc9329itgO1oW3J8gEax91Aw9b0AvlmladpOjOTaCqeU9z3nD5M4vEXRexRxXA8attEtFJDADLREhSaJ0igQB+EGrwAJEEyWJMjtOGnnvTccB8HvH3zqBC9xEvgrLzIK4MKua+iOvG+roM9C0Axoi7rjRkg9ktk2SwyhYBRyGoSBENw1pKyhsX-HmlNMYcfbSEocZOuWAf5xlA4oDvh+j+fv5c-nIcHkdQloyzWhtE6X9XwDB-k-cG-8zwXjThmTGX4jS-3gd3FGyDJKlDYAWJ4m8oIDFgvBCWcwzoXUvnglgiEaSmTQv0S+ARYb2Xog4eGYNuRsIepWGBisR7F2sPmARdgi54n6IIiRw8xGj2sGHPIBRh773juwRoic2gdAcJ1foJlUI0hwYSJ4eizI0g+CYtCORFECAAGJyHaAAIR4ogVR6iWiaJTj0P2wxDFSSeDAnwAx14rDlsEvi8INTAPqGoqAId1qp0gZQg+YI4BwH6JDfoMNoasIeJMDh1NwZM33igGA3QX78JkTiIR-0uLIFEVU6RkJ0mw3wHyNcDgNwLmXP+JSIwoAAP6G-GUgFOl-huHcaE6hMZUF2FQNBtwFAWRxlAeaqllmrOopfJZKlNkzUOIBaZsz5nbCWUwnZCh1nnK2XjXZfhzmnMsjci5-RtmqQeU85ZaMDiQP8p+PWKsZn5j6nM3MsZAjqjfDA1U-TEHZyouCnwfzoVDMgXMUZ3S+AlV8mVcS0JdT6kND+TcGK1BQEAMgg5pwpGHNL6HQZhoiNziB2aIOg6Vrx0rHaUHwAByvBpAQBKGUCo0AfC8pnDIPk3R9QwGUIBUYLAwCLjICwbS0ddLSn6AKvBwroT8wULZS+BqKocpvFynwUdrxHm4XULVQrKgfGKNqyoCgTXgQAUPQmqrLV6SGR6-oYrpjVkAIQgWhwhhnbJ2SImRABiIH2TIiVUqxtMGOCVMSqDkCFDg+VirlVepjqarAmrBXlEqNCW1JaIAQTAEKV1t4gqhC0IYKAUbY2WgSP0cKjZmytgjcOCMOgkp9mhLGUAZA3gOGYPIHAABSPwgQvBplzEqxglxN4oV8jkk4tbpTLDidaoI5bhW7rAetCqHD5zVuAKU5QQA\">\u041a\u043e\u0434<\/a><\/p>\n<h2>\u0412\u0440\u0435\u043c\u044f \u043a\u0443\u0448\u0430\u0442\u044c<\/h2>\n<p>\u041c\u0438\u0446\u0435\u043b\u0438\u0439 \u043a\u0430\u0436\u0434\u044b\u0439 \u0445\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0441\u0430\u0441\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438\u0437 \u0437\u0430\u0432\u043e\u0451\u0432\u0430\u043d\u043d\u044b\u0445 \u043a\u043b\u0435\u0442\u043e\u0447\u0435\u043a \u0438 \u043f\u043e\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0441\u0432\u043e\u044e \u044d\u043d\u0435\u0440\u0433\u0438\u044e: <code>self.energy += 0.034<\/code>. \u041d\u0443 \u0438 \u0442\u0440\u0430\u0442\u0438\u0442\u044c \u044d\u043d\u0435\u0440\u0433\u0438\u044e \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0441\u0432\u043e\u0439 \u0443\u0437\u0435\u043b: <code>self.energy -= 0.01<\/code>.<\/p>\n<pre><code class=\"python\">for nx, ny in self.nodes:     self.energy -= 0.01     if environment.grid[nx][ny].resources &gt; 0:         environment.grid[nx][ny].resources -= 0.5         self.energy += 0.034<\/code><\/pre>\n<p>\u042d\u0442\u043e\u0442 \u0431\u0430\u043b\u0430\u043d\u0441 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435 \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u043d\u0430 0,001 \u043c\u0435\u043d\u044c\u0448\u0435 \u044d\u043d\u0435\u0440\u0433\u0438\u0438 \u0441 \u044f\u0447\u0435\u0439\u043a\u0438, \u0442\u043e \u043c\u0438\u0446\u0435\u043b\u0438\u044e \u0443\u0436\u0435 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u044d\u043d\u0435\u0440\u0433\u0438\u0438 \u0434\u043b\u044f \u0440\u043e\u0441\u0442\u0430. \u0410 \u0435\u0441\u043b\u0438 \u043d\u0430 0,001 \u0431\u043e\u043b\u044c\u0448\u0435, \u0442\u043e \u043e\u043d \u0443\u0436\u0435 \u043d\u0435\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u043e \u043d\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0434\u0435\u0441\u044f\u0442\u043a\u0438 \u0442\u044b\u0441\u044f\u0447 \u0435\u0434\u0438\u043d\u0438\u0446 \u044d\u043d\u0435\u0440\u0433\u0438\u0438.<\/p>\n<p>\u041c\u043e\u0436\u0435\u043c \u0434\u0430\u0436\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u044d\u043d\u0435\u0440\u0433\u0438\u044e \u043c\u0438\u0446\u0435\u043b\u0438\u044f \u0432 \u043b\u0435\u0432\u043e\u043c \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0443\u0433\u043b\u0443:<\/p>\n<pre><code class=\"python\">def show_energy(self):     fill(255)     rect(0, 0, 50, 10)     fill(0)             text(int(self.energy), 10, 10)<\/code><\/pre>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAwgKIAyPA+gGUAkgC0uUALxQAjAAY6AYwA2ZAM5qoAWUSKApspQMIALnxQLUKnuBR+-FBRRZ7zNQeAAaKAA9vibz0KADcUcAoIIKxWM0s4qHdlYAA6INDwyIocaTSwsAio83iLRJSKMGtNaQBtZj8oRFYAXSLi0uTDCgBrKqhqluKSj1SKPRAAc2RpeQVBhOGycb0pKFnB9rUUAC9l6W4+ITEJQdb49sUGEBAoh2o9HxW5KFO40+tbcfAAdzcPGJfLChbO0gmNJlAADzSOSxOaWa5YS4UZ5zdqLZYAammAOKOKgwEwUAo9QoyEc8ySyXKlVhcIpKVBE2QAFpock5DI8XEgVBchkoslPigqNViU1RYgmslrmowJd9JoAHyrWl0yx8-KZLCCkDC0U+cWkqUyuUgBVQVmrZJwLnrYaM8FYq1yADMABY6KjhmoABZgL78B2INh4vE886Xa5ZW7WB6K6TKIK-SnUvRqf5q0h6REgCie9ZYPQwR54r4+lCJ+nJC5XG6OWOQqCJljtVPpqCUKhVoNQZVPTsJQvFiFQN2q1FDqBOzmZ+pTKtt6oR2vR+v3JootXLqMuNcPae2iyjFDjH0AI0wvRBITyBSyguz-GPp4vIDUdX87EzBJARJJZORZ9z0vcc1XDe0b35e8hRFMUJWNNNTXNZUAA5+2oKBmGJbxSVYIkwBwclWwqNNQMzIYUxItRkjIGAYCCKhmCw-9WC-ci2mGToehouiGKYh5cCrTYdinITtmWAB6KAACZ-DwMSRIxBTJJknCBOU0SNnEqApNkolkEErTFI03TWMPOFr3STUBRg-VDUlaVEPlNMLWmNZ2Lia8wRZbE3hsKwUDUGBVGDUoM0Gcp+DULBwC6PQQzmYAK2UZgACJrioVK2OKH9fDkojhkXbc6zuHwTCaMj4muRQsDqXAjL0fx6u9cTvAatqWp2bKzhisA4uYaS4DgbrPN6uL+C+PQTx9WqXRGyxcuUVBkXaLi1EquIfBkfxtt8PTEGklZlHMzp4q2nbvB8fbpPYPzgT9AMg2TYBwpy5KBqG+aLGq2q5G8P6oDgAH5C+-F3rkPCTjmQsfFqxxaq8plWG8eQUYh0N8BUdRNC4SDrKyVV3jsW5nFcMLKvaL5hSwH0VipqgaZ0qT9gEERxDxdofSm09sigLnppwCTmd4Vmjg54YYJWapqg4AwUvIahIGlTt4eYAHpLkCG8Ny-hltISglme5J+Z55p8UJXXyQVw3Kepn1mnzCwiaoQLgrIUK-kq3KHitg34tthn7Y2hbCQA-WKBt4YTZm17yP0ZQlukdpbINapJXMuIkoTtXvHj5RHNlZy1H+tH0Y8-CorG+LQbmH66nklnDnEOTBMbtmuG8Nujk7kWm64W64iJpYXCA1931KS7P0q0fLylgZBlyqh6ioMPamZXaIe8ZgN+RzCAfX3ec9kQ-1+8A+t928-MNP4+L5R5pg6Pf8Vn3Kw51ElfzJ5J4oT-RsA8ZgOH+0hST-yjtzGaj94gzzfDxei1AmLYX0mZWu2YkREggWPcuShVAaCgLLBOhN-L2EcKTfgz1vAmiLrHTywwqFmhctIehCo6AAGIoCAGQQQA3CCAD4QQAjCCAAYQLhgAZEEALwggBpEEAKwgUBAD8IJIwAAiCSMADwgkjRESMkfgDUd5eYADl8h6HwBAXQBgjDQGkHo0YdAibuERDANgqpxjKDAGeMgS0tFam8EY+OpjTg8iporAM9NGbKgAGya0quw4S8U3Sa28GEsugxIniWYGhAGLoNagyiSk2JUBUndQMO4CmyT-E0ECXbbwJT-T8GjtEU47iogrFxlZbRCVLBeJMcYFYOhvHGGYPU+8QTaZC1UryPG2jjYQMFrpQIYytS3WduQH4sceSgDIJEfgig5RZCgAAUlkE8SQ0JKouMUF0T4WzGIJOKP07ULsgohVaRYdphhjA6n9GwTcTzjEvIgMkO5btgysCAA\">\u041a\u043e\u0434<\/a><\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/67f\/52c\/95a\/67f52c95ad17e03d419eb751f3692b13.png\" alt=\"image\" title=\"\" width=\"1600\" height=\"1600\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/67f\/52c\/95a\/67f52c95ad17e03d419eb751f3692b13.png\"\/><\/figure>\n<figure class=\"\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/31b\/63f\/088\/31b63f0888a9d358fd494865a559df63.gif\" alt=\"image\" title=\"\" width=\"320\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/31b\/63f\/088\/31b63f0888a9d358fd494865a559df63.gif\"\/><\/figure>\n<p>\u0415\u0449\u0451 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043e\u0442\u043d\u0438\u043c\u0430\u0442\u044c \u0443 \u044f\u0447\u0435\u0439\u043a\u0438, \u0442\u043e\u0433\u0434\u0430 \u043f\u043e\u0447\u0432\u0430 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438\u0441\u0442\u043e\u0449\u0430\u0435\u0442\u0441\u044f. <\/p>\n<pre><code class=\"python\">environment.grid[nx][ny].resources -= 1.5<\/code><\/pre>\n<p>\u0418 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u0440\u0430\u0441\u0442\u0451\u0442 \u0438\u043d\u0442\u0435\u043d\u0441\u0438\u0432\u043d\u043e, \u0430 \u043f\u043e\u0442\u043e\u043c \u0435\u0434\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u043d\u0435 \u0445\u0432\u0430\u0442\u0430\u0442\u044c \u0438 \u0433\u0440\u0438\u0431\u043d\u0438\u0446\u0430 \u0431\u044b\u0441\u0442\u0440\u043e \u0437\u0430\u0433\u0438\u0431\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAwgKIAyPA+gGUAkgC0uUALxQAjAAY6AYwA2ZAM5qoAWUSKApspQMIALnxQLUKnuBR+-FBRRZ7zNQeAAaKAA9vibz0KADcUcAoIIKxWM0s4qHdlYAA6INDwyIocaTSwsAio83iLRJSKMGtNaQBtZj8oRFYAXSLi0uTDCgBrKqhqluKSj1SKPRAAc2RpeQVBhOGycb0pKFnB9rUUAC9l6W4+ITEJQdb49sUGEBAoh2o9HxW5KFO40+tbcfAAdzcPGJfLChbO0gmNJlAADzSOSxOaWa5YS4UZ5zdqLZYAammAOKOKgwEwUAo9QoyEc8ySyXKlVhcIpKVBE2QAFpock5DI8XEgVBchkoslPigqNViU1RYgmslrmowJd9JoAHyrWl0yx8-KZLCCkDC0U+cWkqUyuUgBVQVmyZJwLnrYaM8FY1bsgDMABY6KjhmoABZgL78B2INh4vE886Xa5ZW7WB6K6TKIK-SnUvRqf5q0h6REgCie9ZYPQwR54r4+lCJ+nJC5XG6OWOQqCJljtVPpqCUKhVoNQZVPTsJQvFiGyVWoodQJ2czP1KZVtvVCO16P1+5NFFqpdRlyrh5T20WUYocY+gBGmF6IJCeQKWUF2f4R5P55Aajq-nYmYJICJJLJyKfM8LzHNVw3ta9+TvIURTFCVjTTU1zWVAAOftqCgZhiW8UlWCJMAcHJVsKjTEDMyGFNiLUZIyBgGAgioZhML-VhPzItphk6HpqNo+jGIeXAq02HZJ0E7ZlgAeigAAmfw8FE4SMXkiTpOw-ilJEjYxKgSSZKJZABM0hT1J0liDzhK90k1AVoP1Q1JWlBD5TTC1pjWNi4ivMEWWxN4bCsFA1BgVRg1KDNBnKfg1CwcAuj0EM5mACtlGYAAia4qBS1jim-XxZMI4YFy3Os7h8EwmlI+JrkULA6lwQy9H8OrvTE7x6ta5qdiys5orAWLmCkuA4C6jyeti-gvj0Y8fRql1hssHLlFQZF2k4tQKriHwZH8LbfF0xApJWZQzM6OLNu27wfD2qT2F84E-QDINk2AMLsqS-rBrmiwqpquRvF+qA4H++RPvxN65Fwk45kLHwascGrPKZVhvHkZHwdDfAVHUTQuAgqyslVd47FuZxXFCir2i+YUsB9FZKaoantMk-YBBEcQ8XaH1JpPbIoE5qacHEpneBZo52eGaCVmqaoOAMZLyGoSBpU7OHmH+qS5HB3Ccv4JbSEoJYnuSPnueafFCR18l5YNimqZ9Zp8wsQmqACoKyBCv4Kpyh5Lf1uKbfpu31vmwl-z1ihreGY3ppesj9GURbpHaGyDWqSUzLiRL49V7w4+UBzZSctQ-tRtH3LwyLRrikG5m+uo5OZw5xFkgSG9ZrhvFbo4O+FxuuBuuJCaWFxAJfN9Sguj8KpHi9JYGQYcqoeoqFD2pmR28HvGYdekYw-61537PZAPtfvH3zedrPjCT6P8-keaIPDz-FY9ysWcROXsyeSeKFf0bf2GYHN-aQpI-6Ry5tNB+8Rp6vm4nRagjEsJ6VMjXbMSIiTgNHmXJQqgNBQBlvHAmfl7COBJvwJ63gTSFxjh5YYlCzTOWkHQhUdAADEUBADIIIAbhBAB8IIARhBAAMIJwwAMiCAF4QQA0iCAFYQKAgB+EAkYAARAJGAB4QCRIjxESPwBqW8PMABy+Q9D4AgLoAwRhoDSF0aMOghN3CIhgGwVU4xlBgFPGQRamitTeEMXHExpweSUwVgGOmDNlQADYNYVTYUJOKboNbeFCaXQYESxLMFQv9F06sQaROSTEqAKSuoGHcOTJJfiaABNtt4Yp-p+BR2iKcNxUQVg40slo+KlhPHGOMCsHQXjjDMDqXeQJNNBYqV5LjLRRtwECx0oEUZWobpO3ID8GOPJQBkEiPwRQcoshQAAKSyCeJIaEFVnGKC6J8TZDF4nFD6dqZ2gVgotIsG0wwxgdT+jYBuR5RjnkQGSLc12wZWBAA\">\u041a\u043e\u0434<\/a><\/p>\n<h2>\u0427\u0430\u0441\u0442\u044c 4. \u0411\u043e\u0440\u044c\u0431\u0430<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043d\u0430 \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0443 \u0434\u0432\u0430 \u043c\u0438\u0446\u0435\u043b\u0438\u044f. \u041f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u0442\u0430\u043a:<\/p>\n<pre><code class=\"python\">from p5py import * import random  run()  CELL_SIZE = 20  class Mycelium:     ...  class Environment:     ...  class Cell:     ...  # \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 environment = None mycelium1 = None mycelium2 = None  def setup():     global environment, mycelium1, mycelium2     environment = Environment()     mycelium1 = Mycelium(environment.width \/\/ 3, environment.height \/\/ 3, environment)     mycelium2 = Mycelium(environment.width * 2 \/\/ 3, environment.height * 2 \/\/ 3, environment)  def draw():     if frame_count % 10 == 0:         background(0)         environment.display()     mycelium1.grow()      mycelium1.display()     mycelium2.grow()     mycelium2.display()<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6d0\/86c\/94a\/6d086c94a69e1b99369644fc024094ae.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6d0\/86c\/94a\/6d086c94a69e1b99369644fc024094ae.gif\"\/><\/figure>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAwgKIAyPA+gGUAkgC0uUALxQATAAY6AYwA2ZAM5qoAWUSKApspQMIALnxQLUKnuBR+-FBRRZ7zNQeAAaKAA9vibz0KADcUcAoIIKxWM0s4qHdlYAA6INDwyIocaTSwsAio83iLRJSKMGtNaQBtZj8oRFYAXSLi0uTDCgBrKqhqluKSj1SKPRAAc2RpAEY5BUGE4bJxvSkoecH2tRQAL1Xpbj4hMQlB1vj2xQYQECiHaj0fNbkoc7jz61tx8AB3Nw8Ym9LChbO0gmNJlAADzSOSxBaWW5Ya4UV4LdrLVYAahmQOKeKgwEwUAo9QoyEciySyXKlXhCKpKXBE2QAFpYck5NMCXEQVBchkoslvigqNVSU1xYgmslbmowNd9JoAHzrekMywC-KZLDCkCi8U+SXkmVyhUgJVQdlQabJOA8zbDZmQnHrTkAZgALHR0cM1AALMA-fjOxBsAkEvmXa63LL3axPZXSZRBf7U2l6NSAjWkPTIkAUH2bLB6GDPAk-f0oFOM5JXG53RwJ6FQFMsdoZrNQShUWuhqCql49hIlstQm3q9GjqCu7k5+pTWud6rRhtxpuPJpojWr2MuDdPWcOiyjFDjf0AI0wvTBITyBSywrz-FP56vIDUdX87BzRJAJLJClUVfS9r0nDUoydO9BUfEUxQlKVTUzc1LVVAAOIdqCgZhSW8clWBJMAcEpDsKkzcCcyGdMyLUZIyBgGAgioZgcMA1gf0otphk6Ho6IYpiWKeXBa22PYZxE3ZVgAelkfw8AksSsQU6TZIA+Stkk8SNLEmSZDw5BhO07FlKgXT2OPBFb3SbUhTgw1jWlWVkMVTMrRmDZOLiW8ITZXEPhsKwUDUGBVDDUps0Gcp+DULBwC6PRwwWYBq2UZgACJbioNKOOKP9fDkkjhmXXdGweHwTCaCj4luRQsDqXAjP8Bq-Uk7xGuUnKLlisB4uYGQ4DgTqvO6+L+B+PQz39OrpiGyw8uUVBUXaHi1CquIfGmfxNt8PSGhkNZlAszoEo2rbvB8XbEBkdh-NBQNg1DNNgAi3KUr6gbZosGq6rkbxfqgOB-tmT7CTeuQCLOBYSx8OrHDq7yWVYbxZmR8GI3wFR1E0LhoJsrJ1U+Ox7mcVxwqq9oflFLB-TWSmqGp0yZMOAQRHEAl2n9Cbz2yKBOcmnApKZ3gWZOdnhjgtZqmqDgDFS8hqEgWUezh5h-vkcGCLy-hFtISgVie5I+e55pCWJbXKXl-WKap-1miLCxCaoIKQrIMKASqvKngtvWEut+nbbWubiSA3WKCt4Yjaml7KP0ZQFukdo7KNappQsuJkrj1XvFj5QnPlFy1D+1G0c8wjopGhKQYWb66nk5njnEOThPr1muG8FuTnb4WG64G64kJlYXBA99P1Kc7vyq4fr0lgZBjyqh6ioEPalZbbwe8Zg16R7D-tX7es5tffV+8PeN+20-sOPw+z+R5pA5PQC1kPKwF3EpeLL5F4YTU8c-YZ4cv7SHJC2DmXMpr33iFPD8fFGLUBYrhEkjQQZIhRCSMBI9S5KFUBoKAMs44EwCvYRwJN+BPW8GaAu0cvLDAoRaVy0haFKjoAAYigIAZBBADcIIAPhBACMIIABhAOGABkQQAvCCAGkQQArCBQEAPwg4jAACIOIwAPCDiOEWI8R+AtQPh5gAOXyHofAEBdAGCMBAaYawdGjH0YYwwxh9rSHMXoughN3DIhgGwdU4xlBgAvGQBaGidTeAMbHYx21AlGJsecPklMFbBjpgzVUAA2OYVVWGiQSp6OY3hEkl02JJZgGF-runkCDFJuT8neHyZ1Aw7hya5KiTQGJNtvB1KDPwSO0Rzh+KiGsHG1lNGJUsKE6xJi1g6CCcYZgnTHyxJpoLKA7pAi400YbMBAsZLzP5IsnUnVBnGNsdoKxxiJmbKFNM+S+1ZnrMmbqNpZzGZzIWb0rZjiApUHIH8aOfJQBkEiPwRQCoshQAAKQ2heJIWEVVvGKC6N8f5zFsnFCuckJ2wVQr9IsDs4wtoYXvO3Oig5mKkXO1Rds-FEAZB6iDGiqAGKyWEpRa7NgQA\">\u041a\u043e\u0434<\/a><\/p>\n<blockquote>\n<p>\u041b\u0443\u0447\u0448\u0435, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u044b. \u0415\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0436\u0435\u043b\u0430\u043d\u0438\u0435, \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c, \u0431\u043b\u0430\u0433\u043e \u0432 online-IDE \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430.<\/p>\n<\/blockquote>\n<p>\u041f\u0443\u0441\u0442\u044c \u0443 \u043c\u0438\u0446\u0435\u043b\u0438\u044f \u043f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0446\u0432\u0435\u0442:<\/p>\n<pre><code class=\"python\">def __init__(self, x, y, environment, color):     ...     self.color = color  # \u0423\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u0434\u043b\u044f \u043c\u0438\u0446\u0435\u043b\u0438\u044f  def setup():     ...     mycelium1 = Mycelium(environment.width \/\/ 3, environment.height \/\/ 3, environment, color(255, 100, 100))     mycelium2 = Mycelium(environment.width * 2 \/\/ 3, environment.height * 2 \/\/ 3, environment, color(100, 100, 255))<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ed8\/a0d\/602\/ed8a0d6024e907efc84c7d771239a725.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ed8\/a0d\/602\/ed8a0d6024e907efc84c7d771239a725.gif\"\/><\/figure>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAwgKIAyPA+gGUAkgC0uUALxQAjAAY6AYwA2ZAM5qoAWUSKApspQMIALnxQLUKnuBR+-FBRRZ7zNQeAAaKAA9vibz0KADcUcAoIIKxvRTBlTFYzS2Sod2VgADog0PDIihxpbLCwCKjzFIs0zIowa01pAG1mPyhEVgBdcoqqjMMKAGt6qAbOisqPLIo9EABzZGl5BTHUibIZvSkoJbGetRQALw3pbj4hMQkxrpSexQYQECiHaj0fTbkoK+SbuMxN2PiQBYAMRQQDEIIBeEEAHCCALhBAAwggG4QQAyIODANIggE4QKCAMRBAEwggFYQQBCIFBACwg8MA8iBQQA8IJDMbj4ZDSZ9LFdrLYZuAAO5uDyJRkWFC2HpBaZzKAAHmkciSy0sDywdwoH2WPTWGwA1AteSlNcBfhQWhRkI4VukMjU6lLpcbMkLZsgALQSjJyGSa5L8qBFXJRDJslBUBp69oBxDtDIPNRgO76TQAPi2Fstlk9JTyWB9ID9AZ8QYNofDkZA0agDtkGTgrp2ExtIvVWydAGYACx0JUTNQACzA7P41cQbE1mvdNzuD3yT2srxj0mUQS5JrNejUPMTpD0cpAFBbOywehgb017PbKBnVoyt3uj0cE7FUBnLB6C6XUEoVFPvagcfeL9SO73otkCZKr+UC1i6K4tPMp6Pg0w4XmOV4vO0iqJrBo4uAhrygRWFhTCgMztgARpgQyCiExSlPkPprvwuH4URIBqM0-jsCuOqAnq3gGqgCq0YRxGAYmQ5VmRXqUb6-qBsGeaLgWRZxgAHF+1BQMwHFQAarDqWAOBGg+tSLgJK7jPO+lqBkZAwDAQRUMwqn6m0LFGd0Ex9IM5mWdZtmvLgp57IcIG+QcGwAPRQAATP4eCBf5qrRSF4Wcd5cUBbsQVQKFEXqcgPmpTFyUZawjlOV8wk5Cm3riVmOYhmGMlRouxYLNsxWWKRwr2hqzI2FYKBqDAqh9lUy5jDU-BqFg4D9Ho-bLMAx7KMwABEDxUItRUpGxviRbpEzQahl7PD4JjtIZKQPIoWDNLguV6P411tkF3g3U9D2HOtXwTWAU1zpk-wJJq42TXo-DsnoeHtpdMjvZYm3KNxp6uWop3JD4Mj+GjviZYgYWbMo2G3o402o+j3g+FjYXsF1Aqdt2vY-cNFRzcoC1hXAcDQxY52XXI3g81AcB8-IHNQEzC1yJplzLDuPiXY4l1tbarDePIyviwO+AqOomhcCJ5X5AmLJ2E8ziuENp09OyfpYO2myW1Q1vpaFJwCCI4gAxM7Zg-hBRQJ74M4MFTu8C75zuya4mbA0DQcAYC3kNQkBhi+cvMHzYVyOLmmbfw8Px+sP0ZH73sdCLvw50aefTRbVvth0W4WIbVC9f1ZCDdyp2ba8FeUPn1f27XyMw78hoKpXBdFxDDNGfozObD0lXZg0Ib48koupzEse1RG9VqLzqtqy1o2A1903C8sXPNFFztnOIkU+dfrtcN4D-nM-wc31wlPJIb6wuLx9GMSqKTZip1-7EUjqMMYm0qAtCoCPYYzA7QY3Ft4ZgyClYqT5kgjB69ZA4KQd4bBqCMZEJUgQvBxDlYdEHjheymxMJWAggFOB+N3TvHFOpV4-4+4O2-Ow6QXFuEey9hDGhKQwEMXclZagtk1IaWFrKeU6kREAJakoVQGgoAx2Zgbbq9hHAm34D9bw+Yd5TxKiaUxhYGrSCsdGOgIJADIIPCQAfCCAEYQBEyIUS4igIAfhBcSAAEQXEFJcTglRLifAyYKI+wAHIlD0PgCAugDBGAgDITYcSpiJOSYYYwONpCZISXQQ27g5QwDYAmGY8QCJkDhlE1M3gkkz1SRjJpKS8lXHdJbBO3Y7YOzjAANgzqdEEflpqNgzt4IZB8dhBWYIpPm9Z07C1GXMhZ3gFnrQMO4c2czuk0F6TXbw+yuz8AnlgLZutombB1mVaJM1LBtNyWkzYOhmnGGYPU70fSbaBygPWQIVzUyFxEQHUKAKPRAqiDEH4IBmCszgPvfehUrhPNSfk7QOTUmfKhZRH5UUcZ-IhV8yi5yCWO3+YCu5DSoB-ThYsJF4U2YovwI3cgnIp7ulAGQSI-BYhMBwAAUlkO8SQEpTo1MUP0NkkYZEzIqCStMTc+oDQeRYNFxgZDpi7GwZC6qsWaoyMqlufZ1oaogGFbVHLUUGotUa5uqrWBAA\">\u041a\u043e\u0434<\/a><\/p>\n<p>\u041c\u043e\u0436\u043d\u043e \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c:<\/p>\n<pre><code class=\"python\">if self.environment.grid[nx][ny].resources &gt; 110<\/code><\/pre>\n<p>\u0422\u043e\u0433\u0434\u0430 \u0438 \u0433\u0438\u0444\u044b \u043f\u043e\u043b\u0443\u0447\u0430\u044e\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0437\u0440\u0435\u0436\u0435\u043d\u043d\u044b\u0435:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/853\/87d\/5af\/85387d5af36651ebc6bda5738b26756e.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/853\/87d\/5af\/85387d5af36651ebc6bda5738b26756e.gif\"\/><\/figure>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAwgKIAyPA+gGUAkgC0uUALxQAjAAY6AYwA2ZAM5qoAWUSKApspQMIALnxQLUKnuBR+-FBRRZ7zNQeAAaKAA9vibz0KADcUcAoIIKxvRTBlTFYzS2Sod2VgADog0PDIihxpbLCwCKjzFIs0zIowa01pAG1mPyhEVgBdcoqqjMMKAGt6qAbOisqPLIo9EABzZGl5BTHUibIZvSkoJbGetRQALw3pbj4hMQkxrpSexQYQECiHaj0fTbkoK+SbuMxN2PiQBYAMRQQDEIIBeEEAHCCALhBAAwggG4QQAyIODANIggE4QKCAMRBAEwggFYQQBCIFBACwg8MA8iBQQA8IJDMbj4ZDSZ9LFdrLYZuAAO5uDyJRkWFC2HpBaZzKAAHmkciSy0sDywdwoH2WPTWGwA1AteSlNcBfhQWhRkI4VukMjU6lLpcbMkLZsgALQSjJyGSa5L8qBFXJRDJslBUBp69oBxDtDIPNRgO76TQAPi2Fstlk9JTyWB9ID9AZ8QYNofDkZA0agDtkGTgrp2ExtIvVWydAGYACx0JUTNQACzA7P41cQbE1mvdNzuD3yT2srxj0mUQS5JrNejUPMTpD0cpAFBbOywehgb017PbKBnVoyt3uj0cE7FUBnLB6C6XUEoVFPvagcfeL9SO73otkCZKr+UC1i6K4tPMp6Pg0w4XmOV4vO0iqJrBo4uAhrygRWFhTCgMztgARpgQyCiExSlPkPprvwuH4URIBqM0-jsCuOqAnq3gGqgCq0YRxGAYmQ5VmRXqUb6-qBsGeaLgWRZxjI8jPtQUDMBxUAGqw6lgDgRoPrUi4CSu4zzvpagZGQMAwEEVDMKp+ptCxRndBMfSDOZlnWbZry4KeeyHCBvkHBsAD0UAAEz+HggX+aq0UheFnHeXFAW7EFUChRF6nID5qUxclGWsI5TlfMJOQpt64lZjmIZhjJUaLsWCzbMVlikcK9oasyNhWCgagwKofZVMuYw1PwahYOA-R6P2yzAMeyjMAARA8VCLUVKRsb4kW6RM0GoZezw+CY7SGSkDyKFgzS4Llej+NdbZBd4N1PQ9hzrV8E1gFNc6ZP8CSauNk16Pw7J6Hh7aXTI72WJtyjcaerlqKdyQ+DI-ho74mWIGFmzKNht6ONNqPo94PhY2F7BdQKnbdr2P3DRUc3KAtYVwHA0MWOdl1yN4PNQHAfPyBzUBMwtciaZcyw7j4l2OJdbW2qw3jyMr4sDvgKjqJoXAieV+QJiydhPM4rhDadPTsn6WDtpsltUNb6WhScAgiOIAMTO2YP4QUUCe+DODBU7vAu+c7smuJmwNA0HAGAt5DUJAYYvnLzB82Fcji5pm38PD8frD9GR+97HQi78OdGnn00W1b7YdFuFiG1QvX9WQg3cqdm2vBXlD59X9u18jMO-IaCqVwXRcQwzRn6Mzmw9JV2YNCG+PJKLqcxLHtURvVai86rastaNgNfdNwvLFzzRRc7ZziJFPnX67XDeA-5zP8HN9cJTySG+sLi8fRjEqik2Yqdf+xFI6jDGJtKgLQqAj2GMwO0GNxbeGYMgpWKk+ZIIwevWQOCkHeGwagjGRCVIELwcQ5WHRB44XspsTCVgIIBTgfjd07xxTqVeP+PuDtvzsOkFxbhHsvYQxoSkMBDF3JWWoLZNSGlhaynlOpERACWpKFUBoKAMdmYG26vYRwJt+A-W8PmHeU8SomlMYWBq0grHRjoCCQAyCDwkAHwggBGEARMiFEuIoCAH4QXEgABEFxBSXE4JUS4nwMmCiPsAByJQ9D4AgLoAwRgIAyE2HEqYiTkmGGMDjaQmSEl0ENu4OUMA2AJhmPEAiZA4ZRNTN4JJM9UkYyaSkvJVx3SWwTt2O2Ds4wADYM6nRBH5aajYM7eCGQfHYQVmAAA5JlQHrOnYWoy5mLL5ps9aBh3Dmzmd0mgvSa7eEOV2fgE8sA7N1tEzYOsyrRJmpYNpuS0mbB0M04wzB6nej6TbQOyzAg3NTIXERAdQr1iBQ8hpUA-ogGYKzOA+996FSuC81J+TtA5NSd84Fvya5RRxgCyFHo8WUUuYSx2gLSXQqiDEH48LFjIvCmzVF+BG7kE5FPd0oAyCRH4LEJgOAACksh3iSAlKdGpih+hskjDImZFQfmUSbn1AaTyLDouMDIdMXY2DIU1di7VGRVUtz7OtLVEAwq6q5Wio1VqTXN3VawIAA\">\u041a\u043e\u0434<\/a><\/p>\n<p>\u0410 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u0446\u0435\u043b\u0438\u0438 \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u0438\u0441\u044c \u0432 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435 \u043a\u0430\u0440\u0442\u044b?<\/p>\n<pre><code class=\"python\">def setup():     global environment, mycelium1, mycelium2     environment = Environment()          # \u0421\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0434\u043b\u044f mycelium1 \u0438 mycelium2     mycelium1_x = rand(0, environment.width)     mycelium1_y = rand(0, environment.height)     mycelium2_x = rand(0, environment.width)     mycelium2_y = rand(0, environment.height)          mycelium1 = Mycelium(mycelium1_x, mycelium1_y, environment, color(255, 100, 100))     mycelium2 = Mycelium(mycelium2_x, mycelium2_y, environment, color(100, 100, 255))<\/code><\/pre>\n<p>\u041d\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u0435\u0449\u0451 \u0431\u0438\u0442\u0432\u0430, \u043d\u043e \u0441\u0438\u043d\u0438\u0439 \u044f\u0432\u043d\u043e \u0443\u0441\u043f\u0435\u043b \u043e\u043a\u0440\u0443\u0436\u0438\u0442\u044c \u043a\u0440\u0430\u0441\u043d\u043e\u0433\u043e:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fef\/2f6\/923\/fef2f692377b3e0730a98620a10dcb05.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/fef\/2f6\/923\/fef2f692377b3e0730a98620a10dcb05.gif\"\/><\/figure>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAwgKIAyPA+gGUAkgC0uUALxQAjAAY6AYwA2ZAM5qoAWUSKApspQMIALnxQLUKnuBR+-FBRRZ7zNQeAAaKAA9vibz0KADcUcAoIIKxvRTBlTFYzS2Sod2VgADog0PDIihxpbLCwCKjzFIs0zIowa01pAG1mPyhEVgBdcoqqjMMKAGt6qAbOisqPLIo9EABzZGl5BTHUibIZvSkoJbGetRQALw3pbj4hMQkxrpSexQYQECiHaj0fTbkoK+SbuMxN2PiQBYAMRQQDEIIBeEEAHCCALhBAAwggG4QQAyIODANIggE4QKCAMRBAEwggFYQQBCIFBACwg8MA8iBQQA8IJDMbj4ZDSZ9LFdrLYZuAAO5uDyJRkWFC2HpBaZzKAAHmkciSy0sDywdwoH2WPTWGwA1AteSlNcBfhQWhRkI4VukMjU6lLpcbMkLZsgALQSjJyGSa5L8qBFXJRDJslBUBp69oBxDtDIPNRgO76TQAPi2Fstlk9JTyWB9ID9AZ8QYNofDkZA0agDtkGTgrp2ExtIvVWydAGYACx0JUTNQACzA7P41cQbE1mvdNzuD3yT2srxj0mUQS5JrNejUPMTpD0cpAFBbOywehgb017PbKBnVoyt3uj0cE7FUBnLB6C6XUEoVFPvagcfeL9SO73otkCZKr+UC1i6K4tPMp6Pg0w4XmOV4vO0iqJrBo4uAhrygRWFhTCgMztgARpgQyCiExSlPkPprvwuH4URIBqM0-jsCuOqAnq3gGqgCq0YRxGAYmQ5VmRXqUb6-qBsGeaLgWRZxjI8jPtQUDMBxUAGqw6lgDgRoPrUi4CSu4zzvpagZGQMAwEEVDMKp+ptCxRndBMfSDOZlnWbZry4KeeyHCBvkHBsAD0UAAEz+HggX+aq0UheFnHeXFAW7EFUChRF6nID5qUxclGWsI5TlfMJOQpt64lZjmIZhjJUaLsWCzbMVlikcK9oasyNhWCgagwKofZVMuYw1PwahYOA-R6P2yzAMeyjMAARA8VCLUVKRsb4kW6RM0GoZezw+CY7SGSkDyKFgzS4Llej+NdbZBd4N1PQ9hzrV8E1gFNc6ZP8CSauNk16Pw7J6Hh7aXTI72WJtyjcaerlqKdyQ+DI-ho74mWIGFmzKNht6ONNqPo94PhY2F7BdQKnbdr2P3DRUc3KAtYVwHA0MWOdl1yN4PNQHAfPyBzUBMwtciaZcyw7j4l2OJdbW2qw3jyMr4sDvgKjqJoXAieV+QJiydhPM4rhDadPTsn6WDtpsltUNb6WhScAgiOIAMTO2YP4QUUCe+DODBU7vAu+c7smuJmwNA0HAGAt5DUJAYYvnLzB82Fcji5pm38PD8frD9GR+97HQi78OdGnn00W1b7YdFuFiG1QvX9WQg3cqdm2vBXlD59X9u18jMO-IaCqVwXRcQwzRn6Mzmw9JV2YNCG+PJKLqcxLHtURvVai86rastaNgNfdNwvLFzzRRc7ZziJFPnX67XDeA-5zP8HN9cJTySG+sLi8fRjEqik2Yqdf+xFI6jDGJtKgLQqAj2GMwO0GNxbeGYMgpWKk+ZIIwevWQOCkHeGwagjGRCVIELwcQ5WHRB44XspsTCVgIIBTgfjd07xxTqVeP+PuDtvzsOkFxbhHsvYQxoSkMBDF3JWWoLZNSGlhaynlOpERACWpKFUBoKAMdmYG26vYRwJt+A-W8PmHeU8SomlMYWBq0grHRjoCCQAyCDwkAHwggBGEARMiFEuIoCAH4QXEgABEFxBSXE4JUS4nwMmCiPsAByJQ9D4AgLoAwRgIAyE2HEqYiTkmGGMDjaQmSEl0ENu4OUMA2AJhmPEAiZA4ZRNTN4JJM9UkYyaSkvJVx3SWwTt2O2Ds4wADYM6nRBH5aajYM7eCGQfHYQVmAAA5JlQHrOnYWoy5mLL5ps9aBh3Dmzmd0mgvSa7eEOV2fgE8sA7N1tEzYOsyrRJmhYK4IJACEIPCQAwiCAHEQWEaJwlQGhC4lxASiSQnBLCfEKJiRkigG03JaSoCQlhTk1JYUrhwpafwV4tiXy4Pqd6Pptd0UouMDIfgkF442T5viyilz1oYryVizYlK8U3NTBkQl9KSUQDCuS5luLqVsu9HSq4xLmmks2DocVEBmAMrSVixp3KyUBA9EK-IMQfggGYKzOA+996FTFe0nlkruWyu5bylocreUqppdEKAf0tWLD1eFNmBr8CN3IJyKe7pQBkEiPwWITAcAAFJZDvEkBKU6NTFD9DZJGGRMyKi2oyE3PqA0nkWDlTIdMXY2DIUzUqlNzd01culWFHNXrDXwvLamlufZWBAA\">\u041a\u043e\u0434<\/a><\/p>\n<p>\u0410 \u0437\u0434\u0435\u0441\u044c \u043e\u043d\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u0440\u044f\u0434\u043e\u043c \u0438 \u0441\u043f\u043b\u0435\u043b\u0438\u0441\u044c:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e78\/b39\/836\/e78b398368272144a0cfd6a9ee432790.gif\" alt=\"image\" title=\"\u041a\u0440\u0430\u0441\u043d\u044b\u0439 \u0437\u0430\u0433\u043d\u0443\u043b\u0441\u044f \u0440\u0430\u043d\u044c\u0448\u0435\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e78\/b39\/836\/e78b398368272144a0cfd6a9ee432790.gif\"\/><\/p>\n<div><figcaption><em>\u041a\u0440\u0430\u0441\u043d\u044b\u0439 \u0437\u0430\u0433\u043d\u0443\u043b\u0441\u044f \u0440\u0430\u043d\u044c\u0448\u0435<\/em><\/figcaption><\/div>\n<\/figure>\n<p>\u041c\u044b \u043d\u0435 \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u043c \u0440\u0430\u0441\u0442\u0438 \u0434\u0432\u0443\u043c \u043c\u0438\u0446\u0435\u043b\u0438\u044f\u043c \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0443\u0447\u0430\u0441\u0442\u043a\u0435. \u041f\u043e\u043a\u0430 \u0447\u0442\u043e.<\/p>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAwgKIAyPA+gGUAkgC0uUALxQAjAAY6AUwoA3FOAoRlOaQDkwFRfgiIAxooA2KBhBlSo+w8bOXrEAEz3HR-KYtkAZwCoAFkXKxsALnwoWKgqRWAofn4UChQsFOYAy2AAGigADwLEAuU1DS0KLALTMAtMVmi4lqgci2AAOnL1AyqdKB7K7RjW2PauijAE4OkAbWZiqERWAF1RsYnOqwoAa1moOfWx8dzuwxAAc2RpeQUTtrOyS8V7e5OtgJQAL1fpbj4QjEEhOG1aW1MDBAIG0qWoikKbygYJaEPqmHsdQaIFiAGIoIBiEEAvCCADhBAFwggAYQQDcIIAZECJgGkQQCcIFBAGIggCYQQCsIIAhECggBYQKmAeRAoIAeEBJLI5VJJApRcTBCSSl3AAHdsrkmjLYigkltlIorsgADzSOTNB5xGFYKEUZEPLbPV4AaluGtaLuAGIoSwoyDSjw6nSmM1NZr9XV1+qgAFpjZ05DIXS0tYNVL1NNpOoqUFQ5p7VjnEKtOjCAmAoeZggA+KAmhMnIZ9dOZ7O5-OF4ulkDlqO3TpwWubM7h65QJ3V2MAZgALHRbWcAgALMBK-hDxBsF0upMQqEw6pwhKIivSCzKVX+wOKALqkOxC1WmcfLCKGBvF1K+coE+hzqQ6GwtIHlABpQCeLBbBeV5QJQVDfquUBVnIUHUG0T4vsBMjBmaASoSOzo3kUJT2OB0yXnM25-nuAEIqsNo3uRu6ZFRiKjvG+GGCglzzgARpgBw6imwzVBmiiZOxnE8SAASLCU7D4e6OKegU3qoNaYncbxmH4Vug4CQ2QlNjmhR5t6baXh2XZVjI8hITBzCKVA3qsA5YA4L6xFBv2WFnBBnRkDAMDKFQzB2V6KyyfhHxnDs+y+f5gXBYiuDfl8vwjslPyvAA9FA7iEUlnwZWlBWpdluUOYl6WpQ6lVZTlSnIPlc6FdVxW1e4rDhRF4I6RUelYBmIBZoZxkFkWZllpe3ayO8XWojperDtGsgPrE8rxCgAQwP4a4TNeJxTPw2HgLsijrg8wCfhYzAAEQwlQ12da08kEcsKnfhBZFnL+DH7gikSrJpJwwqYWCLLgrUlODTW-AUEM1Y9qJYMdp1otiCNxEdYAnfwSqKBx86gzI6OxM9FhvVs0UBIDYyFDIJR00UZWIJ4x6eTsp20-TBSFEz7UrfEiRtIuy6rmewB7WMF0WFd7hwHAxOkIoIPMHIBSq1AcDq-ICtS1dchOaCDxPoUoNpKD-ELSsBTyNb+sbr4-hBFAXC6Wm1SYWtKRpBkWS7dT35KlmWDzvYgdUMHUCZdlAICCI4guls8545xAxJ-jOBR1AMdAvHs7+k29hzHMHCWFd5DUJARbQWbKsFO4cj605z38G95cvGLnRpynaxQM3reUO3Wxh8Haz82tVAbVtZA7Wq-vPYivptyjZzD-OEtms9PrWkvHddwT6-4eY0tEWcBlGXMBaeS0uu11AR8WGNJYTQEau23bs3OYdSNY6dCsPMDoMKrZzjlwPKWdeCx2BAUYBUDwGAhAewOUgsXiiWTupSSYtuYyX9mpCSBwjhugxFQJYVAt6HGYJGBm+sCjMCoawGh6tKH0KgLfImNDKEFCYTQhmXCWEcNkMw2h1s1j+xaPZZS0hmLxCWMgaqpDPJJkQkacqQEA5BxDtBasQFpDKWAonNBWBRH7TQXg2KAVqDBXEWFF0d4QCqRMbxD+dA-CBGCCXaWHtBZe3SJkfgmDFZP07JeA+GMzjtmfvYcJQSAh0DWjkS0MA2CYUuA0LiZAyb1jdjUKAJgj5uAZrk1wNh3BgiTIHCuy5V7wSgAANgbv7fEKVTqTgbgUOp78PgZWYAADlaVAcc9cFaNK6b09WozHqWByP7JpzByk0Eqeogocylz8D3lgCZrt+j2Bdr1LJZ1YhgnxIAQhAqSAGEQQA4iAUkZAyDkUAySAD4Qe5gABEF5CSIkFIuT0j5IKHJ4R8lQBJL8vJxSwSFIiLYfgiJpDlyCurTJ-ROir0emC-J-AbikGgrfeF6Y1nIr+cUyFkTMVws2emJFoL8UeDRUSixJLdkItxWCClwLbD2DCCy5gKKbAyEhQULlELSjJnpdoWo6IQDMFlnAN+b8OrMqKR4NllLOWUvcLyoF8rVWCuxdUUV2JaF9LuHXOWsr8Dj3ICqdeSZQBkC0PwOoTAcAAFJppSGNP7NJphdiKlLLShW2r+oT02ttfZsR+UyAGkuNgtFQ2UvDYGqea48UsvcBGi1crwUpvjcG1gQA\">\u041a\u043e\u0434<\/a><\/p>\n<p>\u0423 \u043d\u0430\u0441 \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u044d\u043d\u0435\u0440\u0433\u0438\u0438 \u0440\u0430\u0437\u043d\u044b\u0445 \u043c\u0438\u0446\u0435\u043b\u0438\u0435\u0432 \u043d\u0430\u0441\u043b\u0430\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043d\u0430 \u0434\u0440\u0443\u0433\u0430. \u041d\u0430\u0434\u043e \u0431\u044b \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u0442\u044c. \u041f\u043e\u043c\u0435\u043d\u044f\u0435\u043c \u044d\u0442\u043e \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"python\">def show_energy(self):     fill(255)     rect(0, 0, 50, 10)     fill(0)             text(int(self.energy), 10, 10)<\/code><\/pre>\n<p>\u0441\u043a\u0430\u0436\u0435\u043c, \u043d\u0430 \u0442\u0430\u043a\u043e\u0435:<\/p>\n<pre><code class=\"python\">def show_energy(self):     # \u041f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u044d\u043d\u0435\u0440\u0433\u0438\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u0438\u0446\u0435\u043b\u0438\u044f     energy_x = self.nodes[0][0] * self.size + 10  # \u041f\u043e\u0437\u0438\u0446\u0438\u044f x \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u044d\u043d\u0435\u0440\u0433\u0438\u0438     energy_y = self.nodes[0][1] * self.size + 10  # \u041f\u043e\u0437\u0438\u0446\u0438\u044f y \u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u0430 \u044d\u043d\u0435\u0440\u0433\u0438\u0438     fill(255)     rect(energy_x, energy_y, 50, 10)     fill(0)             text(int(self.energy), energy_x + 5, energy_y + 8)<\/code><\/pre>\n<p>\u0418 \u0432\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0433\u043e \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u044d\u043d\u0435\u0440\u0433\u0438\u044e \u0432 \u043e\u0434\u043d\u043e\u043c \u0438 \u0442\u043e\u043c \u0436\u0435 \u043c\u0435\u0441\u0442\u0435 (0, 0), \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u0435\u043a\u0441\u0442 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u0438\u0446\u0435\u043b\u0438\u044f \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/645\/d77\/d8e\/645d77d8ed7ea8f6cd7de888c6198431.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/645\/d77\/d8e\/645d77d8ed7ea8f6cd7de888c6198431.gif\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0be\/800\/8ef\/0be8008ef49034c19ee541cb468541ff.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/0be\/800\/8ef\/0be8008ef49034c19ee541cb468541ff.gif\"\/><\/figure>\n<p>\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044d\u043d\u0435\u0440\u0433\u0438\u0438 \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u0440\u0430\u0441\u0438\u0432\u043e: \u0431\u0435\u043b\u044b\u0439 \u0444\u043e\u043d \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u0435\u0442, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0438\u0441\u043f\u0440\u0430\u0432\u0438\u043c: \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0444\u043e\u043d \u0447\u0451\u0440\u043d\u044b\u043c, \u0430 \u0447\u0438\u0441\u043b\u043e \u2014 \u0431\u0435\u043b\u044b\u043c:<\/p>\n<pre><code class=\"python\">def show_energy(self):     energy_x = self.nodes[0][0] * self.size + 10     energy_y = self.nodes[0][1] * self.size + 10          fill(0)     no_stroke()     rect(energy_x, energy_y, 60, 20)          fill(255)     text_size(12)     text_align(CENTER)          text(int(self.energy), energy_x + 30, energy_y + 15)  # \u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0443\u0435\u043c \u0442\u0435\u043a\u0441\u0442<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a70\/ccd\/60a\/a70ccd60adcbcbe98606545aa4f803e4.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a70\/ccd\/60a\/a70ccd60adcbcbe98606545aa4f803e4.gif\"\/><\/figure>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAwgKIAyPA+gGUAkgC0uUALxQAjAAY6AUwoA3FOAoRlOaQDkwFRfgiIAxooA2KBhBlSo+w8bOXrEAEz3HR-KYtkAZwCoAFkXKxsALnwoWKgqRWAofn4UChQsFOYAy2AAGigADwLEAuU1DS0KLALTMAtMVmi4lqgci2AAOnL1AyqdKB7K7RjW2PauijAE4OkAbWZiqERWAF1RsYnOqwoAa1moOfWx8dzuwxAAc2RpeQUTtrOyS8V7e5OtgJQAL1fpbj4QjEEhOG1aW1MDBAIG0qWoikKbygYJaEPqmHsdQaIFiAGIoIBiEEAvCCADhBAFwggAYQQDcIIAZECJgGkQQCcIFBAGIggCYQQCsIIAhECggBYQKmAeRAoIAeEBJLI5VJJApRcTBCSSl3AAHdsrkmjLYigkltlIorsgADzSOTNB5xGFYKEUZEPLbPV4AaluGtaLuAGIoSwoyDSjw6nSmM1NZr9XV1+qgAFpjZ05DIXS0tYNVL1NNpOoqUFQ5p7VjnEKtOjCAmAoeZggA+KAmhMnIZ9dOZ7O5-OF4ulkDlqO3TpwWubM7h65QJ3V2MAZgALHRbWcAgALMBK-hDxBsF0upMQqEw6pwhKIivSCzKVX+wOKALqkOxC1WmcfLCKGBvF1K+coE+hzqQ6GwtIHlABpQCeLBbBeV5QJQVDfquUBVnIUHUG0T4vsBMjBmaASoSOzo3kUJT2OB0yXnM25-nuAEIqsNo3uRu6ZFRiKjvG+GGCglzzgARpgBw6imwzVBmiiZOxnE8SAASLCU7D4e6OKegU3qoNaYncbxmH4Vug4CQ2QlNjmhR5t6baXh2XZVjI8hITBzCKVA3qsA5YA4L6xFBv2WFnBBnRkDAMDKFQzB2V6KyyfhHxnDs+y+f5gXBYiuDfl8vwjslPyvAA9FA7iEUlnwZWlBWpdluUOYl6WpQ6lVZTlSnIPlc6FdVxW1e4rDhRF4I6RUelYBmIBZoZxkFkWZllpe3ayO8XWojperDtGsgPrE8rxCgAQwP4a4TNeJxTPw2HgLsijrg8wCfhYzAAEQwlQ12da08kEcsKnfhBZFnL+DH7gikSrJpJwwqYWCLLgrUlODTW-AUEM1Y9qJYMdp1otiCNxEdYAnfwSqKBx86gzI6OxM9FhvVs0UBIDYyFDIJR00UZWIJ4x6eTsp20-TBSFEz7UrfEiRtIuy6rmewB7WMq78Ii0juaRch5greA1Wl8gulLNzvSRARzArcwyDRjX+iljrTRu52XcwcjE85h1I1jp028DoNS0sGsFAAbHIBTuNb5snBdFhXe4cBwDbT6FJkJvMDIfMPBHmRkFYlwsNwugACpcAASjbLoJ8waSg-xC0rGUFzXNLaXjt7yYl-wyDVTIYd4lAgBkIByRJcoAAiAkl3gDCIBywpQFyHJkoAgiBcnQfiBMEXC6Wm1SYWtKRpBkWS7dT35KlmWDzvY29ULvUCZdlAICCI4guls8545xAw3-jOAn1AZ9Apfs7+k29hzHMHCWFd5BqCQCLNBQuVsfZyGtk5Z6-A3qAJeGLToD875rCgDAuBlAEFbAPrvNY-M1pUA2ltMgO01Sb2eoiX08CUZnBwfOCWZpno+mtNQxByCCYMPwuYIOREzgGSMnMAsnkWiByujXbhFgxolgmgEAoNc7g2weAdTGJ0zqzWdosZWr8L5cDyi-Xg59gQFG0UY-RgIdHsDlILF4olb7qUkmLbmMlN5qQkgcI4boMRUCWFQZhhxmCRgZtbAoMc5GsBCTXQJ4SoDgNkNEgJDMokhMSUTEJgSCipJiQzImANPL2WUtIZi8QlgN3iIgTySZEJGnKkBLeO897QWrEBaQylgLXzsVgTeSi7FuNigFagwV8lhRdHeEAqkem8VmsiXw-gggv3-kvQWK90iZH4I40g41OyXk4RjM47YZH2H2VsgIdA1o5EtDANgmFLgNC4knZMvUF41CgCYbhbgGavNcDYdwYIkzbyAcuOh8EoBexrA8fE0dJyQM9pAm20cAAc0KoDjl9jbCFGVmCIprlix6lgcib2jv8mggL6kFCJUufg7CsC4vnv0ewc9Hn9DUbRFugBCECpH3QA4iAUkZAyDkUAySAD4QQVXdeQkiJBSLk9I+SCheeEd5UASRyred8sEnyIi2ErtIQBQUa71ieZ0Ohj11XvProc6CsT9X9CQR0418rvlatIBavVtL0xGrVfajwZrtXOrLoy9MVLHoepVbYewYQQ3MBNTYGQ0sChRs1aUB5qZ+i1HRCAZgIc4AZKRQou1IaWahE9ZGz17hY3Kq+V6xNVrtCpuxDHHNSLM0dVOYLKg5AVQMKTKAMgWh+B1CYDgAApNNKQxpN53NMLsRUpYBl+weNWoShDNrbWZeWjVMgBpLjYCytd7zOhLuIWuPNFb3Cbo7cGk9+6iErtYEAA\">\u041a\u043e\u0434<\/a><\/p>\n<p>\u0412 \u043e\u0431\u0449\u0435\u043c \u044f \u0437\u0430 \u0432\u0430\u0441 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u043b \u043a\u043e\u0434 \ud83d\ude42 \u0417\u0434\u0435\u0441\u044c \u0440\u0430\u0437\u043d\u044b\u0435 \u043c\u0438\u0446\u0435\u043b\u0438\u0438 \u0441\u0442\u0430\u043b\u0438 \u0440\u0430\u0441\u0442\u0438 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0433\u043b\u0430. \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u043a\u0442\u043e \u043f\u043e\u0431\u0435\u0434\u0438\u0442:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e05\/bbe\/a35\/e05bbea3580df16dbf321a5fc67a1815.gif\" alt=\"image\" title=\"\" width=\"602\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/e05\/bbe\/a35\/e05bbea3580df16dbf321a5fc67a1815.gif\"\/><\/figure>\n<p>\u041f\u043e\u0445\u043e\u0436\u0435, \u0441\u0438\u043d\u0438\u0439:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f70\/d56\/4d4\/f70d564d4f20aeb69df887e63b6ed3a9.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/f70\/d56\/4d4\/f70d564d4f20aeb69df887e63b6ed3a9.gif\"\/><\/figure>\n<p>\u0410 \u0437\u0434\u0435\u0441\u044c \u043e\u0431\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u0440\u0430\u0441\u043d\u044b\u0439 \u043e\u043f\u0435\u0440\u0435\u0436\u0430\u0435\u0442:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dc6\/ac0\/940\/dc6ac0940bb3a07597ee1158ab061dc1.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/dc6\/ac0\/940\/dc6ac0940bb3a07597ee1158ab061dc1.gif\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6d2\/b5c\/6cf\/6d2b5c6cf01002d7056e80e864d433df.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6d2\/b5c\/6cf\/6d2b5c6cf01002d7056e80e864d433df.gif\"\/><\/figure>\n<p>\u041c\u043e\u0436\u043d\u043e \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440 \u044f\u0447\u0435\u0435\u043a, \u043d\u043e \u0435\u0441\u043b\u0438 \u043c\u0438\u0446\u0435\u043b\u0438\u0438 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u0434\u0430\u043b\u0435\u043a\u043e, \u0442\u043e \u0443\u0441\u043f\u0435\u044e\u0442 \u0437\u0430\u0433\u043d\u0443\u0442\u044c\u0441\u044f \u0441\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/de3\/a51\/04c\/de3a5104ca4fb4713d39b5df0dacc003.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/de3\/a51\/04c\/de3a5104ca4fb4713d39b5df0dacc003.gif\"\/><\/figure>\n<p>\u0410 \u0435\u0441\u043b\u0438 \u0432\u0431\u043b\u0438\u0437\u0438, \u0442\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u044f:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/51b\/143\/996\/51b143996a7621ce83557d3eb8598b0f.gif\" alt=\"image\" title=\"\" width=\"602\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/51b\/143\/996\/51b143996a7621ce83557d3eb8598b0f.gif\"\/><\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6fa\/25b\/8a9\/6fa25b8a99b64518802cc1e6076abc1a.gif\" alt=\"image\" title=\"\" width=\"602\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6fa\/25b\/8a9\/6fa25b8a99b64518802cc1e6076abc1a.gif\"\/><\/figure>\n<p>\u0425\u043e\u0440\u043e\u0448\u043e \u0431\u044b \u0432\u043d\u0435\u0441\u0442\u0438 \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u0440\u0435\u0434\u0443 \u0438\u043b\u0438 \u0441\u0430\u043c \u043c\u0438\u0446\u0435\u043b\u0438\u0439.<\/p>\n<h2>\u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f<\/h2>\n<p>\u0421\u0430\u043c\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0435: \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0446\u0432\u0435\u0442\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u043c\u0438:<\/p>\n<pre><code class=\"python\">mycelium1 = Mycelium(mycelium1_x, mycelium1_y, environment, color(rand(0, 255), rand(0, 255), rand(0, 255))) mycelium2 = Mycelium(mycelium2_x, mycelium2_y, environment, color(rand(0, 255), rand(0, 255), rand(0, 255)))<\/code><\/pre>\n<blockquote>\n<p>\u041b\u0443\u0447\u0448\u0435 \u0431\u044b \u043f\u0435\u0440\u0435\u043d\u0435\u0441\u0442\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0432 \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440.<\/p>\n<\/blockquote>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6d4\/ded\/91d\/6d4ded91dee34a7a0be2620b9d359294.gif\" alt=\"image\" title=\"\" width=\"602\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6d4\/ded\/91d\/6d4ded91dee34a7a0be2620b9d359294.gif\"\/><\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/08f\/1af\/954\/08f1af9544a75dde9870726b946a3dd9.gif\" alt=\"image\" title=\"\" width=\"602\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/08f\/1af\/954\/08f1af9544a75dde9870726b946a3dd9.gif\"\/><\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7a7\/40a\/5ca\/7a740a5ca2f7a9d55465f6b320299c2c.gif\" alt=\"image\" title=\"\" width=\"602\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7a7\/40a\/5ca\/7a740a5ca2f7a9d55465f6b320299c2c.gif\"\/><\/figure>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAwgKIAyPA+gGUAkgC0uUALxQAbHQCmFAG4pwFCIpzSAcmArz8ERAGN5AGxQMIARilRd+wyfOWIAJjsOD+Y2bIBnfygAWWcLKwAufCgYqCp5YCh+fhQKFCxk5n9zYAAaKAAPfMR8xRU1DQosfOMwM0xWKNjmqGyzYAA6MtU9Sq0oborNaJaYts6KMHig6QBtZiKoRFYAXRHR8Y6LCgBrGahZtdGxnK79EABzZGlrAAZb9ZbNsgv5Owfj1tP-FAAvN+k3D4QjEEmOj2am2MDBAIE0KWo8gK7ygENiULqmDstXqIBiAGIoIBiEEAvCCADhBAFwggAYQQDcIIAZEBJgGkQQCcIFBAGIggCYQQCsIIAhECggBYQGmAeRAoIAeEDJbK5NLJQrRMUe8USF3AAHcsjlGnLUIlNop5JdkAAeaS3JqfWJwrAwiioz7PV5QADUNy1zS1wCxFEWFGQqS+7Q6k2mZvN-s6eoNUAAtCaOrdrK7YihEoNepoOsqUFRZl6VjnECsOnD-GAYaYggA+KCmxOjVPqdOZ7O5-OF4ulkDl6M3DpwWtPU4Rq5O2O3ADMABY6HbvgALMAq-hDxBsLVa5NhjrQ2Hw1LxZEV6RmRTqgNB+T+TWhmKW63T47+LDyGDvLUq2coY+b7dwqoI-dQIaUDHiwmznpeUCUFQm7LlAVa3JB1CtE+L5AdYIbmo+z4jlACbXoUxR2GBUwXrMUIwr+GR7kiKy2te5E7n+1HIs6uH9voKAXLOABGmD7Lqyg9A2VQZvIGQcVxvEgP4CzFOw+EeniXr5D6qA2hJPF8Rh+EbgJ5RpiJTY5gUeY+m2F4dl2VbWHciHQcwylQD6rBOWAOB+sRwb9jOZ4kf4HRkDAMCKFQzAOd6yzyfhD6nNsewBUFIVhciuCbj8-xOmlfxvAA9FAbiEalmzpW8jpZRleUFU5KXlaVtVQJVKnIEV3zZZlxVtZVrBRdFA4BvWfQZiAWbGaZBZFhZZYXt2uEfL1fXhucw4xmxCoJHEKD+DAfgruMV7HJM-CPuAOzyKunzAJ+ZjMAARHCVA3T1LSKQRSxqZu4FkacP67oiBQRCs2nHHCxhYAsuAdf8xQQ61UO1fkkPyE9kJYCdZ0YriyPoqjYCnfwKryJxs5g9YWMxC9ZjvZscX+EDowFNYxSM4UVWIB4R79tsZ0M0z+QFKzbjsGtOrzouy6nsA+11ktiD8Mi0ieaRtx5sreD1WVdxasu-DXB9fmzMrszWLRLUBiVmWa587pXcwtxk65R046d53A-IoPMNrizayUsi3Pkbh22uF0224cBwPbT4FBkJXMNYgtapHGRkBYFwsNw2gACpcAASvbCdImDqRgwJ+pXKwpQy3LmVjn7AyV8gGvhwSUCAGQgXIkjygACIGSneAMIgXKilAPJchSgCCIDydC+AEQRcIJQxVBhipJAi6SZHtdObiqWZYLOdhb1QO8NXlQICCI4hapss6E1x-RX0TOA5cfvCn6CF+nE2dizLMHDmNd5DUJAIsUEi6239vcbqUAXr8Hev-V4EsOh3xvqsSBWJoF+lgejU4+8d6rHvDEJeVBNrbTILtDUG8XrInQZQOBmxsGziluaF6vobQYPgYg4mDD8KmDMJTBW79hrZhMrMAs3lYiXR4aAqA3CzATRLFNfw+Ra53EDvNB2x1cZnXtp8EGYMaonxBOIQqUB9Fny4PkExoJzHPwMVwIWzQl6vHEtfTS0kJZ8zkhvDSUl9iHHdFiKgiwqDMIOMwKMzM7b5Fjoo8uUBJFhJiZI0mkSwn5HiZE5maTYkpNwgk5mpNAbsQinYFicRFgNziIgfsG4ELGmqoBTe29d5QWrIBaQqkgKX2cVgDenwvF8QSsFagYVHLOXtreEA6lnHeNUZPPwgRjG-0XutZIqRV78DcaQSanYLycPRKcds8i7AHO2f4OgS9shWhgGwDCFx6jcWTnXfSwlqhQCMNw1wzM3kuCsG4R4G4t4AMXHQuCvsayfEJDHCc9x8gyHARfbKzAAAc0KoBjgDvbCFCLkW12xU9cw2QN4xwBTQIFjT8jEoXPwdhWA8VzwMv0WeTy+guzos3QAhCA0l7oAcRAqTMiZFyKAFJAB8IEKzu-IyQkipDyRkAphSvLCB8qAZJ5XvJ+Y8L54QbBV2kP-UKtcBrpjoU9DVHydZHKgpIg1IlqXGoVT87VpALX6rpc8joRr1V2vcGanVTqK5MvTDax4HrVU2DsKEENzATVWGsHLfIUatU+ytS8nEmBmC6skaHcO+R0210zTEnN-sw7dVtSG9mIRPWRs9W4WNKrvlesTS6voNRMQgDTb6-KRbs3trzV2oZuai3dTOetKg5A1QMI3KAMgGh+C1CYDgAApLNKQJoN73OMDsZUpY+32yTR0QhW0dostrZq6wQ0FxsFZcej5e6iGHpLXWtwZ6x3BofTeg9JC2BAA\">\u041a\u043e\u0434<\/a><\/p>\n<h2>\u0418\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u043c \u043e\u0448\u0438\u0431\u043a\u0443<\/h2>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0441 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u0438\u0446\u0435\u043b\u0438\u044f \u043d\u0430 \u043a\u0430\u0440\u0442\u0435 \u043e\u043d \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u043b \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0440\u043e\u0432\u043d\u043e \u0432 \u0446\u0435\u043d\u0442\u0440\u0435 \u043a\u043b\u0435\u0442\u043a\u0438. \u041c\u043e\u0436\u0435\u0442, \u0432\u044b \u044d\u0442\u043e \u0437\u0430\u043c\u0435\u0442\u0438\u043b\u0438 \u0440\u0430\u043d\u044c\u0448\u0435. \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e <code>rand()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0435 \u0446\u0435\u043b\u043e\u0435 \u0447\u0438\u0441\u043b\u043e:<\/p>\n<pre><code class=\"python\">mycelium1_x = rand(0, environment.width) print(mycelium1_x)<\/code><\/pre>\n<p>\u041f\u043e\u043f\u0440\u0430\u0432\u0438\u043c:<\/p>\n<pre><code class=\"python\">mycelium1_x = int(rand(0, environment.width)) mycelium1_y = int(rand(0, environment.height)) mycelium2_x = int(rand(0, environment.width)) mycelium2_y = int(rand(0, environment.height))<\/code><\/pre>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAwgKIAyPA+gGUAkgC0uUALxQAjADY6AUwoA3FOAoRlOaQDkwFRfgiIAxooA2KBhBlSo+w8bOXrEAEz3HR-KYtkAZwCoAFkXKxsALnwoWKgqRWAofn4UChQsFOYAy2AAGigADwLEAuU1DS0KLALTMAtMVmi4lqgci2AAOnL1AyqdKB7K7RjW2PauijAE4OkAbWZiqERWAF1RsYnOqwoAa1moOfWx8dzuwxAAc2RpGQAGO43WrbJLxXtHk7azgJQAL3e0m4fCEYgkJyeLS2pgYIBA2lS1EUhQ+UEhcWh9Uw9jqDRAsQAxFBAMQggF4QQAcIIAuEEADCCAbhBADIgpMA0iCAThAoIAxEEATCCAVhBAEIgUEALCC0wDyIFBADwg5PZ3Np5OF6NiTwSSUu4AA7tlck15agkltlIorsgADzSO7NL5xeFYWEUNFfF5vKAAalu2pa2uA2IoSwoyDS3w6nSmM3NFoDXX1hqgAFpTZ07jI3XEUEkhn1tJ0VSgqHNvatc4hVp14QEwLDzMEAHxQM1JsZpzQZrM5vMFoslssgCsx26dOB155nSPXZ1xu4AZgALHR7T8ABZgVX8YeINja7Up8OdGFwhFpBIoyvSCzKDWB4OKAJasOxK02mcnAJYRQwD7a1VzlAnrc7+HVREHlARpQCeLBbBeV5QJQVBbiuUDVncUHUG0z6vsBMihhaT4vqOsgDksNxbhBczQrCf6ZPuyKrHaN6kbu-6USiLp4TeUCGCglxzgARpgBx6qovSNtUmaKJk7GcTxIABIsJTsKxnr4t6BS+qgtridxvGYaxm78RU6bCc2uaFPmvrtpenbdtWMj3EhMHMEpbErGxYA4P64HTJeWmsRiZwQZ0ZAwDAyhUMw9k+iscneZsZw7Ps-mBcFoUorgW6-ACzqpf87wAPRQO4JR4Jl6VOkVOV5cpyWlRlWxpWV+WOYVNVZdVPzNbl7isJFUVQkOAnDAZIDZkZJmFsW5nlpePayJ83U9YGcGxnhiqJPEKABDA-irhM14nFM-BPuAuyKGuXzAF+FjMAARPCVCXV1rQKUUBVub5HkBCRZy-nuSKFJEqxeWM8KmFgiy4E1AIlGDrUQ6VBTg4o91Qlgh3HZieKIxiyNgEd-CqooHFziDMgY7Ej0WKpW6xQEAOtIUMglPTRT1YgnjHgOOzHXTDMFIUzMdQ+sRKm0C5LiuZ7ADt9YXNc-AotI7kzHMdz5srjXQ+8JX3NqK78IRCuXkr+YyNRKXwxlWtfB653MHcJPOftWNHSdJxAyDOtLDrpRQHIdwFO4tvrqd1vuHAcB28+hSZLVzAyPzXwR5kZBWJcLDcLoAAqXAAEp29qCfMGkIP8Qa1ysGU0uILLGXjr7gwV7r5th4SUCAGQg3KkrygACIOSneAMIg3JilAvLcpSgCCILydB+IEwRcH1+lYJhQspGkGRZNtNNbKq2ZYHO9hb1QO9QNluXAgIIjiNqWxzvjnEDNfBM4MfUCn6CF+zoGzb2HMcwcJYF3kNQSAxZoKFxtn7B4nUoCPX4BTABbxxadHvrfNYUDsQwP9HA1GZx947zWALeIK0qBrQ2mQLamoaaPRRBgyg8DN7bznJLC0j0-S2kwQgpBhNGGsXMBYcm8sziGWMnMQsA4WhnV4WAqAPCLBjVLBNAIBRa73ADrNPaB1sbHTtl8V2ixCov3PlwAqKV9FggKCY8QZjeBnzBOwZaypRL8HUpJaSEweayRpk43iX9jgnEelQJYVAWGHGYNGRmtsCgx0UWXKAkjQnRMkcTCJoSChxIiYzVJMTkmyHiYzYm-0BwORUtIJi8QCIZUCQOTciETRsRRMBOhB9d7QRrEBaQKl6lnA4QvURcRPFSXikFagoVCkRW1HeEAakb4aSkrNSe-ggjPz-ovFay90iZH4OLAoHZ5FcJ8oGbZXZJrSAORWOgQscjWhgGwTClwGhcSTnXPSQkahQBMDwtwjM3muBsO4J4m4t6AKXDg3e1Yfa1i+ESaOk4HgFDBXbaOAAOGFUBxz+ztpCrKzAkW12xfdSwOQN6YoBTQIF9CCjEsXPwLpeK57PPsLPJ5-RnY0WboAQhBaS90AOIg1IWTMm5FASkgA+EEFZ3AU5JSTUl5EyQUIpXnhA+VAckcr3k-KeF8iItgq7SFAQAkKtcGz9E6MCzqar5U2BkA3bV1RmC6skQajM1L7rqrcO4LVqkQa2v1bSw1xqnVmo8Ja91NroJ2u9Q6qZWATXuhaM6819gwgqogMwWNmqlgpotV7e11RahYhAMGoZyi-ah2ibawteVi1bJDWWkOYco1xBTazUI-rk3+tdWm1tuty6Mu0DmvE+aQrVoraQKtyKa0lpHbXMdJr8BCyoOQdUjDNygDIFofgdQmA4AAKTTSkKaGm9zTC7BVGWIZKiThZqwJ0Ih61NrMuVd82wmY1RsBZfejVMgr3ENvX6xN7gn2LjvQ2z9N7SFsCAA\">\u041a\u043e\u0434<\/a><\/p>\n<p>\u0425\u043e\u0442\u044f \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u044d\u0442\u043e \u0444\u0438\u0447\u0435\u0439, \u0430 \u043d\u0435 \u0431\u0430\u0433\u043e\u043c, \u0442\u0430\u043a \u043a\u0430\u043a \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u0438\u0446\u0435\u043b\u0438\u0438 \u043d\u0435 \u0442\u0430\u043a \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u0441\u043f\u043b\u0435\u0442\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c, \u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043f\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u0440\u043e\u0433\u0430\u043c\u0438 (\u0433\u0438\u0444\u0430\u043c\u0438):<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ab3\/ae2\/ca5\/ab3ae2ca5336fcfdcac84522436a5a90.gif\" alt=\"image\" title=\"\" width=\"602\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ab3\/ae2\/ca5\/ab3ae2ca5336fcfdcac84522436a5a90.gif\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/db3\/008\/40e\/db300840e53444ac70c148af4942a691.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/db3\/008\/40e\/db300840e53444ac70c148af4942a691.gif\"\/><\/figure>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u0446\u0432\u0435\u0442\u0430 \u0434\u0432\u0443\u0445 \u043c\u0438\u0446\u0435\u043b\u0438\u0435\u0432 \u043b\u0435\u0433\u043a\u043e \u0441\u043b\u0438\u0432\u0430\u044e\u0442\u0441\u044f. \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u0438\u0445 \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442\u043d\u044b\u043c\u0438?<\/p>\n<pre><code class=\"python\"># \u0413\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043d\u0442\u0440\u0430\u0441\u0442\u043d\u044b\u0445 \u0446\u0432\u0435\u0442\u043e\u0432 mycelium1_color = color(rand(200, 255), rand(0, 100), rand(0, 100))  # \u0422\u0435\u043f\u043b\u044b\u0435 \u043e\u0442\u0442\u0435\u043d\u043a\u0438 mycelium2_color = color(rand(0, 100), rand(100, 255), rand(200, 255))  # \u0425\u043e\u043b\u043e\u0434\u043d\u044b\u0435 \u043e\u0442\u0442\u0435\u043d\u043a\u0438  mycelium1 = Mycelium(mycelium1_x, mycelium1_y, environment, mycelium1_color) mycelium2 = Mycelium(mycelium2_x, mycelium2_y, environment, mycelium2_color)<\/code><\/pre>\n<h2>\u0412\u044b\u0436\u0438\u0432\u0430\u043d\u0438\u0435. \u041f\u043e\u0436\u0438\u0440\u0430\u0442\u0435\u043b\u0438<\/h2>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0435\u043c, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0437\u043d\u044b\u0435 \u043c\u0438\u0446\u0435\u043b\u0438\u0438 \u0441\u0440\u0430\u0436\u0430\u043b\u0438\u0441\u044c \u0434\u0440\u0443\u0433 \u0441 \u0434\u0440\u0443\u0433\u043e\u043c \u0437\u0430 \u0432\u044b\u0436\u0438\u0432\u0430\u043d\u0438\u0435. \u041f\u0443\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0440\u0430\u0441\u0442\u0430\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u043e\u0439. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438 \u043f\u043e\u0438\u0441\u043a\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0443\u0437\u043b\u0430 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0437\u0435\u043c\u043b\u0438, \u043d\u043e \u0438 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0443\u0437\u043b\u0430 \u00ab\u0432\u0440\u0430\u0436\u0435\u0441\u043a\u043e\u0433\u043e\u00bb \u043c\u0438\u0446\u0435\u043b\u0438\u044f. \u0415\u0441\u043b\u0438 \u043e\u043d \u043d\u0430\u0439\u0434\u0435\u043d, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u0440\u0430\u0436\u0435\u0441\u043a\u0438\u0439 \u0443\u0437\u0435\u043b \u0438 \u0435\u0433\u043e \u0441\u0432\u044f\u0437\u0438, \u0430 \u0441\u0430\u043c\u043e\u043c\u0443 \u0442\u0430\u043c \u0432\u044b\u0440\u0430\u0441\u0442\u0438.<\/p>\n<p>\u041f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u044f \u0443\u0437\u043b\u044b, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443:<\/p>\n<pre><code class=\"python\">if (self.environment.grid[nx][ny].resources &gt; 110 or (nx, ny) in other_mycelium.nodes) and (nx, ny) not in self.nodes:<\/code><\/pre>\n<p>\u0418 \u0441\u0430\u043c \u0430\u043a\u0442 \u043f\u043e\u0435\u0434\u0430\u043d\u0438\u044f:<\/p>\n<pre><code class=\"python\">if (nx, ny) in other_mycelium.nodes:  # \u0415\u0441\u043b\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0443\u0437\u0435\u043b \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043c\u0438\u0446\u0435\u043b\u0438\u044f     other_mycelium.nodes.remove((nx, ny))  # \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0443\u0437\u0435\u043b     other_mycelium.energy -= 1  # \u0423\u0440\u0435\u0437\u0430\u0435\u043c \u044d\u043d\u0435\u0440\u0433\u0438\u044e     # \u0422\u0430\u043a\u0436\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0432\u0441\u0435 \u0441\u0432\u044f\u0437\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u043b \u044d\u0442\u043e\u0442 \u0443\u0437\u0435\u043b     other_mycelium.links = [link for link in other_mycelium.links if link[0] != nx * self.size + self.size \/ 2 or link[1] != ny * self.size + self.size \/ 2]<\/code><\/pre>\n<p>\u0412\u0441\u0451 \u0432\u043c\u0435\u0441\u0442\u0435:<\/p>\n<pre><code class=\"python\">for nx, ny in neighbors:     if (self.environment.grid[nx][ny].resources &gt; 110 or (nx, ny) in other_mycelium.nodes) and (nx, ny) not in self.nodes:         self.nodes.append((nx, ny))         self.links.append((x * self.size + self.size \/ 2, y * self.size + self.size \/ 2, nx * self.size + self.size \/ 2, ny * self.size + self.size \/ 2))         self.environment.grid[nx][ny].resources -= 10         self.energy -= 1              if (nx, ny) in other_mycelium.nodes:  # \u0415\u0441\u043b\u0438 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0443\u0437\u0435\u043b \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043c\u0438\u0446\u0435\u043b\u0438\u044f         other_mycelium.nodes.remove((nx, ny))  # \u0423\u0434\u0430\u043b\u044f\u0435\u043c \u0443\u0437\u0435\u043b         other_mycelium.energy -= 1  # \u0423\u0440\u0435\u0437\u0430\u0435\u043c \u044d\u043d\u0435\u0440\u0433\u0438\u044e         # \u0422\u0430\u043a\u0436\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0432\u0441\u0435 \u0441\u0432\u044f\u0437\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u043b \u044d\u0442\u043e\u0442 \u0443\u0437\u0435\u043b         other_mycelium.links = [link for link in other_mycelium.links if link[0] != nx * self.size + self.size \/ 2 or link[1] != ny * self.size + self.size \/ 2]<\/code><\/pre>\n<p>\u0422\u043e \u0435\u0441\u0442\u044c \u043c\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0439 \u0443\u0437\u0435\u043b \u0443\u0437\u043b\u043e\u043c \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043c\u0438\u0446\u0435\u043b\u0438\u044f. \u0415\u0441\u043b\u0438 \u0434\u0430, \u0442\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u044d\u0442\u043e\u0442 \u0443\u0437\u0435\u043b \u0438 \u0432\u0441\u0435 \u0435\u0433\u043e \u0441\u0432\u044f\u0437\u0438 \u0441 \u0447\u0443\u0436\u0438\u043c \u043c\u0438\u0446\u0435\u043b\u0438\u0435\u043c.<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/de4\/3a0\/15e\/de43a015ea983f744dc6825ab3283e53.gif\" alt=\"image\" title=\"\" width=\"602\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/de4\/3a0\/15e\/de43a015ea983f744dc6825ab3283e53.gif\"\/><\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6aa\/c6f\/b2d\/6aac6fb2db78bb960f21367146f9ed5c.gif\" alt=\"image\" title=\"\" width=\"602\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/6aa\/c6f\/b2d\/6aac6fb2db78bb960f21367146f9ed5c.gif\"\/><\/figure>\n<p>\u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u0438\u043d \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u044a\u0435\u0434\u0430\u0435\u0442 \u0434\u0440\u0443\u0433\u043e\u0433\u043e, \u0443 \u043d\u0430\u0441 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u043e\u0448\u0438\u0431\u043a\u0430 <code>IndexError: 'list index out of range'<\/code>.<\/p>\n<p>\u041e\u043d\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>display()<\/code> \u043a\u043b\u0430\u0441\u0441\u0430 <code>Mycelium<\/code> \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043a\u043e\u0433\u0434\u0430 \u043e\u0434\u0438\u043d \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u00ab\u0441\u044a\u0435\u0434\u0430\u0435\u0442\u00bb \u0434\u0440\u0443\u0433\u043e\u0439, \u0442\u043e \u0435\u0433\u043e \u0443\u0437\u043b\u044b \u0438\u0441\u0442\u043e\u0449\u0430\u044e\u0442\u0441\u044f, \u0438 \u043f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u043c \u0441\u043f\u0438\u0441\u043a\u0430 \u0443\u0437\u043b\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 <code>self.nodes[0]<\/code> \u043c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f, \u043a\u043e\u0433\u0434\u0430 \u044d\u0442\u043e\u0442 \u0441\u0430\u043c\u044b\u0439 <code>self.nodes<\/code> \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u0443\u0441\u0442\u044b\u043c.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u044d\u0442\u043e\u0439 \u043e\u0448\u0438\u0431\u043a\u0438, \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0443\u0437\u043b\u043e\u0432 \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a <code>self.nodes[0]<\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0430\u043a:<\/p>\n<pre><code class=\"python\">def show_energy(self):     if not self.nodes:  # \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043d\u0430\u043b\u0438\u0447\u0438\u0435 \u0443\u0437\u043b\u043e\u0432         return  # \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u0443\u0437\u043b\u043e\u0432, \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u043c     energy_x = self.nodes[0][0] * self.size + 10     energy_y = self.nodes[0][1] * self.size + 10     fill(0)     no_stroke()     rect(energy_x, energy_y, 60, 20)     fill(255)     text_size(12)     text_align(CENTER)     text(int(self.energy), energy_x + 30, energy_y + 15)<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/add\/b77\/e9a\/addb77e9a77504d9c8855c14dbd3fb7e.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/add\/b77\/e9a\/addb77e9a77504d9c8855c14dbd3fb7e.gif\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/880\/c87\/c5f\/880c87c5f9667e1585727ee977415c80.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/880\/c87\/c5f\/880c87c5f9667e1585727ee977415c80.gif\"\/><\/figure>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ec7\/abb\/2dc\/ec7abb2dc8ab26050a00413bd2e6085f.gif\" alt=\"image\" title=\"\" width=\"602\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/ec7\/abb\/2dc\/ec7abb2dc8ab26050a00413bd2e6085f.gif\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8b8\/007\/2e1\/8b80072e10af18affa4eb5bfc91f82eb.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/8b8\/007\/2e1\/8b80072e10af18affa4eb5bfc91f82eb.gif\"\/><\/figure>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAwgKIAyPA+gGUAkgC0uUALxQAjADY6AUwoA3FOAoRlOaQDkwFRfgiIAxooA2KBhBlSo+w8bOXrEAEz3HR0xbIBnfygAWRcrGwAufCgYqCpFYCh+fhQKFCxk5n9LYAAaKAAPfMR85TUNLQosfNMwC0xWKNjmqGyLYAA6MvUDSp0obortaJaYts6KMHig6QBtZiKoRFYAXRHR8Y6rCgBrGahZtdGxnK7DEABzZGkZAAZb9ZbNsgvFewfj1tP-FAAvN+k3D4QjEEmOj2am1MDBAIG0KWoigK7ygENiULqmHstXqIDozXiiQu4AA7lkcvkwFgABaKED8EzmcIQRpomIoRKbZR0q5QAA80luTU+sThWBhFFRn2erygAGobmypcdgFiKIsKMhUl92h1JtNhSKdZ1uZdkABaQUdW4yJXNDkDVQ9TTaDrElBUWbqlZexArDpw-xgGHmIIAPigQrtx0GvVd7s93t9-sDwZAoagltkHTg0Y2p1NvIVketAGYACxGmL446bfzUsAk-iFxBsJVK-xYRQwd5KknUlAWN5QmFwqoI+LIvlQIcsTb6xT+VhQShUY1nHnICO3FfUVpdnvTmSGkWd7vyxVVwrFezzqaL2Yj2Hw1KTlbKo1PscZV9Ii+yPMoEMFALmpAAjTB9i5J0hiqN1FAyYDQIgkB-AWYp2CvVUQCAjUtUlJDwMgk8rwdcldVjF04ITL0Ch9TUU0XNMMwjGQ7igLFmHVfJNWXbUqVpelGVcGw9XvJddzXLi8OXSYcG1O8DUA6VTgXfwOjIGAYGUKhmGknjlkwq9a1ObY9g0rSdL05FcHXH5-nlOy-jeAB6KB3BvWy62cxzvIctyPNwvAnIcuUQtc9yDOCvy3jCmKoAC1gjOMp4CxguNqJAD1aPov0AyYkNF0zG4PhS1KKPOXks1tMqWmU2IyO4oDllQSUBLpBkwjcMSDRiABiKBAFQQQBBEEAbhBAA4QKBAF4QQAGEEAURBAD4QQAWEHGwAeECgQBhEEAdhBAFYQUaoCWwABEA2wBmEAWs6oFW8bADEQPbxsAeRB6tGdqhK60S1PyiAwBURQ9Ka3jlygAbAGIQJaZtG+6dvW7a9qeloXs6plupbYrZH6qBgcOnatpmqGoEAWRApp2w6TvGwA5EDh5oBsAIhAZsALhBADYQHbNrBiG8cAJhBhuZ4b2furbxvyOmFsAIRAFsOwBpEGZta9oJ0Xhc23bRsp2IEeE5ktlSPZ7FmMyoGwmdNdajiaQ6tXurMoIHTM2ZbnfABCaR1Wi74fLil3-PcjicOtmR7cd5AvPd2LwoS9y1keQk4hQfwYD8VtxlZT5Jn4TtwB2X7kpaYBBwsZgACI4SoPPM+afXFnw9c1MfU5oWfcdfwKCIVhI444VMLAFlwGLii7oP8m78KS-RLA09+jFcSHsYR7AdP+BJRQQOpDuZEn1BElncjOgt5dJEFCJSAQiUlX1iwjc2C2W9GAoZGKG-CkCxBPGkCxAO2X7r9v-ICgf9x2AjhJWgNibC2TeidjgOjkpXcS+8gZQEAPggh0Frs2JnTGa000GzQmoAcRBxrM22qNJBgExQSnRiNCa00dry3wUg-IU1xpYJ2hdImB09q41WkqFs-BkTSEUg+W2Nt3yB11PZYOdwOGVUQPwa4UDpgCNmL7Z2wjXayFKqMbOFhc63FXsnVOM8M5Kjbh3ThixOElCgHIW4+R3BaOPjnZg7g4BwFXl2AoGQRHMBkL-JULiMhkCsBcFg3BdAABUuAACVnFIg7qkDu0FNysFKBIrhjlSyWMdJuKRjkZBOLoL4AIQQuDpSolgE8kdkipHSJkBOl91wkg9DSewdSqANJcm5IEAgRDiA7KcWki9+i9NAjgVpUB2kgi6SpXUCZtazA4JYXO5BqCQADKuGJzA0nWK0cufW-AjYLNeJvDoAyl6rD1liHZ2o9lj1OE0mkqwawxEjlQaOscyDxxyGAtRWJkQXMoPszYNzqQfJFPrCulyDlHKwECq8TJT48NODROisw-Rw3UZomocz8pBkKv4fIaS7g2Nqjo6e6c2y1UMQsYKozOlcE8iM3gHTQT5CpYyulwJqV-wJAA14iEF7IUgpvL+GEamERQvsQ4x8sRUEWFQCu8xzR3y0fkDxuKElQDWfkeVqr1WyC1fKjVK8lV301UqvVOrDX5BXs3QC-1pHIjClKm89rECAQdDuAUQVpz-PqdSSSkZ+T+35OuCFNSk68qIqhCy2lqB-RkqvYhIACJhtFbVXJfhAgjLmaUgB5S0gZH4AKg+WL0yLiheiU4qZsX2ArcW-wdBI7ZHFDANgJ4Lj1DAn4x05QMrVCgGbGwd8+0eEeA6OpiymwAqgBGCxUZPgDXceWe4+Rp2r3cQADkXVAUs1jV5zucswddaSD2Z0sNkGp7jR00HHd6-IF7Gz8AhceopfR7CFK7cU0l1YqZQEAIQgo0NpYJmoAThApqSygELMWK1ZrC3FgdCGva3q2CgJNQd7hHiDpkMk6QqyFm6TSZRPoHQAVJTQwhjD0jsOrm1fh10D7M4ocw61DuOGqNPtdERujCH3CZKw1UZgzG8OsbgrRx4jwBqAGQQHaRNDozWug9KAgBGEAWqNHazMhZTWFtJ4awsQNzSgNdZBot2YkaRv2-gOIsTSHMyAPjlGNlWMcaq-jFr7iOco3ilzgMaY7UAPwgo1QMi2FpJum41jMiQ8GZzEOFLORZs9G9zirSCUfxfZpx+RmN2fcg5zzUBACkIEp5aIHmYBaCyF0LzI7DSFCCZiAzB0NcPyHVsx1GqgNdIxFieZW3BPxCAh2rnH6vweq1xprgme30as3-R55AyRAodKAMgWgItMBwAAUhUVIPeSp22mB2MSYMcXV7NawB0J5Mc44fpiOht0pI+tDey3A4mO0wZ4yOqdBagHLo3Tuh91BdMoAzRJhtVaknhadf7Sd5552ONDeu42W7YWV7owe1jZ761At0w2oASRBxofaurdCaP36b-cB8D9TYOPAQ7O68tgQA\">\u041a\u043e\u0434<\/a><\/p>\n<blockquote>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0431\u044b \u043e\u0442\u043c\u0435\u0440\u0448\u0435\u043c\u0443 \u043c\u0438\u0446\u0435\u043b\u0438\u044e \u043f\u043e\u0447\u0432\u0443 \u0443\u0434\u043e\u0431\u0440\u044f\u0442\u044c. \u0414\u0430 \u043d\u043e\u0432\u044b\u043c \u043c\u0438\u0446\u0435\u043b\u0438\u044f\u043c \u043f\u043e \u043a\u043b\u0438\u043a\u0443 \u043f\u043e\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u0442\u0435 \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c?<\/p>\n<\/blockquote>\n<h2>\u041d\u0443 \u043a\u0430\u043a \u0436\u0435 \u0431\u0435\u0437 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430<\/h2>\n<p>\u0410 \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u0446\u0435\u043b\u0438\u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0441\u044c \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435. \u0418 \u043f\u0440\u0438 \u043a\u043b\u0438\u043a\u0435 \u043c\u044b\u0448\u043a\u0438 \u043d\u0430\u0447\u0438\u043d\u0430\u043b \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u043e\u0432\u044b\u0439 \u043c\u0438\u0446\u0435\u043b\u0438\u0439.<\/p>\n<p>\u0421\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u043c\u0430\u0441\u0441\u0438\u0432 \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u0438\u0446\u0435\u043b\u0438\u0435\u0432. \u0417\u0430\u043c\u0435\u043d\u0438\u043c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 <code>mycelium1<\/code> \u0438 <code>mycelium2<\/code> \u043d\u0430 \u043c\u0430\u0441\u0441\u0438\u0432 <code>myceliums<\/code>:<\/p>\n<pre><code class=\"python\">myceliums = []  # \u0421\u043f\u0438\u0441\u043e\u043a \u0434\u043b\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043c\u0438\u0446\u0435\u043b\u0438\u0435\u0432 # \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0432\u0443\u0445 \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0438\u0446\u0435\u043b\u0438\u0435\u0432 for _ in range(2):     mycelium_x = int(rand(0, environment.width))     mycelium_y = int(rand(0, environment.height))     mycelium_color = color(rand(200, 255), rand(0, 100), rand(0, 100))     myceliums.append(Mycelium(mycelium_x, mycelium_y, environment, mycelium_color))<\/code><\/pre>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a \u0441\u043e\u0431\u044b\u0442\u0438\u044f \u043c\u044b\u0448\u0438: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043c\u0435\u0442\u043e\u0434 <code>mouse_clicked()<\/code>, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u043f\u043e \u043a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u0430\u043c \u043a\u043b\u0438\u043a\u0430:<\/p>\n<pre><code class=\"python\">def mouse_clicked():     # \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043c\u0438\u0446\u0435\u043b\u0438\u044f \u0432 \u043c\u0435\u0441\u0442\u043e \u043a\u043b\u0438\u043a\u0430     mycelium_x = mouse_x \/\/ CELL_SIZE     mycelium_y = mouse_y \/\/ CELL_SIZE     mycelium_color = color(rand(100, 200), rand(150, 255), rand(50, 150))     myceliums.append(Mycelium(mycelium_x, mycelium_y, environment, mycelium_color))<\/code><\/pre>\n<p>\u041e\u0431\u043d\u043e\u0432\u0438\u043c \u043c\u0435\u0442\u043e\u0434\u044b \u0440\u043e\u0441\u0442\u0430 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043c\u0438\u0446\u0435\u043b\u0438\u0435\u0432: \u043f\u0440\u043e\u0439\u0434\u0451\u043c \u043f\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0443 \u0432 \u043c\u0435\u0442\u043e\u0434\u0435 <code>draw()<\/code> \u0438 \u0432\u044b\u0437\u043e\u0432\u0435\u043c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043c\u0435\u0442\u043e\u0434\u044b \u0440\u043e\u0441\u0442\u0430 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043c\u0438\u0446\u0435\u043b\u0438\u044f:<\/p>\n<pre><code class=\"python\">def draw():     if frame_count % 10 == 0:         background(0)         environment.display()     # \u0420\u043e\u0441\u0442 \u0438 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u043c\u0438\u0446\u0435\u043b\u0438\u0435\u0432     for i in range(len(myceliums)):         mycelium = myceliums[i]         for other_mycelium in myceliums:             if other_mycelium != mycelium:                 mycelium.grow(other_mycelium)         mycelium.display()<\/code><\/pre>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAwgKIAyPA+gGUAkgC0uUALxQAjAAY6AUwoA3FOAoRlOaQDkwFRfgiIAxooA2KBhADOUqAG0AulCgBiKIEIQQPwggDhBAQRBAPhBALhAoQBYQQG4QQHkQKEBREEABEEAGEEBeEEBWEBS-WMAeED9AMRA0yL80wCYQOlMLMlt7AFkzS2sIAC58NzcqRWAofn4UChQsHuZbS2AAGigADwnECeU1DS0KLAnTMAtMVha2nagRi2AAOnn1AyWdKBPF7Vbdt32jijAO+2lHZmmoRFZnW7uHw5WCgAa1eTl+d3uo2OhhAAHNkNJ5ApIXtoWQ4YoHCjIQDbCgAF5Y6TcPhCMQSSF-XYA0wMEAgbS9aiKSbYqDUna09aYBxrDYgOg7DpdOHgADuw1GEzAWAAFooQPwTOYrDYtpy2igugDlIqEVAADzSOTbVFtRlYekUDmogEYrEAaiRmrcrqgwF5FE+FGQfTRB0OTxeZvNAaOevhyAAtCbDnIZO6dtrLqpTpptIcxSgqI5vc484hnIdGbYwPTzPYAHxQU1JyFXM6Z7O5-OF4ul8sgStQWOyQ5wev-aGRg3O2vxgDMABYw273Xi5WBxfxR4g2O6F1hFDBse7xXKUBYsbT6YzlsyOmzDVBjywAcHFLZWFBKFRwzD9cga3JX9Q9tuu43jIobmrYgFQOOiZzlMMwOA+zxPo4p4MkyfRXq4Q4fnSqEXuhrKQS6MGGCgcJygARpgYK6mm1zLFmiiDCRZGUSAtgfDM7AwZ6IBQN6Ey+qgNrMRRVGgTBKZSoGjYZvRLZ5pMBa+h2T5dj2NYyPIUC8sw-F8d8QnafKirKvUaoQEGiHPn+766T6BlPDg-oISGWF2tCj62IcZAwDAyhUMwdkCd8XEwbi0JAqC3m+f5gVsrgH74kSkGJYSWIAPRQAATHBCV4mlKX5clmU5Xx8WpcljoVRl2XBXg1WFdCSU1VlrChWFNIjrRTZySAOYKUpRYlqpFZPr2SI4h1XJdV+42yG5VJTagXRBfpL7+rKCpKiqDQ2JZrlLTsm0mTt5n7U+w0QGAKiKIFem+m1C13Md21mY0n5RnN0GHW4L2maq72RWCjiRR6vKgxtxmvQDe1A8tt59MCjhyK4ACE0jevVRVOg1JXabxkWODIaMY8geVNQVVXY1AJW-NSIpQFQKC2DAlTrg8Gqok8-DgeAwK3e1uzAEeFjMAARIyVBi4LOw8bBXyGS5SEoeegz4ZMTTOOJkKMqYWAfLg2MzIbFNEhMRvVTLbS82A-NSUc-KbFufOKPw4qKKRcr6zIVtuCmd724CiPWZIJpNKQjHWu6csWIrEXB9rdyTDIMwp1MpWIFlDgWFhQK3cnqcTJMGetUKbQM7YS4rmu9uc5CKaOR+nmJ7slpR6ia78Gy0hK7YyMFijWOmzj8jup3iJN1Z-dE645OBs1KWj6iwsWKLci+3xYA81gLsbqiuv653nzjxMABscgTFl6-RyLzBZXAcAb9ukyDM1zAyKXqLP4MZBWHCLDcF0AAFS4AAJSfqyfWfR9Y0S-KwOYsIERdxSpOC+qYvz8GQFVGQj9yiVGqFALg3VZJYFAgzHofQBhDA5i3AE4oczygcPQqgjD0qZVJAIEQ4gFzQgVJ7C4fCyI4DYVADh5JuHuUDC2BwjhHAcEsKLcg1BIAljfNA5gaCr7rxfHLfghklGYkDoIr2Pwwa8T0f6Axt06EMLlD8Mu7ROiM2ZqzMg7NRh1zuHLNkljKCGJsSwuxLdZa8j9DaKxRiPZCM8WFVUsce7QnkopRwRYnoelvmguJw0yyjVsBMNByIN5cy3jbO2RSdaKD1h8eqYiuFcFyqI3gnCKQTFqS0xpZI6nsHpk4zETEomiTYvbIunEW4iVYsDCEkI5ZUE+FQMJThmDRjTuvCY798nwKgBoiYyzNnbNkHs5ZOyfZrLTrstZRyDmnImD7LWWF7oTzZFVWZcFnmICwimX8xoypGg-Mwxhb5axGlJr8gExjSFpPGVRaKflqB3Xso9fekcQDCQGRMpaeCqj2HkavMhTiKH9EGPwYZEccndifDE6agZOy5IcDS8ltg6D4ArpHGAbBQJwg2ORX+qYFg9RWFAU6jQ05CpsFlakKZ6HKJXP8uUUAaznzrKiTwb9pxyDQYqjeb8AAc6qJiTivhvFVaVmC6rQWawWlgRi0JNVKmgMrbETDtcufg4LLXEPOA4IhfKSF7zdDsTwXggiAHYQcIqRihQD8BEIIgBGECSCUSIGQI3hBKIAYRA4hQBSEkQA4iBJEiIAGRAUiAGkQDNuQChFFKNSXR+i-G3Vai3UVEBkHSHUUogKaCZLnEOLKxFkJG2YIcK2t8+zO2ZjdRvftjteLSCncwNtd89XZQfps+dBT1UruHWu7R7pG1eR8rCgKdQYYQGYP2z4-bZi8vTOcCYk6eQgEesypxVByCShiSmUAZAtD8DWEwHAABSWQv5Q61hbty0wwIxTljhdfDuHrMxMxZmzP1bhPCAAIQIIARABCIJGqAQQsOxuSIANhAk1pCgCUAIaRS35EKMUMoITeIoBrRQQxAdd1tQbW9GwDhd2OBQFMrxvI-qNsMru4JWoujCa49AdGgrpPibuI2rMEpmBSePRO6ThxEOuPXN0hmV0GAjB-VYCDigAoxM8IAfBAEhBBKGkBIIQkgTGzQRqAIQihhBKCkVNWGEhRsAMwgyRMh5CgIAWRAQhBaSBKroXzpAGaM9eKAsqbJAu+fF12yAbzgpbp4QAKCCxvjYmzIZGUi2aCP5oIUAy20diCUKraRsOVfc34RzO7pPNsFeWBLNN2FNPEVwNrx6B1xa6xlnrHTmkSL7e1qdfJ71zuHciS+66JjzpwZo5dq3h1wAKTt3tinpN7pinCo9u0T1ntve1y9o7liXaG1OtqQA\">\u041a\u043e\u0434<\/a><\/p>\n<p>\u0418 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0442\u0430\u043a\u0438\u0435 \u0441\u0440\u0430\u0436\u0435\u043d\u0438\u044f:<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7f2\/185\/fed\/7f2185feda756af366b4466de54feab4.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7f2\/185\/fed\/7f2185feda756af366b4466de54feab4.gif\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/db4\/cdf\/fad\/db4cdffada74d8e573cbab6d3ca7b96a.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/db4\/cdf\/fad\/db4cdffada74d8e573cbab6d3ca7b96a.gif\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cd6\/0c8\/461\/cd60c846178fb0b59d3caa54b4f7aba1.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/cd6\/0c8\/461\/cd60c846178fb0b59d3caa54b4f7aba1.gif\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/75f\/4f9\/4bc\/75f4f94bc177531706f2fbfaf50bb543.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/75f\/4f9\/4bc\/75f4f94bc177531706f2fbfaf50bb543.gif\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/558\/fb8\/7f1\/558fb87f15e55834d936be83cab9b827.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/558\/fb8\/7f1\/558fb87f15e55834d936be83cab9b827.gif\"\/><\/figure>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/45d\/b97\/910\/45db9791099e734c9d900d4c3d0c6c9b.gif\" alt=\"image\" title=\"\" width=\"800\" height=\"320\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/45d\/b97\/910\/45db9791099e734c9d900d4c3d0c6c9b.gif\"\/><\/figure>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435 \u043a\u043e\u0434 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u0432\u044b\u0448\u0435, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<h2>\u0418\u0442\u043e\u0433\u043e<\/h2>\n<ul>\n<li>\n<p>\u041c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044e \u043c\u0438\u0446\u0435\u043b\u0438\u044f, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u0435\u0442\u044c\u044e \u0443\u0437\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0436\u0438\u0432\u0451\u0442 \u0432 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0435\u0439 \u0441\u0440\u0435\u0434\u0435 \u0438\u0437 \u0441\u0435\u0442\u043a\u0438 \u043a\u043b\u0435\u0442\u043e\u043a \u0441 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041e\u0442\u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043b\u0438 \u043a\u043e\u0434 \u0434\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u043b\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0438 \u0430\u0434\u0430\u043f\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0438 \u0435\u0451 \u043a \u0440\u0430\u0437\u043d\u044b\u043c \u0440\u0430\u0437\u043c\u0435\u0440\u0430\u043c \u044d\u043a\u0440\u0430\u043d\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0446\u0438\u044e \u043c\u0435\u0436\u0434\u0443 \u043c\u0438\u0446\u0435\u043b\u0438\u044f\u043c\u0438, \u0434\u043e\u0431\u0430\u0432\u0438\u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u00ab\u043f\u043e\u0435\u0434\u0430\u043d\u0438\u044f\u00bb \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0430.<\/p>\n<\/li>\n<li>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u044f: \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u044b\u0435 \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0446\u0432\u0435\u0442\u0430.<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043c\u043d\u043e\u0433\u043e \u0433\u0438\u0444\u043e\u043a \u0438 \u043a\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0432 \u043e\u0434\u0438\u043d \u043a\u043b\u0438\u043a \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0431\u044b\u043b\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0442\u043e \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u043c \u0444\u0443\u043d\u0434\u0430\u043c\u0435\u043d\u0442\u043e\u043c \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0438\u0445 \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u0445 \u0441 \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u0435\u0439 \u0426\u0430\u0440\u0441\u0442\u0432\u0430 \u0413\u0440\u0438\u0431\u043e\u0432.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u0431\u044b\u0441\u0442\u0440\u043e \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0433\u0438\u043f\u043e\u0442\u0435\u0437\u044b \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435, \u0442\u043e \u0432\u043e\u0442 \u0435\u0449\u0451 \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u043e <code>p5py<\/code>:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/sberbank\/articles\/864100\/\">\u041f\u043e\u0440\u044f\u0434\u043e\u043a \u0438\u0437 \u0445\u0430\u043e\u0441\u0430. \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u043a\u043b\u0435\u0442\u043e\u0447\u043d\u044b\u0439 \u0430\u0432\u0442\u043e\u043c\u0430\u0442 \u00ab\u041c\u0443\u0440\u0430\u0432\u0435\u0439 \u041b\u044d\u043d\u0433\u0442\u043e\u043d\u0430\u00bb \u043d\u0430 p5py \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u0438 \u0430\u043d\u0438\u043c\u0438\u0440\u0443\u0435\u043c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e state machine<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/sberbank\/articles\/863110\/\">\u0421\u0430\u043c\u0430\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u0430\u044f \u0438 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u0431\u043e\u0440\u0430: \u043f\u0442\u0438\u0446\u044b \u0441\u043e \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u043d\u0438\u043c \u0433\u0435\u043d\u043e\u043c. \u0412\u0430\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u0438\u044f \u0443 \u043f\u043e\u0442\u043e\u043c\u043a\u043e\u0432<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/sberbank\/articles\/855374\/\">\u0414\u0430\u0432\u0430\u0439\u0442\u0435-\u043a\u0430 \u043d\u0430\u0432\u0430\u044f\u0435\u043c PumpKeen Game. \u041a\u0430\u043a Commander Keen, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e Pumpkin (\u0442\u044b\u043a\u0432\u0443). \u0425\u044d\u043b\u043b\u043e\u0443\u0438\u043d \u0436\u0435<\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/companies\/sberbank\/articles\/854474\/\">\u0425\u043e\u0442\u0438\u0442\u0435, \u043f\u043e\u043a\u0430\u0436\u0443 \u0432\u0430\u043c \u043c\u0430\u0433\u0438\u044e \u0436\u0438\u0432\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u043d\u0430 p5py?<\/a> (\u041f\u0440\u043e \u0418\u0433\u0440\u0443 \u0416\u0438\u0437\u043d\u044c)<\/p>\n<\/li>\n<li>\n<p>\ud83d\udcd6 <a href=\"https:\/\/habr.com\/ru\/articles\/851880\/\">\u041a\u0430\u043a \u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u043a\u043d\u0438\u0433\u0443 \u0434\u043b\u044f \u0434\u0435\u0442\u0435\u0439: \u00ab\u041c\u0430\u043c\u0430, \u043d\u0435 \u043e\u0442\u0432\u043b\u0435\u043a\u0430\u0439. \u042f Python \u0443\u0447\u0443!\u00bb<\/a><\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0440\u043e \u0442\u0435\u043c\u044b, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 p5py \u0438\u043d\u043e\u0433\u0434\u0430 (\u0440\u0435\u0434\u043a\u043e) \u043f\u0438\u0448\u0443 \u0432 \u043a\u0430\u043d\u0430\u043b\u0435  <a href=\"https:\/\/t.me\/p4kids\">@p4kids<\/a><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><\/p>\n<div class=\"tm-article-poll-container\"><!--[--><\/p>\n<div class=\"tm-article-poll tm-article-poll_variant-bordered\">\n<div class=\"tm-notice tm-notice_positive tm-article-poll__notice\"><!----><\/p>\n<div class=\"tm-notice__inner\"><!----><\/p>\n<div class=\"tm-notice__content\" data-test-id=\"notice-content\"><!--[--><span>\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a rel=\"nofollow\" href=\"\/kek\/v1\/auth\/habrahabr\/?back=\/ru\/companies\/sberbank\/articles\/868718\/&#038;hl=ru\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/span><!--]--><\/div>\n<\/div>\n<\/div>\n<p><!--[--><\/p>\n<div class=\"tm-article-poll__header\">\u0412\u0430\u0448\u0435 \u043c\u043d\u0435\u043d\u0438\u0435<\/div>\n<div class=\"tm-article-poll__answers\"><!--[--><\/p>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">0% <\/span><span class=\"tm-article-poll__answer-label\">\u041c\u043e\u0434\u0435\u043b\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u0430 \u0438, \u043a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0438\u0447\u0435\u043c\u0443 \u043d\u0435 \u0443\u0447\u0438\u0442.<\/span><span class=\"tm-article-poll__answer-votes\">0<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 0%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent tm-article-poll__answer-percent_winning\">80% <\/span><span class=\"tm-article-poll__answer-label\">\u0410 \u043c\u043d\u0435 \u043d\u0440\u0430\u0432\u044f\u0442\u0441\u044f \u0441\u0442\u0430\u0442\u044c\u0438 \u043f\u0440\u043e \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u043e\u0442\u0431\u043e\u0440, \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044e \u0438 \u0433\u0435\u043d\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u044b.<\/span><span class=\"tm-article-poll__answer-votes\">12<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress tm-article-poll__answer-progress_winning\" style=\"width: 80%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">33.33% <\/span><span class=\"tm-article-poll__answer-label\">\u041c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c, \u043d\u0430\u043c \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u0442\u043c\u0438\u0440\u0430\u043d\u0438\u0435 \u043c\u0438\u0446\u0435\u043b\u0438\u044f \u043d\u0430 \u043d\u0435\u043f\u043b\u043e\u0434\u043e\u0440\u043e\u0434\u043d\u043e\u0439 \u043f\u043e\u0447\u0432\u0435?<\/span><span class=\"tm-article-poll__answer-votes\">5<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 33.33%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">6.67% <\/span><span class=\"tm-article-poll__answer-label\">\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u0440\u043e\u0432\u0435\u0434\u0451\u043c \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442: \u0441\u043c\u043e\u0436\u0435\u0442 \u043b\u0438 \u0442\u0430\u043a\u043e\u0439 \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u043f\u0440\u043e\u0439\u0442\u0438 \u043b\u0430\u0431\u0438\u0440\u0438\u043d\u0442.<\/span><span class=\"tm-article-poll__answer-votes\">1<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 6.67%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">40% <\/span><span class=\"tm-article-poll__answer-label\">\u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0433\u0435\u043d\u044b \u043c\u0438\u0446\u0435\u043b\u0438\u044e \u0438 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c, \u043a\u0430\u043a \u044d\u0442\u043e \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u0431\u043e\u0440\u044c\u0431\u0443.<\/span><span class=\"tm-article-poll__answer-votes\">6<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 40%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">46.67% <\/span><span class=\"tm-article-poll__answer-label\">\u041d\u0443 \u0430 \u0434\u0430\u043b\u044c\u0448\u0435, \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u044b \u043f\u043b\u043e\u0434\u043e\u0432\u044b\u0435 \u0442\u0435\u043b\u0430 \u0438 \u0441\u043f\u043e\u0440\u044b.<\/span><span class=\"tm-article-poll__answer-votes\">7<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 46.67%\"><\/div>\n<\/div>\n<\/div>\n<div class=\"tm-article-poll__answer\">\n<div class=\"tm-article-poll__answer-data\"><span class=\"tm-article-poll__answer-percent\">13.33% <\/span><span class=\"tm-article-poll__answer-label\">\u041c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442; \u043c\u043e\u0436\u0435\u0442, \u043f\u0435\u0440\u0435\u043f\u0438\u0448\u0435\u043c \u043d\u0430 \u0447\u0451\u043c-\u0442\u043e \u0441\u0442\u043e\u043b\u044c \u0436\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u043c \u0434\u043b\u044f \u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u043e\u0432, \u043a\u0430\u043a p5py, \u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u043c? \u0412\u0440\u043e\u0434\u0435 p5.js.<\/span><span class=\"tm-article-poll__answer-votes\">2<\/span><\/div>\n<div class=\"tm-article-poll__answer-bar\">\n<div class=\"tm-article-poll__answer-progress\" style=\"width: 13.33%\"><\/div>\n<\/div>\n<\/div>\n<p><!--]--><\/div>\n<div class=\"tm-article-poll__stats\"> \u041f\u0440\u043e\u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b\u0438 15 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439.   \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u043b\u0438\u0441\u044c 3 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. <\/div>\n<p><!--]--><\/div>\n<p><!--]--><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/868718\/\"> https:\/\/habr.com\/ru\/articles\/868718\/<\/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<p>\u041e\u0434\u043d\u0438 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u0434\u043e\u043b\u0433\u043e\u0436\u0438\u0432\u0443\u0449\u0438\u0445, \u0441\u0430\u043c\u044b\u0445 \u0441\u043a\u0440\u044b\u0442\u043d\u044b\u0445 \u0438 \u0441\u0430\u043c\u044b\u0445 \u0434\u0440\u0435\u0432\u043d\u0438\u0445 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043c\u043e\u0432 \u043d\u0430 \u0417\u0435\u043c\u043b\u0435. \u0413\u0440\u0438\u0431\u044b. \u0421\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0432 \u0441\u043a\u0440\u044b\u0442\u043e\u043c \u0446\u0430\u0440\u0441\u0442\u0432\u0435 \u043f\u043e\u0434 \u0433\u043e\u0440\u043e\u0439. \u041e\u043d\u0438 \u043c\u0435\u043d\u044f \u0432\u0441\u0435\u0433\u0434\u0430 \u0443\u0432\u043b\u0435\u043a\u0430\u043b\u0438.<\/p>\n<blockquote>\n<p>\u0412 1998 \u0433\u043e\u0434\u0443 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0431\u0438\u043e\u043b\u043e\u0433\u043e\u0432 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u043b\u0430 \u0433\u0438\u0431\u0435\u043b\u044c \u0434\u0435\u0440\u0435\u0432\u044c\u0435\u0432, \u0447\u044c\u0438 \u043a\u043e\u0440\u043d\u0438 \u0431\u044b\u043b\u0438 \u043e\u043f\u0443\u0442\u0430\u043d\u044b \u0433\u0440\u0438\u0431\u043d\u0438\u0446\u0435\u0439. \u0422\u043e\u0433\u0434\u0430-\u0442\u043e \u043e\u043d\u0438 \u0438 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438, \u0447\u0442\u043e \u0441\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u043e\u043f\u0451\u043d\u043a\u0430 \u0442\u0435\u043c\u043d\u043e\u0433\u043e \u0432 \u041e\u0440\u0435\u0433\u043e\u043d\u0435 \u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0438\u0431\u043d\u0438\u0446\u044b, \u0430 \u0435\u0434\u0438\u043d\u044b\u0439 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043c. \u041a\u0440\u0443\u043f\u043d\u0435\u0439\u0448\u0435\u0435 \u0436\u0438\u0432\u043e\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e \u043d\u0430 \u0417\u0435\u043c\u043b\u0435: \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u0441 880 \u0433\u0435\u043a\u0442\u0430\u0440\u043e\u0432 \u0438 \u0441\u0442\u0430\u0440\u0448\u0435 2,4 \u0442\u044b\u0441\u044f\u0447\u0438 \u043b\u0435\u0442.<\/p>\n<\/blockquote>\n<p>\u0425\u043e\u0447\u0435\u0442\u0441\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0438\u043c\u0443\u043b\u044f\u0446\u0438\u044e \u044d\u0442\u043e\u0433\u043e \u0432\u0435\u043b\u0438\u043a\u043e\u043b\u0435\u043f\u043d\u043e\u0433\u043e \u0446\u0430\u0440\u0441\u0442\u0432\u0430 (\u043f\u0440\u044f\u043c\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043d\u0430 Python \u0438  <a href=\"https:\/\/p5py.khasang.ru\/\">p5py<\/a>). \u041f\u043e\u0441\u0430\u0434\u0438\u0442\u044c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0435 \u0441\u043f\u043e\u0440\u044b, \u043f\u043e\u043d\u0430\u0431\u043b\u044e\u0434\u0430\u0442\u044c \u0437\u0430 \u0440\u043e\u0441\u0442\u043e\u043c \u043c\u0438\u0446\u0435\u043b\u0438\u044f \u0438 \u0432\u043e\u0441\u0448\u0435\u0434\u0448\u0438\u043c\u0438 \u043f\u043b\u043e\u0434\u043e\u0432\u044b\u043c\u0438 \u0442\u0435\u043b\u0430\u043c\u0438, \u0438 \u043f\u0440\u043e\u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0441\u043f\u043e\u0440\u0430\u043c\u0438-\u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u0438\u043a\u0430\u043c\u0438, \u043a\u0430\u043a \u043e\u043d\u0438 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043b\u043e\u043d\u0438\u0438.<\/p>\n<p>\u0414\u043e\u0431\u0440\u043e \u043f\u043e\u0436\u0430\u043b\u043e\u0432\u0430\u0442\u044c \u0432 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0435 \u0432 \u0426\u0430\u0440\u0441\u0442\u0432\u043e \u0413\u0440\u0438\u0431\u043e\u0432.<\/p>\n<figure class=\"\"><\/figure>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043f\u043b\u0430\u043d \u043f\u0440\u043e\u0441\u0442: \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u043a\u0430\u043a-\u0442\u043e \u043f\u0440\u043e\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u0438 \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0434\u043e\u0431\u044b\u0432\u0430\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438\u0437 \u043f\u043e\u0447\u0432\u044b. <\/p>\n<ul>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 1. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 2. \u0423\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0438 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 3. \u041e\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0441\u0442\u044c \u041c\u0443\u0440\u0430<\/p>\n<\/li>\n<li>\n<p>\u0427\u0430\u0441\u0442\u044c 4. \u0411\u043e\u0440\u044c\u0431\u0430 \u043a\u043b\u0430\u043d\u043e\u0432<\/p>\n<\/li>\n<\/ul>\n<h2>\u0427\u0430\u0441\u0442\u044c 1. \u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430<\/h2>\n<p><strong>\u041c\u0438\u0446\u0435\u043b\u0438\u0439<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d \u0441\u0435\u0442\u044c\u044e (\u0433\u0440\u0430\u0444\u043e\u043c) \u0438\u0437 \u0443\u0437\u043b\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0441\u0442\u0451\u0442, \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u044f \u043f\u0438\u0442\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0432\u0435\u0449\u0435\u0441\u0442\u0432\u0430 \u0438\u0437 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0435\u0439 \u0441\u0440\u0435\u0434\u044b;<\/p>\n<\/li>\n<li>\n<p>\u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u043c \u043a\u043b\u0435\u0442\u043a\u0430\u043c, \u0435\u0441\u043b\u0438 \u0445\u0432\u0430\u0442\u0430\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432;<\/p>\n<\/li>\n<li>\n<p>\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c \u0433\u0435\u043d\u043e\u043c\u0430 (\u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c, \u0441\u0435\u0439\u0447\u0430\u0441 \u043f\u043e\u043a\u0430 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e).<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"python\">class Mycelium:     def __init__(self, x, y):         self.nodes = [(x, y)]  # \u041a\u043e\u043e\u0440\u0434\u0438\u043d\u0430\u0442\u044b \u0443\u0437\u043b\u043e\u0432         self.energy = 100      # \u042d\u043d\u0435\u0440\u0433\u0438\u044f \u0434\u043b\u044f \u0440\u043e\u0441\u0442\u0430         self.age = 0      def grow(self, environment):         # \u041b\u043e\u0433\u0438\u043a\u0430 \u0440\u043e\u0441\u0442\u0430 \u043c\u0438\u0446\u0435\u043b\u0438\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0438 \u0433\u0435\u043d\u043e\u043c\u0430         new_nodes = []         for x, y in self.nodes:             if self.energy &gt; 0:                 neighbors = get_neighbors(x, y)  # \u0421\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u043a\u043b\u0435\u0442\u043a\u0438                 for nx, ny in neighbors:                     if environment[nx][ny].resources &gt; 0:                         self.nodes.append((nx, ny))                         environment[nx][ny].resources -= 1                         self.energy -= 1         self.age += 1<\/code><\/pre>\n<p><strong>\u041e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0430\u044f \u0441\u0440\u0435\u0434\u0430<\/strong>:<\/p>\n<ul>\n<li>\n<p>\u0441\u0435\u0442\u043a\u0430 \u043a\u043b\u0435\u0442\u043e\u043a, \u043a\u0430\u0436\u0434\u0430\u044f \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0438\u043c\u0435\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b: \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0441\u0432\u0435\u0442, \u0432\u043b\u0430\u0436\u043d\u043e\u0441\u0442\u044c \u0438 \u0442. \u0434. (\u0434\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0442\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b);<\/p>\n<\/li>\n<li>\n<p>\u043a\u0430\u0436\u0434\u044b\u0439 \u0442\u0430\u043a\u043e\u0439 \u0443\u0447\u0430\u0441\u0442\u043e\u043a \u043f\u043e\u0447\u0432\u044b \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u0442\u044c\u0441\u044f \u043f\u043e \u043c\u0435\u0440\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u043c\u0438\u0446\u0435\u043b\u0438\u0435\u043c.<\/p>\n<\/li>\n<\/ul>\n<pre><code class=\"python\">class Environment:     def __init__(self, width, height):         self.grid = [[Cell(random.randint(50, 150)) for _ in range(width)] for _ in range(height)]         self.width = width         self.height = height  class Cell:     def __init__(self, resources):         self.resources = resources<\/code><\/pre>\n<p><strong>\u0412\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0432 p5py<\/strong>:<\/p>\n<pre><code class=\"python\">def setup():     global environment, mycelia     size(800, 800)     environment = Environment(100, 100)     mycelium = Mycelium(5, 5)  # \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u0432 \u0446\u0435\u043d\u0442\u0440\u0435  def draw():     global environment, mycelium     background(0)  # \u0427\u0435\u0440\u043d\u044b\u0439 \u0444\u043e\u043d     environment.display()  # \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c \u0441\u0440\u0435\u0434\u0443     mycelium.grow(environment)  # \u0420\u043e\u0441\u0442 \u043c\u0438\u0446\u0435\u043b\u0438\u044f     mycelium.display()  # \u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043c\u0438\u0446\u0435\u043b\u0438\u044f<\/code><\/pre>\n<h2>\u0421\u043e\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0432\u0441\u0451 \u0432 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043e\u0434<\/h2>\n<p>\u0421 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c\u0438 \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0432\u0441\u0451 \u043f\u043e\u043d\u044f\u0442\u043d\u043e, \u043d\u043e \u043a\u0430\u043a \u0431\u044b \u044d\u0442\u043e \u0432\u0441\u0451 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c? \u0421 \u0447\u0435\u0433\u043e \u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c? \u0411\u044b\u043b\u043e \u0431\u044b \u0437\u0434\u043e\u0440\u043e\u0432\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u0432 \u0432\u0438\u0434\u0435 \u0442\u043e\u043d\u043a\u0438\u0445 \u043d\u0438\u0442\u0435\u0439, \u043f\u0440\u043e\u0440\u0430\u0441\u0442\u0430\u044e\u0449\u0438\u0445 \u0432 \u0441\u0440\u0435\u0434\u0435.<\/p>\n<p><strong>\u041c\u0438\u0446\u0435\u043b\u0438\u0439.<\/strong> \u0411\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u044f\u043c\u044b\u0435, \u0441\u043e\u0435\u0434\u0438\u043d\u044f\u044e\u0449\u0438\u0435 \u0443\u0437\u043b\u044b \u043c\u0438\u0446\u0435\u043b\u0438\u044f. \u041a\u0430\u0436\u0434\u044b\u0439 \u0443\u0437\u0435\u043b \u0441\u0432\u044f\u0437\u0430\u043d \u0441 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u043c\u0438, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0441\u0435\u0442\u044c.<\/p>\n<pre><code class=\"python\">self.links = []  # \u0421\u0432\u044f\u0437\u0438 \u043c\u0435\u0436\u0434\u0443 \u0443\u0437\u043b\u0430\u043c\u0438<\/code><\/pre>\n<p>\u0418 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c:<\/p>\n<pre><code class=\"python\">def display(self):     stroke(200, 150)  # \u0411\u0435\u043b\u044b\u0435 \u043b\u0438\u043d\u0438\u0438 \u0441 \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u044c\u044e     stroke_weight(1)     for (x1, y1), (x2, y2) in self.links:         line(x1 * 80 + 40, y1 * 80 + 40, x2 * 80 + 40, y2 * 80 + 40)<\/code><\/pre>\n<blockquote>\n<p>\u0414\u0430, \u0443 \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043b\u0438\u043d\u0438\u0439, \u043f\u0440\u043e\u0441\u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c. \u0415\u0441\u043b\u0438 \u043d\u0430\u043c \u0432\u0441\u0451 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u0435\u0440\u0435\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0433\u0438\u0444\u043e\u0432 (\u043d\u0438\u0442\u0435\u0439 \u043c\u0438\u0446\u0435\u043b\u0438\u044f), \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438\u0445 \u0432 \u0432\u0438\u0434\u0435 \u0433\u0440\u0430\u0444\u0430 \u2014 \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e, \u0435\u0441\u043b\u0438 \u043c\u043e\u0434\u0435\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0447\u0443 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0441\u0442\u0432 \u0441 \u0440\u0430\u0437\u043d\u044b\u0445 \u043a\u043e\u043d\u0446\u043e\u0432 \u043c\u0438\u0446\u0435\u043b\u0438\u044f.<\/p>\n<\/blockquote>\n<p><strong>\u0421\u0440\u0435\u0434\u0430.<\/strong> \u041e\u0442\u0440\u0438\u0441\u0443\u0435\u043c \u0435\u0451 \u0432 \u0432\u0438\u0434\u0435 \u0442\u0435\u043f\u043b\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b, \u0433\u0434\u0435 \u043d\u0430\u0441\u044b\u0449\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0446\u0432\u0435\u0442\u0430 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.<\/p>\n<pre><code class=\"python\">def display(self):     for x in range(self.width):         for y in range(self.height):             cell = self.grid[x][y]             fill(0, cell.resources, 0, 100)  # \u0417\u0435\u043b\u0435\u043d\u044b\u0439 \u0446\u0432\u0435\u0442 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432             no_stroke()             rect(x * 80, y * 80, 80, 80)<\/code><\/pre>\n<p>\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0435\u043c \u0432\u0441\u0451 \u0432\u043c\u0435\u0441\u0442\u0435 \u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c:<\/p>\n<figure class=\"full-width\"><\/figure>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk+IArhQBQCU++AxgDZkDOvUALKIOAUy4p6EAFz4o8qFVHAoAfVUoKKLOqa9xwADRQAHscQtZC61H1dgAOgpglAgLxQA2kzNQLAXTkbeTtHCQoAa3cvf3kAYihAQhBAJhBAeRBAdhBADhAoQB4QQFYQQDYQQBYQQGEQKBL0wG4QQAYQHMyg4NCHUQpREABzZA8ARgAGXoabJrJ20SgPAcGlFXbwAHc9A2MWgDcUcAoIFqxLQetWudVnV3GYvYVgTFNzVApbAycXUV4rYJsUFSaWts6oAB4Jq83m8OGAKFhNPRROdgq0UO0ABYAI0w0VGOjhiJRIF4PnMywoaw2W3BDjmKCoWARBKJYJJWAcCNE8IRO3iUEA+CCAPhBKiVAOIg1TyOSggEEQLkivJFQC8IJk8lBAFwglTygCEQeX1YHWS4gKAUXwUZCaHXMrGooEa6wfKCrdZ07YOWYUzy6-xOxD+BwgZ5geggMQCAB8UF6UEoVCgTF1xn1LB1YBwhqax2eZvNjQeSd4DjIMBgLSoTAjeosbFTGqa4SiWZzeYLeL8LGMhajxZjUASgBQQLmARhBqslKqkhaK0ulADIgMNLVsJNs2dodVCdJhd+vdnt43t9zygAFoeuPS19Wh1kDuoN1x8NRlAANS7qbKRQoXgwHiIRb2XbA3hYcARURMABM-TGN0cC9K2CSAIggeSVIA0iBypUmQytkIpQIA-CCAAIgXLpOh1R8lK4rKiOgByIOe35gL+qhzMarJMN0JZvFq4YmN05h0Y2Jj-uY-4xgmDwVi8e4KOEf7MXgUAABzBleUAACy9KxYmSdesnyaY-6KVJKlcRpylyWwnA8PwUAAKJTsS2xmtMagaFoOiqG+RhQOSlLUlATIsjsKYKE0c6nJ4ngAMLiFwTDkNQkAeqGmhYEwqmAWBMaMaotykJQoxMM5VIsLESUpWF6XuYiOyBJ+DyZQipzleeDyFaypy1Vg7DWFZVCPs+ZCvqEH4MVcJh5Wlf5NOV3XmoxBp3Plg01dRnmCcEYhcFwpw+SAjqLp4bpzTYwAoItsXGAtXAel6Pp+sYql9GB7KAOgg0F5FKMGAJwgUCAGIgyQqlAyRQOkvaZCKmQ5AR2RcsqUDoXkIolOhYrJFt+xgKoX4-n+9ETqQogcDFfW4BJqnIDjknGITuP6dwfACEFi2Wfe6iaNouihMYq7rn6I1DA8zOnZuHicxuvDsFZ6JHNR2K4r4iDGOVxgNWzmLIqifklRcVxUL4VDjV4TBbixQYNuGOtgY2qna3r+2ntlXnyJGOpdKYymqzc0nq+OlrBgCOp9X8TkUlSIbUEG-wePq-xuTNls2HLotVrm1AFtb0ao+jWA+nckeouwCSAMgglTdtUlQjg9cqoXk4P5FKhf4Na5ngqcAByYLQhAIjiJI0AePXrQC-e+jJzArBmu0XBgEiZBLVXtrgsYTcLa3gy8CgABef6SapK+J+PM41x4pm0pvMV9MBYGDNPLdSKcwgz1ITBwMYcDgUkWFFIKwp1C90GZM9X1v1Kyrg13KhUHIAsNmg9h6j0nLvekU9m4SCkIMEeHAIizG9LHK6bYoCAHIQEuD1nqABEQLkUpBgb3pA4VqT4XysHZIAPBBlTdhwgUZ+opwalGPjA1u9p5hMGIdse+gACEAIrkTIb8EKpFYZfCApC2oUPvjQuh1QCj3VlII4RmRRFAA\">\u041a\u043e\u0434<\/a><\/p>\n<blockquote>\n<p>\u0412\u0440\u043e\u0434\u0435 \u043f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433 \u0443\u0434\u0430\u043b\u0441\u044f (\u0445\u043e\u0442\u044f \u0435\u0441\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u0442\u044c). \u0415\u0441\u0442\u044c \u0437\u0435\u043c\u043b\u044f \u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u0440\u0430\u0441\u0442\u0451\u0442. \u0417\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u043a\u043e\u0434 \u043f\u043e \u0441\u0441\u044b\u043b\u043a\u0435 \u0432\u044b\u0448\u0435 \u043f\u0440\u044f\u043c\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0410 \u0434\u043b\u044f \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430 \u043f\u043e\u0442\u043e\u043c \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044e: \u0440\u0430\u0437\u043c\u0435\u0440 \u044d\u043a\u0440\u0430\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0430 \u044f\u0447\u0435\u0439\u043a\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u043e\u043c\u0435\u043d\u044c\u0448\u0435.<\/p>\n<\/blockquote>\n<h2>\u0410\u043d\u0438\u043c\u0430\u0442\u043e\u0440\u044b, \u0432\u0430\u0448 \u0432\u044b\u0445\u043e\u0434!<\/h2>\n<p>\u041f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u0434 \u0432\u0435\u0441\u0435\u043b\u043e, \u043d\u043e \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u0440\u043e\u0441 \u043d\u0435 \u0441\u043a\u0430\u0447\u043a\u043e\u043c, \u0430 \u043f\u043b\u0430\u0432\u043d\u043e. \u0410\u043d\u0438\u043c\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u043e\u0434\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u043e\u0439: \u0434\u043e\u0431\u0430\u0432\u0438\u043c <code>return<\/code> \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0440\u043e\u0441\u0442\u0430, \u0447\u0442\u043e\u0431\u044b \u0437\u0430 \u043e\u0434\u0438\u043d \u0445\u043e\u0434 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0443\u0437\u0435\u043b. \u041d\u0435\u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e, \u043d\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0432\u0441\u0451 \u0431\u044b\u0441\u0442\u0440\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c.<\/p>\n<pre><code class=\"python\">def grow(self, environment):     if self.energy &lt;= 0:         return  # \u0415\u0441\u043b\u0438 \u044d\u043d\u0435\u0440\u0433\u0438\u044f \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c, \u0432\u044b\u0445\u043e\u0434\u0438\u043c          # \u041e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0443\u0437\u0435\u043b \u0437\u0430 \u0432\u044b\u0437\u043e\u0432     for (x, y) in self.nodes:         neighbors = get_neighbors(x, y, environment.width, environment.height)         for nx, ny in neighbors:             if environment.grid[nx][ny].resources &gt; 40 and (nx, ny) not in self.nodes:                 self.nodes.append((nx, ny))                 self.links.append(((x, y), (nx, ny)))                 environment.grid[nx][ny].resources -= 1                 self.energy -= 1                 return  # \u0412\u044b\u0445\u043e\u0434\u0438\u043c \u043f\u043e\u0441\u043b\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0443\u0437\u043b\u0430     self.age += 1<\/code><\/pre>\n<blockquote>\n<p>\u0414\u0430, \u0442\u0443\u0442 \u043d\u0435 \u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u043e\u043a\u0430 \u0447\u0442\u043e, \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u043d\u043e\u0432\u043e \u043f\u0440\u043e\u0431\u0435\u0433\u0430\u0435\u043c \u043f\u043e \u0432\u0441\u0435\u043c \u0443\u0437\u043b\u0430\u043c. \u041d\u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u043c \u0448\u0430\u0433\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433, \u0430 \u043f\u043e\u043a\u0430 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u2014 \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f \u043e\u043d\u0430 \u043d\u0430\u043c \u0438\u043b\u0438 \u043d\u0435\u0442. \u0425\u043e\u0442\u044f \u044d\u0442\u0430 \u043d\u0435\u043e\u043f\u0442\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438 \u0444\u0438\u0447\u0435\u0439, \u0435\u0441\u043b\u0438 \u043e\u043a\u0440\u0443\u0436\u0430\u044e\u0449\u0430\u044f \u0441\u0440\u0435\u0434\u0430 \u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0438 \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0437\u0430\u043d\u043e\u0432\u043e \u043f\u0435\u0440\u0435\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c \u0432\u0441\u0435 \u0443\u0437\u043b\u044b.<\/p>\n<\/blockquote>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u0435\u0449\u0451 \u0442\u043e\u0447\u043a\u0438 \u043d\u0430 \u043a\u043e\u043d\u0446\u0430\u0445 \u0441\u0432\u044f\u0437\u0435\u0439, \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e, \u0434\u043b\u044f \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e\u0441\u0442\u0438.<\/p>\n<figure class=\"\">\n<div><figcaption><em>\u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f, \u043a\u0430\u043a \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u043e\u0433\u0438\u0431\u0430\u0435\u0442 \u0441\u043b\u0435\u0432\u0430 \u0431\u0435\u0434\u043d\u0443\u044e \u043d\u0430 \u0443\u0434\u043e\u0431\u0440\u0435\u043d\u0438\u044f \u043f\u043e\u0447\u0432\u0443.<\/em><\/figcaption><\/div>\n<\/figure>\n<blockquote>\n<p>\u041f\u043e\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0439\u0442\u0435, \u043a\u0430\u043a \u0443 \u0432\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u0442\u0438 \u043c\u0438\u0446\u0435\u043b\u0438\u0439?<\/p>\n<\/blockquote>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAxgDZkDOvUALKIOAUy4oGEAFz4o8qFVHAoAfVUoKKLOua9xwADRQAHscStZC61H1dgAOgpglAgLxQA2szNQLAXTkbeTtHCQoAa3cvQOCQgwdRClEQAHNkDwAmTIAGIODQhzJU0SgPPLjbBN4UAC9SjwAOPPzFZShU8AB3PQNjJIA3FHAKCCSsS1brFBVCpJT0qAAecqtKhRBRLAYQCnkAYihAVBBAQRBAbhBADhAoQFkQQF4QQFYQQAEQQGYQC8B5EChAdhBABhBALhBAPhBboBxEAuZ2+J0AMiDGQBMIIBpEEAoiD-QAsIBdADwgUwUGPkyS6qmcrjKMSxUEOgDwQQCMII9vuTvoAhEFh0O+91RUFp-zOEIBUGRF1uUEAwiCfe5nL7fKBwz7-aHE4CYKA+cysVB7Qr40S8NbrKDJFCpAAWACNMNESjodfqjSBeAq-P0KEMRmMKFgHF0UFQsHq7Q6wKNxg49aJdXqJsTrLKQNrfBRkJptUGLcbNVqFDMoINhr6nS7Ou7PBQTP584h-A5NrwwDsxAIAHxQAAsOSglCo8oLxhjSucODjqpc6uTKZsfdcRRgMCSVGYzHb2os7CHlUK4SiY4n1GnNosxhn0fnC8XwQzjv9uao+cLxdL5crIGrUAAtB4AIxhlNzZJpZBPqCvw-BTZtl2A4oEAJBAER5FlAH4Qf5znublKWpf5aV+K5kVuf5nn+AVPjBYlCmKUoAGoXzoawlBUKgUF4GAeEQXp7EmJcsHACJRGYXIcmMZ84ByA8ChYsA2NULoExDZhn34mwI3lExn3MSSdxMTJzEyJVewSFcNTfEJBOE0TgywZgAGYpMqOTVComi6MJOS8CqewHBqeooCIhzHGc0oAHooEyHS-GfSzqNosgMgC+zCk81z3KcupvN8-zlKC6zQtszIIuqOLosirKfL8odEEyZKQrCwqMscqK3Jyly8v88J2IsqySoU4q6OMJKmravwis60KzLiXg9NEESxKM58+P8jBNCMxrgq6xBAt6ixJrAaafB6ubQtU1q+s4Hh+CgABRe1Mz9Z1kwotQNC0HRVAYowoDdD0vSgQNDKYgaEjPQlPE8ABhcQuGYchqEgMsWzWrjfJyPilRk1RlVISgSmYJ7PVYfwoHhxGQZRt79QmWJPsctG9UJUn8ISfGQ0JamsEpiqsqaFpyPaJb7o+4IZJMHHkfYwpSc59YZNjPZcf5qnRqFocxC4LhCUKM9PEvEt-PDFA5eYKHZa4Mt1VvatjCh8aJv-bUwFUQbWPY-qtU2DgZvKjy4vMJ3YvqYxqtET3Mvqdh8G4PgBABuWLvadRNG0XRQmMG8q3VaWFEKOO73VQkU+rOhLtNPExMta1fEQYxSeMOmhfNQ1jR+on5BkqhfCoUWvGYB95KgPidzbjv5Sh1vWB3Y2McHBRZxjWzovr123Mb4k0ybFYo2WR73U9ZtqHb5YPDHpZXtG4fggr-O10nadR-nVpAJ2PZD+NOhDkAZBAzn+GkOVuWF4Kgp5mXuW43-ufBjxZnGISAAcr6UQ+AIAiHEJIaAHgwHJCzu0fQ2wYBsGTKkLgYADRkHloAs6WBjBQNlrA1onlmDNChpQqS+DsyEmOj6AhEljamwUMQmBUhCTCBIVIZgcBjBwCVCSKAgBCEH+J8JETIWSoguIAMRBhQXEAJwg4ooDyNuLSR4-98CXSoOQHoQtMHYNwemE6J5nREOgRIKQrQcEcAiJ0SsG5WHyFof6dmUl2FWIgA4BxPRXHOiEYcQABCCwVpFAGR8jLhvGMM-KkNJ6SMmZNyFEfJBTClaJ42BDh3FAA\">\u041a\u043e\u0434<\/a><\/p>\n<p>\u0410 \u0435\u0449\u0451 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u0438\u043c\u0430\u0442\u044c \u0443 \u0437\u0435\u043c\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u0440\u0438 \u0440\u043e\u0441\u0442\u0435:<\/p>\n<pre><code class=\"python\">environment.grid[nx][ny].resources -= 80<\/code><\/pre>\n<p>\u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f \u0431\u043e\u043b\u0435\u0435 \u043d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u2014 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0432 \u043f\u043e\u0447\u0432\u0435 \u0443\u043c\u0435\u043d\u044c\u0448\u0430\u044e\u0442\u0441\u044f, \u0437\u0435\u043c\u043b\u044f \u0442\u0435\u043c\u043d\u0435\u0435\u0442, \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u0437\u0430\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u043c\u0438\u0440:<\/p>\n<figure class=\"\"><\/figure>\n<h2>\u0427\u0430\u0441\u0442\u044c 2. \u0423\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u0438 \u0440\u0435\u0444\u0430\u043a\u0442\u043e\u0440\u0438\u043d\u0433<\/h2>\n<p>\u0421\u043b\u0438\u0448\u043a\u043e\u043c \u043c\u043d\u043e\u0433\u043e \u043c\u0430\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0447\u0438\u0441\u0435\u043b. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0432\u044b\u043d\u0435\u0441\u0435\u043c \u0432 \u043a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b \u0445\u043e\u0442\u044f \u0431\u044b \u0440\u0430\u0437\u043c\u0435\u0440 \u044f\u0447\u0435\u0439\u043a\u0438:<\/p>\n<pre><code class=\"python\"># \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u044b CELL_SIZE = 20  # \u0420\u0430\u0437\u043c\u0435\u0440 \u044f\u0447\u0435\u0439\u043a\u0438<\/code><\/pre>\n<p>\u0418 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0442\u0430\u043a, \u0447\u0442\u043e\u0431\u044b \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044f\u0447\u0435\u0435\u043a \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438 \u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438 \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u043b\u043e\u0441\u044c \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0448\u0438\u0440\u0438\u043d\u044b \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u0440\u0430\u0437\u043c\u0435\u0440\u0430 \u044f\u0447\u0435\u0439\u043a\u0438:<\/p>\n<pre><code class=\"python\">class Environment:     def __init__(self):         self.width = width \/\/ CELL_SIZE  # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044f\u0447\u0435\u0435\u043a \u043f\u043e \u0448\u0438\u0440\u0438\u043d\u0435         self.height = height \/\/ CELL_SIZE  # \u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u044f\u0447\u0435\u0435\u043a \u043f\u043e \u0432\u044b\u0441\u043e\u0442\u0435<\/code><\/pre>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440\u044b \u044d\u043a\u0440\u0430\u043d\u0430 \u0438 \u044f\u0447\u0435\u0439\u043a\u0438. \u041c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043c\u0438\u0440 \u043f\u043e\u0431\u043e\u043b\u044c\u0448\u0435:<\/p>\n<figure class=\"\"><\/figure>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAxFIFgggfCCC8IIEEQQEIggBhB+wwNIg+AMIBRADIKA+gGUAkgC05UALxQATAAYoULoAIQUYHYQQDwggVhBAAiBRA8iCBxEDuBOEEBcIIA4QOgGMAGzIAZxCoAFlEfwBTQJQGCAAufFNTKhjgKGVlFAoULBzmELjgABooAA8KxFYUtIaoEsDgADoKMAzw-QBtZmqoWoBdVMbTZrb4igBrbqgekbHx0taYihiQAHNkfQNjUbGJ1rJNmL0oIwPGo5CUAC8z-XklNS05OgaMrM3wAHdi0oVNYANxQ4AoEDWWDqVwaKCyRzWG22UAAPPojPUlg0QDEsAwQBRTFxAKgggkA3CA+KCAWRB+I5AMwgPmcUCsoi8AlcPnJokEgBkQCqAJhBJIBREF4gBYQHw2WFpaWmda-ZQdLrnBaysxQQB4IIBGEAcoi1oikAtEdhsUGEvHJvPZUHFPn4UEAwiBWOzklmiKBCqy8AVq4CYKD9GqsVBEo5KmIhLHYuUxFCbAAWACNMHNToV1nGkynA4MgRRQeDIRQsK1figqFh43mC2AIVDWvHYwnoWqGn6QFAKAMKMg8p2m1mQJHW0t4VAQWDa0WSz9yz0u0N54ghq1cSEwATYuEAHxQAAsJkoVADXYqPeDHRwfbDnQjUej2JvXWOMBgayozGYp87tXYD4fRxTLML5vtQn45rUFRft2v5-v+2IToW9azlQ86VIuPYrmuG4gFuUAALT6AAHJc8GPisSJbMghFQAAjCOD64vihLElAgBIICKtqmoA-CC8BSdg2jqeq8MIvg2mK-C8PSvCOlY3JqkcJxnAA1Po9FXF8UBUCgIQwMEiAAi0MKPlg4DTDEzDGEYFS0XARhwYcplgOZyi-AOWDMLRDmNO2AaVLRNReVBlQGDUBjBteKxAcO8EhE5LluZmHkAMzedi-nKNpun6ec-l4E0Ky3A8UDKQVLStEVZwAPSGAxgy0ZlOl6WQOz1flNz3CpZVtJVUA1QYdUhY12UtblBjtYVnUld1FVTf1dWIAYw3Na1i0TeVvWlR1xXzfBUwWRlWUrYFy36RUQ1HWdgxLZdLXsPgQShOEcj5pOdbFvemk5HkBRFBMxlLEcZYVvG5zA5WfU1c8KgaNorF8JS7giAKMluHYdheFAvFQIAEiA+A4dp2ApKyNkl5yk82kNQNDrxw+qCM+Ejwgoy47gY1jMlCoIIlE+R5UoSqPQyHEgTMOQ1CQKuR55B51mGEY9nBr5yghqQlCnIZbQU-G0JDFAyuq+LGtA+WlasCMGmZFpTX6ZrANjL5lSG+rFkmyD9vRr5vZEkbrsk+5HvwbEgSBOcRwoT06E9MudVtigIfMHLweBKuEY4VuFRy7RCtpf+HTKHFZkWbnjExP4HlO7g1OKDDbw1PlNOw3IFSN3X1cvE392PWE1Mi59VvffkhTKJrFTYZuEaB2kRzj7hEbnLPW50JpaaKgOyZDhBFTg1WUDa9C94ZgmG9zKqbb+lQAxUN78zMPhAUXKwUEP-ZUFy-fT8Bln5v3g0349rlaal966lWvmqMcJh0SdidqiKAO8oBHguGifQADYH71-ksI+g4QggXfJ+f+v4rhMQJESLBJ9OBQEAMgg5JeD6ktPwSQAluKOBNHYfgDCiaISnFCc4AA5WsMR8AQGiHEBI0B9D8PWMvK2JR8QwDYPeTYgQwCJjIKHLh70sAVGEcHMRVxKrMBInLIx3kNHTnOC9Gsmi2BXB0aIxI5woi6MSMwMx9Z4FVX6tWN604GzuSpuFVigBCEF4FYMUxpTQ2B8IAMRAXQ+A8B6KAsSJAOCJvgTSVByD-A9kolRajxyvSQsWbRIj4iJCuKo-w0wfgbjAvZK4bjiytFugZbydiykQFaDU-4jToSsXMHxYQUAomxMpM4CotDdT6kNBE8SdpZIulsaUsRzSbYtTYEAA\">\u041a\u043e\u0434<\/a><\/p>\n<p>\u0414\u0430\u0436\u0435 \u0442\u0430\u043a \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043f\u043e\u044d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u0432 \u043a\u043b\u0435\u0442\u043a\u0435, \u0447\u0442\u043e\u0431\u044b \u043c\u0438\u0446\u0435\u043b\u0438\u0439 \u0440\u043e\u0441. \u041f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0431\u043e\u0433\u0430\u0442\u0443\u044e \u043f\u043e\u0447\u0432\u0443 (\u0431\u044b\u043b\u043e <code>40<\/code>, \u0441\u0442\u0430\u043b\u043e <code>100<\/code>):<\/p>\n<pre><code class=\"python\">if environment.grid[nx][ny].resources &gt; 100<\/code><\/pre>\n<p>\u041c\u0438\u0446\u0435\u043b\u0438\u0439 \u0440\u0430\u0441\u0442\u0451\u0442 \u0443\u0436\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0435\u0435, \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0447\u0443\u0434\u043b\u0438\u0432\u043e \u043e\u0433\u0438\u0431\u0430\u0435\u0442 \u0431\u0435\u0434\u043d\u0443\u044e \u043f\u043e\u0447\u0432\u0443:<\/p>\n<figure class=\"\"><\/figure>\n<h2>\u0423\u0441\u043a\u043e\u0440\u044f\u0435\u043c\u0441\u044f<\/h2>\n<p>\u041d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e. \u041d\u0430\u0438\u0432\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0440\u043e\u0441\u0442\u0430 \u043d\u0430\u043c \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442. \u041d\u0443\u0436\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u0438\u0441\u043a \u0438 \u0440\u0430\u0441\u0447\u0451\u0442 \u043d\u043e\u0432\u044b\u0445 \u0443\u0437\u043b\u043e\u0432 \u043c\u0438\u0446\u0435\u043b\u0438\u044f. 20 FPS \u0432 \u043d\u0430\u0447\u0430\u043b\u0435, \u043f\u043b\u0430\u0432\u043d\u043e \u043f\u0430\u0434\u0430\u0435\u0442 \u0434\u043e 5 FPS, \u0438 \u0432 \u043a\u043e\u043d\u0446\u0435 15 FPS. \u041c\u0435\u0434\u043b\u0435\u043d\u043d\u043e.<\/p>\n<h2>\u041f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433<\/h2>\n<p>\u0421\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431: \u0431\u0443\u0434\u0435\u043c \u0440\u0438\u0441\u043e\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u0435 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u0441\u044f\u0442\u044b\u0439 \u043a\u0430\u0434\u0440. \u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u043e \u0440\u0435\u0434\u043a\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0437\u0430\u043c\u0435\u0442\u043d\u043e, \u043d\u043e \u044d\u0442\u043e \u0441\u0438\u043b\u044c\u043d\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435:<\/p>\n<pre><code class=\"python\">if frame_count % 10 == 0:     background(0)     environment.display()<\/code><\/pre>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAxFIFgggfCCC8IIEEQQEIggBhB+wwNIg+AMIBRADIKA+gGUAkgC05UALxQATAAYoULoAIQUYHYQQDwggVhBAAiBRA8iCBxEDuBOEEBcIIA4QOgGMAGzIAZxCoAFlEfwBTQJQGCAAufFNTKhjgKGVlFAoULBzmELjgABooAA8KxFYUtIaoEsDgADoKMAzw-QBtZmqoWoBdVMbTZrb4igBrbqgekbHx0taYihiQAHNkfQNjUbGJ1rJNmL0oIwPGo5CUAC8z-XklNS0dJboGjKzN8AB3YqlCprABuKHAFAgaywdSuDRQWSOaw22ygAB59EZ6ksGiAYlgGCAKKYuIBUEEEgG4QHxQQCyIPxHIBmEB8zigVlEXgErh8FNEgkAMiAVQBMIJJAKIgvEALCA+GxwtIy0zrP7KDpdc4LOVmKCAPBBAIwgDlE2tEUkFojsNigwl4FL5HKgEp8-CggGEQKx2Cms0RQYVWXiC9XATBQfo1VioYlHZUxELYnHymIoTYACwARpg5qdCut48nU0HBsCKGCIVCKFhWn8UFQsAn84WwJDoa0E3HEzD1Q1-SAoBQBhRkHku83syAo22lgioKDwXXi6XfhWet2hgvEENWniQmBCbFwgA+KAAFhMlCoge7FV7IY6OH74c6kejMZxt66xxgMDWVGYzDPXdq7Efj5HFMsyvu+1BfrmtQVN+PZ-v+AE4pORYNnOVALpUS69qu66biA25QAAtPoAAclwIU+KzIlsyBEVAACMo6PniBJEiSUCAEggop2magD8ILwlJ2Laur6rwwi+La4r8LwDK8E6Vg8uqRwnGcADU+gMVc3xQFQKAhDAwSIICLSwk+WDgNMMTMMYRgVHRcBGPBhxmWAFnKH8g5YMwdGOY0HaBpUdE1N50GVAYNQGCGN4rMBI4ISEzmue5WaeQAzD5OIBcoOl6QZ5wBXgTQrLcDxQCphUtK0xVnAA9IYjGDHRWW6fpZA7A1BU3PcqnlW0VVQLVBj1aFTU5a1eUGB1RVdaVPWVdNA31YgBgjS1bVLZNFV9WVnUlQtCFTJZmXZatQUrQZFTDcd52DMtV2tew+BBKE4RyAWU71iWD5aTkeQFEUEwmUsRzlpWCbnCDVb9bVzwqBo2hsXwVLuCIgqyW4dh2F4UB8VAgASID4Dj2nYikrE2yXnGTLZQ1AMOvPDGqIz4yPCKjLjuJj2OycKgiicTFEVahqo9DIcSBMw5DUJAa7Hnknk2YYRgOSGfnKKGpCUKcRltJTCYwkMUAq2rEua8DFZVqwIyaZk2nNQZWuA2MfmVEbGuWaboMOzGfl9sSxtu6THmewhsSBIE5xHKhPQYT0K71e2KCh8w8sh4Ea6Rrh24VPLdGK+lAEdMo8XmZZedMTE-iec7uA04osNvDUBW03DcgVE39c1y8zcPU9YQ06LX3Wz9+SFMoWsVDhW6RkHaRHBPeGRucc-bnQWnpkqg4psOkEVBD1ZQDrMIPpmiab3MartgGVADFQPvzMwBGBRcrDQY-DnQfLD-P4G2cWw+DQ-r2PKM0r4NzKjfdU44TAYi7M7NEUBd5QGPBcdE+hAFwIPn-JYx8hwhFAh+L8AC-xXGYoSYk2DT6cCgIAZBAKS8ANFafgkhBI8UcKaOw-BGHEyQtOaE5wABydYYj4AgNEOICRoD6AEesFe1sSgEhgGwB8mxAhgCTGQMO3CPpYAqCIkO4irhVWYKReWxifKaJnOcV6tYtFsCuLosRiRzhRD0YkZg5iGwIOqgNGs70ZyNg8tTCKbFACEILwKw4oTRmhsD4QAYiCuh8B4T0UA4kSAcMTfAWkqDkABJ7ZRqj1ETjeshEsOjRHxESFcccoAyBQmUP4TcJYoAAFJ6ImF0JiTBpg1H+GmL8Bpn4HLqncSWVod1DI+XseUiArQ+kAmGTCNi5h+LCCgNEuJVJnAVDoXqA0RpIkSXtHJV0diyniNGbbVqtiGiFwTGAP4wAYAhDYEAA\">\u041a\u043e\u0434<\/a><\/p>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0442\u0435\u043f\u0435\u0440\u044c \u0441 60 FPS, \u0437\u0430\u0442\u0435\u043c \u0441\u043d\u043e\u0432\u0430 \u043f\u0430\u0434\u0430\u0435\u0442 \u0434\u043e 5 FPS \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442 \u043d\u0430 30 FPS. \u042d\u0442\u043e \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e\u0435 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435. <\/p>\n<h2>\u0412\u0442\u043e\u0440\u043e\u0439 \u0448\u0430\u0433. \u041f\u043e\u0438\u0441\u043a \u0432 \u0448\u0438\u0440\u0438\u043d\u0443<\/h2>\n<p>\u0412\u0441\u0435 \u043d\u043e\u0432\u044b\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435 \u0443\u0437\u043b\u044b \u0431\u0443\u0434\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0432 <code>nodes<\/code>. \u0427\u0442\u043e\u0431\u044b \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0431\u044b\u043b\u0430 \u043f\u043e\u0448\u0430\u0433\u043e\u0432\u043e\u0439, \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u0443\u0437\u0435\u043b \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c. \u0410 \u0440\u0430\u0437 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043c\u044b \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438, \u0442\u043e \u0431\u0443\u0434\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u0438\u043d\u0434\u0435\u043a\u0441 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0443\u0437\u043b\u0430 \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439:<\/p>\n<pre><code class=\"python\">self.current_index = 0  # \u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 nodes<\/code><\/pre>\n<p>\u0417\u0430\u043c\u0435\u043d\u0438\u043c \u043d\u0430\u0448 \u043f\u0440\u043e\u0448\u043b\u044b\u0439 \u0430\u043b\u044f\u043f\u043e\u0432\u0430\u0442\u044b\u0439 \u0446\u0438\u043a\u043b <code>for<\/code> \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 <code>brake<\/code>:<\/p>\n<pre><code class=\"python\">for (x, y) in self.nodes:<\/code><\/pre>\n<p>\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0443\u0437\u043b\u0430:<\/p>\n<pre><code class=\"python\">x, y = self.nodes[self.current_index]  # \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u043c \u0443\u0437\u0435\u043b \u043f\u043e \u0438\u043d\u0434\u0435\u043a\u0441\u0443 self.current_index += 1  # \u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0435\u043c \u0438\u043d\u0434\u0435\u043a\u0441 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e \u0443\u0437\u043b\u0430<\/code><\/pre>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAxFIFgggfCCC8IIEEQQEIggBhB+wwNIg+AMIBRADIKA+gGUAkgC05UALxQATAAYoULoAIQUYHYQQDwggVhBAAiBRA8iCBxEDuBOEEBcIIA4QOgGMAGzIAZxCoAFlEfwBTQJQGCAAufFNTKhjgKGVlFAoULBzmELjgABooAA8KxFYUtIaoEsDgADoKMAzw-QBtZmqoWoBdVMbTZrb4igBrbqgekbHx0taYihiQAHNkfQNjUbGJ1rJNmL0oIwPGo5CUAC8z-XklNS0dJauGo-8GEBA1wp5DKVc4mMxQQBEIHYvIBhEEAkiA+DxQHz8QAsINDBFBAEwgUBsokEgh8WLsUA6XU+aSuGSym3AAHdiqUKmsAG4ocAUCAAuoU0woLJHNYbbZQAA8+iM9SWDX+WF+FFMXEAqCCCQDcID4oIBZEH4jkAzCA+ZxQKyiLwCVw+VX4wAyIBUsZJAKIgvFRPhsvKgbvWdOUZJicwWbq4gDwQQCMIA5RMHRFIsaI7DYoMJeKqraaoE6UVAYVY7KqjaJsZIrLwcR9pQMdk0Vj6Qj1vr9-hRAdQYpUhoqoIB8EETMNcMbjmezUEA-CC8ZFojEwt21v4A3JNkEAan0AEY24BiEGJ6vN0djo-RXkxqNVht4ofDvGEvigarsqJhgDkQOF2XUjzOW6UemIoTYACwARpg5lOQp1i-P8AP6GpmQoNkOS5BtWjpFAqCwb8oJgsBOQBVpv0-H8sHYaVgEwUkBgoZA8lJXCwJAEIpWlPkslZdkMLgrBWlpJCegoFsuMQIZWn+EIwF+WJwgAPigAAWExKCoKBmG4ioyNYUkwBwCijirOj6K+StOl9Y4YBgNYqGYBTSNqAidOuFYplmQzjOoMyIMGVgKnMpTLKs6y0iY2CsI4qguJ4sj+ME4SQFEqAAFp9AADkuHzdJaVZ1i2ZBYqgJdJxWE4zkXLK6AaakoCoFAQhgYJEEZFoeWlEIsHAaYYmYYwjAqJc4CMbzrkasBmuUOkqKwZglx6hoiJAeTKiXGoxvcyoDBqAwVI02y8lmbT6r6gahtAkaAGZxqWGblDKiqqvOGa8ArFLbgeKB51utp7rOAB6Qw3QaRAlzO8rKrIcsfpum57ny57WleqAPoML60kWv6LsBq6DBBlYoae0GHphuHTEQAxEYBoHUdwCGMbJsHoc+nypha07zqJubCaqioEYZlnBgJ9nAfYfAglCcI5Gg5jMIbbSSpyPICiKCY6qWI5EOQ79zkVlDoY+54VA0bQ2z4Tc7BELERzcOxoSHEdAAkQHwHBROwcpSnD9vOR28PVqBNdeHXwT1nx3EN433DN4d80Ec87fqlZAvOHoehkOJAmYchqEgATZLyEb2sMIxupUybslQBUk9OGq2hd798NbPPlAL0hKGLhWkJQ1gRipTJSv+qqS7lsY85BCii5ahule7+i8-Iwu68HlYy-wrbrNiQJAnOI5Ap6Hi+NxxpgBQRfmEzhfAgE30ItEipM6XbPjp0jplAapqWqv+j-n8EaQVJj3tbkGobo-t4Kl-7Q-9FBazeLzfmYR3bx3Fm3SW+RCjKBLhUcKIlfQj2Sm0ZBkVfTnEwaJOgJUgLeiov+GiLlEAVFVqhKAM8R4gR-CQv0iw0h5yoAMKg495jMGirNC4bl5I8O6u5TO3C+F7w6s3OephFKknLAuUqZZHqlUQG6fkFwxT6G4mKKAlCoCyTUeKGRWiZ6SMaHQ6iIQHImTMtI5SPVZTykoqBBhnAoCAGQQVUJ5RBJn4JIEkg5HCxjsPwHxds-IsQBOcAAchhGI+AIDRDiAkaA+honrHwW3EocoYBsG0psQIYBfxkCXmE0WWAKjxIXkkq4r1mAJUznUnqJTWLnCFuhUpbArgVMSYkc4URKmJGYE0rCOi3owzQiLVi2FhpuxWm2QAhCC8CsKiXsuIfCADEQbMiJsRQA2RIBwdt8AlSoOQBkI88kFKKVAIZDZykJPiIkK4qjQBkC5MofwwkGxQAAKRZRMLoCUJjCn+GmLSD5plupumuWxbm1UepdPuRAdi9JBnC38g2FS4JzC8BEKsjZ6pnAVBPGGCMUYVlpn4BmLMqpOl3KSa0GFHSGi32-GAOkwAYAhDYEAA\">\u041a\u043e\u0434<\/a><\/p>\n<p>\u041d\u0430\u0447\u0438\u043d\u0430\u0435\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u0441 60 FPS \u0438 \u0434\u0430\u043b\u0435\u0435 \u043f\u043b\u0430\u0432\u043d\u043e \u043f\u0430\u0434\u0430\u0435\u0442 \u0434\u043e 30 FPS. \u0412\u043e\u0442, \u0443\u0436\u0435 \u043d\u0435\u043f\u043b\u043e\u0445\u043e.<\/p>\n<blockquote>\n<p>\u2014 \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0438\u043a\u0438 \u044d\u0442\u043e\u043c\u0443 \u0433\u043e\u0441\u043f\u043e\u0434\u0438\u043d\u0443.<br \/>\u041d\u0430\u0448\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u043f\u043e\u0438\u0441\u043a \u0432 \u0448\u0438\u0440\u0438\u043d\u0443 ( <a href=\"https:\/\/en.wikipedia.org\/wiki\/Breadth-first_search\">BFS<\/a>), \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u043f\u0430\u043c\u044f\u0442\u044c, \u043e\u0431\u044b\u0447\u043d\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u044c, \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430 \u0434\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0445 \u0443\u0437\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u044b\u043b\u0438 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b, \u043d\u043e \u0435\u0449\u0451 \u043d\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u044b. \u041d\u043e \u043d\u0430\u043c \u043f\u043e\u043a\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044f. \u041c\u044b \u0432\u0435\u0434\u044c \u0438 \u0442\u0430\u043a \u043f\u043e\u0441\u043b\u043e\u0439\u043d\u043e \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u0435\u043c \u043d\u0430\u0439\u0434\u0435\u043d\u043d\u044b\u0435, \u043d\u043e \u043d\u0435 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0443\u0437\u043b\u044b.<\/p>\n<\/blockquote>\n<figure class=\"\"><\/figure>\n<blockquote>\n<p>\u0427\u0451\u0440\u043d\u044b\u0439 \u2014 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043e, \u0441\u0435\u0440\u044b\u0439: \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043e \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u044c \u043d\u0430 \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0435.<br \/>\u041f\u043e\u0447\u0435\u043c\u0443 \u043c\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u043f\u043e\u0438\u0441\u043a \u0432 \u0448\u0438\u0440\u0438\u043d\u0443, \u0430 \u043d\u0435 \u0432 \u0433\u043b\u0443\u0431\u0438\u043d\u0443 (DFS)? \u041e\u0447\u0435\u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e \u0433\u0440\u0438\u0431\u043d\u0438\u0446\u0435 \u043d\u0435 \u0432\u044b\u0433\u043e\u0434\u043d\u043e \u0431\u0435\u0441\u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043c\u0438\u0440 \u043e\u0434\u043d\u0438\u043c \u043e\u0442\u0440\u043e\u0441\u0442\u043a\u043e\u043c, \u0435\u0441\u043b\u0438 \u0440\u044f\u0434\u043e\u043c \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432. \u0422\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u043a\u0430 \u043f\u0438\u0442\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0432\u0435\u0449\u0435\u0441\u0442\u0432 \u043e\u0442 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043b\u0438\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u0440\u043e\u0441\u0442\u043a\u0430 \u044f\u0432\u043d\u043e \u043f\u0440\u043e\u0438\u0433\u0440\u044b\u0432\u0430\u0435\u0442 \u043a\u043e\u0440\u043e\u0442\u043a\u0438\u043c \u0433\u0438\u0444\u0430\u043c.<\/p>\n<\/blockquote>\n<h2>\u0422\u0440\u0435\u0442\u0438\u0439 \u0448\u0430\u0433<\/h2>\n<p>\u0417\u0430\u043c\u0435\u043d\u0438\u043c \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u0440\u0442\u0435\u0436\u0438:<\/p>\n<pre><code class=\"python\">self.links.append(((x, y), (nx, ny)))<\/code><\/pre>\n<p>\u043d\u0430 \u0431\u043e\u043b\u0435\u0435 \u0434\u043b\u0438\u043d\u043d\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<pre><code class=\"python\">self.links.append((x * self.size + self.size \/ 2, y * self.size + self.size \/ 2, nx * self.size + self.size \/ 2, ny * self.size + self.size \/ 2))<\/code><\/pre>\n<p>\u0417\u0430\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0443 \u043d\u0430\u0441 \u0441\u0442\u0430\u043d\u0435\u0442 \u0441\u043e\u0432\u0441\u0435\u043c \u043a\u0440\u0430\u0442\u043a\u0438\u043c:<\/p>\n<pre><code class=\"python\">for l in self.links:     x1, y1, x2, y2 = l     line(x1, y1, x2, y2)<\/code><\/pre>\n<blockquote>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0441\u0434\u0435\u043b\u0430\u043b\u0438 \u0442\u0430\u043a\u0443\u044e \u0437\u0430\u043c\u0435\u043d\u0443? \u0414\u0435\u043b\u043e \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e Brython (\u043e\u043d\u043b\u0430\u0439\u043d-\u0442\u0440\u0430\u043d\u0441\u043b\u044f\u0442\u043e\u0440 Python \u0432 JS) \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u043a\u043e\u0440\u0442\u0435\u0436\u0430\u043c\u0438. \u0418, \u043a\u0441\u0442\u0430\u0442\u0438, \u043e\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043a\u043e\u0440\u0442\u0435\u0436\u0430 \u0442\u043e\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f, \u044d\u0442\u043e \u0443\u0441\u043a\u043e\u0440\u0438\u0442 \u043a\u043e\u0434 \u0435\u0449\u0451 \u0432 \u043f\u043e\u043b\u0442\u043e\u0440\u0430 \u0440\u0430\u0437\u0430.<\/p>\n<\/blockquote>\n<p>\u0421\u0442\u0430\u043b\u043e \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e 60-70 FPS.<\/p>\n<h2>\u0421\u043a\u0440\u044b\u0442\u044b\u0439 \u0431\u0430\u0433<\/h2>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u044d\u043d\u0435\u0440\u0433\u0438\u0438 \u0443 \u043c\u0438\u0446\u0435\u043b\u0438\u044f \u043c\u0430\u043b\u043e, \u0438 \u043e\u043d\u0430 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0430\u043d\u044c\u0448\u0435, \u0445\u043e\u0442\u044f \u0435\u0449\u0451 \u0435\u0441\u0442\u044c \u0443\u0437\u043b\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438. \u041d\u043e \u0435\u0441\u043b\u0438 \u044d\u043d\u0435\u0440\u0433\u0438\u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0434\u043e \u0442\u044b\u0441\u044f\u0447\u0438 <code>self.energy = 1220<\/code>, \u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0443 <code>IndexError: 'list index out of range'<\/code> \u0432 \u044d\u0442\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0435:<\/p>\n<pre><code class=\"python\">x, y = self.nodes[self.current_index]<\/code><\/pre>\n<p>\u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u0447\u043a\u0443:<\/p>\n<pre><code class=\"python\">if self.current_index &gt;= len(self.nodes):     return<\/code><\/pre>\n<p>\u0418\u0441\u043f\u0440\u0430\u0432\u0438\u043b\u0438:<br \/><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAxFIFgggfCCC8IIEEQQEIggBhB+wwNIg+AMIBRADIKA+gGUAkgC05UALxQATAAYoULoAIQUYHYQQDwggVhBAAiBRA8iCBxEDuBOEEBcIIA4QOgGMAGzIAZxCoAFlEfwBTQJQGCAAufFNTKhjgKGVlFAoULBzmELjgABooAA8KxFYUtIaoEsDgADoKMAzw-QBtZmqoWoBdVMbTZrb4igBrbqgekbHx0taYihiQAHNkfQBGA2NRsYnWsk2YvSgjI8aTkJQALwv9eSU1LR0lm4aT-wYQEBrQp5DKVS4mMxQQBEIHYvIBhEEAkiA+DxQHz8QAsILDBFBAEwgUBsokEgh8OLsUA6XW+aRuGSym3AAHdiqUKmsAG4ocAUCBAupU0woLInNYbbZQAA8+iM9SWDUBWH+FFMXEAqCCCQDcID4oIBZEH4jkAzCA+ZxQKyiLwCVw+dWEwAyIBUcZJAKIgvHRPhs-NQQpWfwBQNy1BiYIAfPpAmtmS12p0YiE+bK5TEFSAlfHTB6PVxAHgggEYQByibOiKQ40R2GxQYS8dU281QF1oqBwqx2dUm0S4yRWXh4r6ygY7JorCkxnq-f6AijAgOVIbKqCAfBBK3DXCWy43m1BAPwgvFRGKxcI9o99E-9oKgAGo9rPAMQgpM1luLpZ3mK82PR6uNvFz+d4wl8UA1djonCgByIAidj6tujbWrKHrrCgmwABYAEaYHM5yFHBiEoSAIT9DUrIUByXI8hOrQMigVBYAhBFEWA3JAq0CExPBCFYOwsrAJg5IDBQyB5OSzFYahMqpoKUDspydEkVgrT0hRPQUNOCmIEMrSAiEYD-LE4RBlAAAcJiUFQUDMIpFS8aw5JgDg-EnEOIQiamaR2dGISnDAMBrFQzCmTxtTsU5PwrFMszuZ51A+WCuADpG9xPOeMVtHFFwAPSGDUeCJa0yUJXcjypel3GZXl8VnllOVpQY5nINFJUXGVdVQJVrABYFpgScRDFyVQClKbxqnqZpIDaVAAC0+gGR6srCusWzIONUC7AeKxnPVex0A0tJQFQKAhDAwSIBGwBxksIRYOA0wxMwxhGBUuxwEYrW3OdYCXcoDKCaxzC7E9DScSAUCBKgSonCFDlTWklS7DU0NVFVgwGJcgQQ6YUxXVDMMVJU8OIAY7D4EEoThHIhGSfRE6OVtOR5AURQTCdxwrORlEIZczNUU1aWvCoGjaLOfB3nYIg4tubh2LCm7boAEiA+A4aJ2MtkZMSxOD6MriE4ClXOKDzHz85WPjuMLovuBLW7toIP4K9NKzdZcPQ9DIcSBMw5DUJAalGXkWDMLdhhGI9ln-dkwOkJQ5xHYxn1sTOwfKKHbsRyc7MIawIw0pk227ftZCHfTjl-VxYL8YnV3JxRVEM-Gwd8UqpeR+rrFV4FsSBED+gnN1PRKSpKONMAKBt77FSt4EakxkN2kVH7uwB79TkdMoZ0XVd8+poC-g+1FUDc+82gZdFu+83IFRHx8p863vcj44TYQ787lOZ9T+SFMoR0VINWkxs3zkrJ-w0xkuP-bSdAtroWUJhZCqE8KDAqCnCojc2KOUgdhOYCwbjByoAMKgtd5jMFGrDR6FRvrT1YMQv2BCyEmRnmnAuaQzLkn7GCMqWCMosMQB6MSJhJRFXFFAFOUAjJXAlPoXiEooCILoWMFBqEwpeR8gwiyT15SKgEixVBnAoCAGQQdUn5RBVn4JIMkG5HCljsPwQxCsOpSSBJcAAcnRGI+AIDRDiAkaA+gHHrFAZnEoCoYBsEcpsQIYAkJkCBtY8mWAKguNbu4m4yVmAGT9skp6kTpKXBJrRKJbAbixLcYkS4UQ4mJGYOkhiAitaFXKaRRBnNDCWUhIAQhBeBWHRCufEPhABiIM2ZEuIoA9IkA4BW+AtpUHIEyKuwTQnhPEqTTqE4YmuPiIkG4YlQBkB5MofwmkJxQAAKSLRMLoKUUioBhP8NMekuzvKPQ9DUmSO09oHVyQ0fJKyICyUZGU+ZNiJyNIsLwEQnSemamcBUT8eYCxFg6XWfgDYmzqjycs9xrQnk50Ok9JeCEwAMmADAXCrAgA\">\u041a\u043e\u0434<\/a><\/p>\n<figure class=\"\">\n<div><figcaption><em>\u0417\u0430\u0432\u043e\u0440\u0430\u0436\u0438\u0432\u0430\u044e\u0449\u0435 \u0440\u0430\u0441\u0442\u0451\u0442<\/em><\/figcaption><\/div>\n<\/figure>\n<figure class=\"\"><\/figure>\n<h2>\u0427\u0435\u0442\u0432\u0451\u0440\u0442\u044b\u0439 \u0448\u0430\u0433. \u041d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0442\u0430\u043a\u0442\u043e\u0432 \u0437\u0430 \u0440\u0430\u0437<\/h2>\n<p>\u041c\u043e\u0436\u043d\u043e \u0432\u0438\u0437\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0435\u0449\u0451 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c, \u0435\u0441\u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u0437\u043b\u043e\u0432 \u0437\u0430 \u0440\u0430\u0437. \u041f\u0440\u043e\u0441\u0442\u043e \u0432\u0432\u0435\u0434\u0451\u043c \u0441\u0447\u0435\u0442\u0447\u0438\u043a \u0443\u0437\u043b\u043e\u0432:<\/p>\n<pre><code class=\"python\">step = 0 while self.current_index &lt; len(self.nodes) and self.energy &gt; 0 and step &lt; 4:     step += 1     # ...<\/code><\/pre>\n<p><a href=\"https:\/\/p5py.khasang.ru\/ide\/lz\/GYJw9gtgBADgrDAnlAlhGYQBcoCoBQaG2UIAhgHYAmk++IArhQBQCUdAxFIFgggfCCC8IIEEQQEIggBhB+wwNIg+AMIBRADIKA+gGUAkgC05UALxQATAAYoULoAIQUYHYQQDwggVhBAAiBRA8iCBxEDuBOEEBcIIA4QOgGMAGzIAZxCoAFlEfwBTQJQGCAAufFNTKhjgKGVlFAoULBzmELjgABooAA8KxFYUtIaoEsDgADoKMAzw-QBtZmqoWoBdVMbTZrb4igBrbqgekbHx0taYihiQAHNkfQNjUbGJ1rJNmL0oIwPGo5CUAC8z-XklNS0dJauGo-8GEBA1wp5DKVc4mMxQQBEIHYvIBhEEAkiA+DxQHz8QAsINDBFBAEwgUBsokEgh8WLsUA6XU+aSuGSym3AAHdiqUKmsAG4ocAUCAAuoU0woLJHNYbbZQAA8+iM9SWDX+WF+FFMXEAqCCCQDcID4oIBZEH4jkAzCA+ZxQKyiLwCVw+VX4wAyIBUsZJAKIgvFRPhsvNQApWPz+ANy1BiIIAfPpAmtGS12p0YiEedKZTE5SAFbHTHRpSEsDEYKC3XSABYoENNT2-f4UQF+kGiqAhlhHMlR1hQShUIvhoVbZABi5N6hNDNZqsAFilyfTmagAGp9ABGN0NLiAPBBAIwgDlES9EUixojsNigwl4qqtpqgTpRUBhVjsqqNomxkisvBxH2TpgGO1bbXrIR63xLPqB-pDIqUCAPggB4wq4267heV5QIA-CC8MiaIYjCc5pL+3plr6wKTjOwGAMQgxLquaW47kh6JeJiqKqoavArmuvDCL4UBqnYqIwoAciBwnYuqIRelrSmhpjrCgmy5gARpgcynIUIliZJIAhP0NTMhQbIclyZatHSKBUFguaqepYCcgCrS5jEom5lg7AvlAwCYKSAwUMgeSkhZ8lSSOtnulArLssZmlYK0tK6T0FCVEMYWIEMrT-CEYC-LE4RdgAHCYzZQMw4UVM5jYdDgrl1pGIRed56ErF+xwwDAaxUMwWVObUNlldcKxTLMVU1dQ9UgrgH6tLcDyTv1g1nAA9IYNR4CN9xnBOM1DRNBg5b1C1zWtUBLTlyB9Tcs3DXti2GKwzUtWkfkaaZIVUGFEVRTFcUJSASVQAAtPoaVCbGgrrB2b0zm6RwnHNANUpkUBUCgIQwMEiBhsAMZLOm4DTDEzDGEYp3XFgKMxModLuVZzAAMxYw09kgNWqAKkc7UlV9lTTjUTNVMtgwGOcgRfVMaOM8zFSVGziAGOw+BBKE4RyGp-kmWWXnUtkvoFEUEyI4cKw6XpubnJr+mbRNzwqBo2jAXwxF2CIWKIW4djQvBiGABIgPgOCidiAys5mWTg+ie2JOBjQbihG28psHj47iW9b7h2whd6CIxbtpis13nD0PQyHEgTMOQ1CQLFzZ5FgzBGBUGMnXZDnKNTpCUKc8NmYT1lART2TVznddHLruasCMYNZJD0Ow-DauNC3IKue3aOd7p+kj9KLcuQqk-177Vlzy+sSBIE5xHNdPR3dFX3kwWWcl1Am+BLFUZPUlFRn9ORiY0faQdMoyNgKjbDP6Y-z+EXq2G1eNoKafVAHGzkBUMBbxIFByAXIUW4swhQAzlveW4Mch5GVsoeGFRHqJQbKVcq4Y8HPSjOcEhSU6AKxksoOSEkpLKUGBULuFRV7WS8nQhScwFhXBblQAYVBF7zGYK9FmmMKjMDEawCRZ9RHSMyvfHuhDhKNXOCCea-CpoaMQG6fk3ZxSOTFFALuPYWwmAMc5IxbDlGNE4VJTqtV6rZVJE1K4sp5RuUslwzgUBADIIKqOiohDz8EkCSOCjgdx2H4CEt2F0AoAnOAAOWMjEfAEBohxASNAfQyT1hUPBiUOUMA2BeU2IEMA4kyDbzibLLAFR0mbyyVcLgo1mA6VznSfGM8DLGKBGATpbCsYtNmswNKZ9ibGCxq0sZFQxlYxqYFc4UsjK1K-g0BpmTEjnCiI0xIzAFmmRMQHSavlpaXS0mw-Wx1gKAEIQXgVhURQVxD4QAYiBXkRNiKAbyJAODdvgBWVByAMhHmUipVTTkrMCvUjJ8REhXD0aAMgXJlD+ASmWKAABSKAD89AShsZU-w0xaRorqk-aUBytIDxhmQOGWMNmwogMFek+yznxLLI2cE5heAiGeW89UzgKh0VXOuTcTzTz8HPJeVUVx6VZNaFSoeWM365n6cAGASlRZAA\">\u041a\u043e\u0434<\/a><\/p>\n<figure class=\"\"><\/figure>\n<h2>\u0413\u043b\u044f\u0434\u0438 \u0432 \u043a\u043e\u0440\u0435\u043d\u044c<\/h2>\n<p>\u0414\u043e\u0431\u0430\u0432\u0438\u043c \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u0442\u0443\u0449\u0438\u0445 \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u0439 \u043c\u0438\u0446\u0435\u043b\u0438\u044f:<\/p>\n<pre><code class=\"python\">def display(self):     for x, y in self.nodes[self.current_index:]:         fill(\"red\")         rect(x*self.size, y*self.size, self.size,<\/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-443464","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/443464","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=443464"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/443464\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=443464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=443464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=443464"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}