< Return to Video

Башня прозрения | Думай по-кодерски — эпизод 7

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

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

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

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

more » « less
Video Language:
English
Team:
closed TED
Project:
TED-Ed
Duration:
07:58

Russian subtitles

Revisions Compare revisions