Башня прозрения | Думай по-кодерски — эпизод 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.
- Video Language:
- English
- Team:
closed TED
- Project:
- TED-Ed
- Duration:
- 07:58
![]() |
Retired user edited Russian subtitles for The Tower of Epiphany | Think Like A Coder, Ep 7 | |
![]() |
Retired user approved Russian subtitles for The Tower of Epiphany | Think Like A Coder, Ep 7 | |
![]() |
Retired user edited Russian subtitles for The Tower of Epiphany | Think Like A Coder, Ep 7 | |
![]() |
Retired user accepted Russian subtitles for The Tower of Epiphany | Think Like A Coder, Ep 7 | |
![]() |
Retired user edited Russian subtitles for The Tower of Epiphany | Think Like A Coder, Ep 7 | |
![]() |
Elena McDonnell edited Russian subtitles for The Tower of Epiphany | Think Like A Coder, Ep 7 | |
![]() |
Elena McDonnell edited Russian subtitles for The Tower of Epiphany | Think Like A Coder, Ep 7 | |
![]() |
Elena McDonnell edited Russian subtitles for The Tower of Epiphany | Think Like A Coder, Ep 7 |