< Return to Video

Художники | Думай по-кодерски — эпизод 5

  • 0:23 - 0:28
    Светает, и поезд начинает замедляться.
    Этика с Хеджем въезжают в лес.
  • 0:28 - 0:31
    Наши путешественники
    уже нашли первый артефакт —
  • 0:31 - 0:33
    Модуль силы —
  • 0:33 - 0:37
    и прибыли в лесополосу №1984,
    чтобы завладеть вторым.
  • 0:37 - 0:42
    Здесь их встречает
    директор колонии Октавия.
  • 0:42 - 0:44
    Она основала это поселение
    с домами на деревьях
  • 0:44 - 0:47
    после того, как роботы
    взяли на себя всю работу.
  • 0:47 - 0:51
    Оно должно было стать убежищем для всех,
    кто хотел заниматься любимым делом,
  • 0:51 - 0:53
    творить и самореализовываться.
  • 0:53 - 0:55
    Так всё и было. Но только сначала.
  • 0:55 - 0:58
    Несколько лет назад все
    забыли, почему они здесь.
  • 0:58 - 0:59
    Они забросили творчество
  • 0:59 - 1:03
    и стали рисовать и вывешивать
    только свои портреты
  • 1:03 - 1:05
    снова и снова.
  • 1:05 - 1:08
    Местонахождение второго
    артефакта хорошо известно.
  • 1:08 - 1:11
    Он находится в башне,
    охраняемой гарнизоном роботов
  • 1:11 - 1:15
    и окружённой бездонным ущельем
    и множеством других ловушек.
  • 1:15 - 1:19
    Как только башня с модулем
    была воздвигнута,
  • 1:19 - 1:23
    связь между людьми прервалась.
  • 1:23 - 1:25
    Октавия уже много лет
    пытается его выкрасть,
  • 1:25 - 1:29
    но как бы она ни старалась,
    оборона всегда побеждает.
  • 1:29 - 1:33
    Чтобы хотя бы добраться до башни,
    нашей команде нужен отвлекающий манёвр.
  • 1:33 - 1:35
    У Октавии рождается идея:
  • 1:35 - 1:39
    благонамеренный вандализм,
    который должен всколыхнуть народ.
  • 1:39 - 1:43
    Все портреты художников квадратной
    формы, но разного размера,
  • 1:43 - 1:47
    с нечётным количеством
    пикселей по каждой стороне.
  • 1:47 - 1:49
    Роботы-помощники собирают портреты
  • 1:49 - 1:53
    и развешивают их в общественных местах,
    где ими могут любоваться все.
  • 1:53 - 1:57
    В течение очень короткого промежутка
    времени у Хеджа будет доступ к картинам.
  • 1:57 - 2:00
    Если он сможет нанести крест на каждую,
  • 2:00 - 2:03
    люди обвинят в этом роботов-помощников,
  • 2:03 - 2:06
    и это отвлечёт их внимание
    от всего остального.
  • 2:06 - 2:09
    Но если бы всё было так просто!
  • 2:09 - 2:11
    Хедж не может просто нарисовать крест.
  • 2:11 - 2:15
    Его процессору нужны
    очень чёткие инструкции.
  • 2:15 - 2:17
    Рассматривая портреты
    как квадратные сетки,
  • 2:17 - 2:21
    он может заполнять один пиксель,
    или одну клетку, за раз.
  • 2:21 - 2:25
    Он может двигаться по холсту
    по прямой и поворачивать на 90 градусов,
  • 2:25 - 2:28
    но не может перемещаться по диагонали.
  • 2:28 - 2:30
    Как Этике нужно запрограммировать Хеджа,
  • 2:30 - 2:33
    чтобы он нарисовал крест
    на каждом портрете?
  • 2:33 - 2:41
    Приостановите видео, если хотите
    найти ответ самостоятельно.
  • 2:41 - 2:43
    Вот подсказка.
  • 2:43 - 2:46
    Попробуйте нарисовать
    вот такую квадратную сетку
  • 2:46 - 2:48
    и запланировать путь Хеджа.
  • 2:48 - 2:51
    Какую схему можно использовать,
    чтобы направлять его?
  • 2:51 - 2:56
    Приостановите видео, если хотите
    найти ответ самостоятельно.
  • 2:56 - 2:58
    Задача состоит в том,
    чтобы создать набор указаний,
  • 2:58 - 3:01
    который будет действительным
    для любой квадратной сетки.
  • 3:01 - 3:04
    К счастью, одно из преимуществ
    программирования состоит в том,
  • 3:04 - 3:07
    что, решая одну задачу,
  • 3:07 - 3:10
    вы одновременно решаете
    целую группу подобных ей задач.
  • 3:10 - 3:15
    Зачастую полезно начать с одного
    примера и двигаться к общему.
  • 3:15 - 3:17
    Представим, что у нас вот такой квадрат.
  • 3:17 - 3:21
    Хедж может замерить его сторону
    и сохранить это число как переменную.
  • 3:21 - 3:26
    Теперь нам нужен план того,
    как Хедж будет рисовать крест
  • 3:26 - 3:27
    по одному пикселю за раз.
  • 3:27 - 3:30
    Существуют разные способы это сделать.
  • 3:30 - 3:32
    Давайте рассмотрим два из них.
  • 3:32 - 3:35
    Что, если Хедж будет двигаться по строкам,
    как каретка пишущей машинки?
  • 3:35 - 3:38
    Если размер портрета — 9 на 9 пикселей,
  • 3:38 - 3:41
    в первой строке он закрасит клетку,
    пропустит следующие семь
  • 3:41 - 3:43
    и снова закрасит клетку.
  • 3:43 - 3:46
    Во второй строке он пропустит
    первую клетку, закрасит вторую,
  • 3:46 - 3:47
    пропустит пять и снова закрасит.
  • 3:47 - 3:49
    И так далее.
  • 3:49 - 3:53
    Здесь схема такова, что клетки,
    пропущенные в начале строки,
  • 3:53 - 3:54
    увеличиваются на одну,
  • 3:54 - 3:58
    а пиксели, пропущенные в середине,
    уменьшаются на два.
  • 3:58 - 4:01
    Всё немного усложняется,
    когда Хедж достигает центра.
  • 4:01 - 4:04
    В этой строке будет закрашен
    всего один пиксель.
  • 4:04 - 4:06
    Затем всё повторяется
    в обратном направлении.
  • 4:06 - 4:10
    Количество пропущенных пикселей слева
    уменьшается на один с каждой строкой,
  • 4:10 - 4:14
    а в середине — увеличивается на два.
  • 4:14 - 4:17
    Если дать Хеджу такие указания
    с помощью серии циклов,
  • 4:17 - 4:19
    то это вполне приемлемое решение.
  • 4:19 - 4:23
    Его основной недостаток — то, что тут
    необходимо много логических заключений:
  • 4:23 - 4:26
    нужно знать, что делать в центре,
    когда нужно изменить направление,
  • 4:26 - 4:29
    и как именно это сделать.
  • 4:29 - 4:31
    Можем ли мы найти способ,
  • 4:31 - 4:35
    в котором логика остаётся
    постоянной от начала до конца?
  • 4:35 - 4:40
    Основная идея — это рассматривать сетку
    как набор концентрических квадратов.
  • 4:40 - 4:43
    В каждом из этих квадратов
    схема одинакова:
  • 4:43 - 4:47
    закрашенные пиксели в углах
    и незакрашенные между ними.
  • 4:47 - 4:50
    Поэтому если мы сможем найти
    способ окрасить один квадрат,
  • 4:50 - 4:55
    перейти на следующий и повторить это
    действие, то мы сможем окрасить их все.
  • 4:55 - 4:57
    Окраска наружного квадрата очень проста.
  • 4:57 - 5:00
    Начни в углу и закрась этот пиксель.
  • 5:00 - 5:02
    Если мы обозначим длину
    стороны картины как n,
  • 5:02 - 5:05
    то нужно переместиться
    вперёд на n-1 клеток.
  • 5:05 - 5:07
    Закрась этот пиксель и поверни направо.
  • 5:07 - 5:11
    А теперь повтори всё это ещё два раза.
  • 5:11 - 5:15
    Теперь переместись вперёд на одну
    клетку меньше, поверни направо
  • 5:15 - 5:16
    переместись на одну клетку,
  • 5:16 - 5:19
    и ты окажешься в следующем
    концентрическом квадрате
  • 5:19 - 5:22
    и сможешь проделать все действия заново.
  • 5:22 - 5:28
    Каждый квадрат на n-2 пикселей меньше,
    чем предыдущий, по длине и ширине,
  • 5:28 - 5:32
    и эта спиральная схема
    продолжается до самого центра
  • 5:32 - 5:37
    с помощью цикла и переменной, задающей,
    на сколько клеток перемещается Хедж.
  • 5:37 - 5:39
    Какой из этих методов лучше?
  • 5:39 - 5:41
    Всё зависит от того, что для вас важно.
  • 5:41 - 5:45
    Преимущество спирали в том,
    что вырабатывается одна схема
  • 5:45 - 5:48
    и от начала до конца
    используется одна и та же логика.
  • 5:48 - 5:50
    Преимущество способа каретки в том,
  • 5:50 - 5:52
    что это более обобщённое решение,
  • 5:52 - 5:56
    то есть его гораздо легче адаптировать
    под другие схемы рисунка.
  • 5:56 - 5:59
    Этике подойдёт любой из этих способов.
  • 5:59 - 6:01
    Происходит следующее.
  • 6:01 - 6:04
    Хедж быстро перечёркивает все портреты.
  • 6:04 - 6:09
    В считанные секунды по лесу
    разносятся крики возмущения.
  • 6:09 - 6:12
    Гарнизон роботов, охраняющий
    башню, покидает свой пост,
  • 6:12 - 6:14
    чтобы успокоить взволнованную толпу,
  • 6:14 - 6:17
    а Этика, Хедж и Октавия
    незаметно ускользают...
  • 6:17 - 6:20
    и чуть не падают в ущелье,
  • 6:20 - 6:23
    пролегающее между ними и башней.
Title:
Художники | Думай по-кодерски — эпизод 5
Speaker:
Алекс Розенталь
Description:

Посмотреть урок полностью: https://ed.ted.com/lessons/the-artists-think-like-a-coder-ep-5

Перед вами пятый эпизод нашего мультипликационного сериала «Думай по-кодерски». В этом сериале из десяти эпизодов вы познакомитесь с девушкой по имени Этика и её напарником, роботом Хеджем, которые пытаются спасти мир. Они отправляются на поиск трёх артефактов, но по пути им придётся разгадать множество головоломок, связанных с программированием.

Урок — Алекс Розенталь, мультипликация — Kozmonot Animation Studio.

more » « less
Video Language:
English
Team:
closed TED
Project:
TED-Ed
Duration:
06:25

Russian subtitles

Revisions