主显节塔 | 像程序员一样思考 - 第 7 集
-
0:32 - 0:37Ethic 和 Hedge 站在巨大塔楼的底层。
-
0:37 - 0:42能量屏障把他们与第二个目标隔开了:
-
0:42 - 0:44创造之结。
-
0:53 - 0:57为了拿到它,
Ethic 要用三束能量流爬上塔楼。 -
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:33Ethic 和 Hedge 必须确定
有多少能量会流下来。 -
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:19Hedge 每次能让一个能量柱现形
并数出它的高度, -
2:19 - 2:23但他不能一次看全整个结构。
-
2:23 - 2:26Ethic 要怎样让 Hedge 计算出
-
2:26 - 2:29这个容器可以容纳多少能量呢?
-
2:29 - 2:33现在暂停来自己试试。
-
2:39 - 2:42有一种方法来思考这个问题:
-
2:42 - 2:45对于一个空的单元格,
当且仅当它左边有墙, -
2:45 - 2:49右边也有墙时,
-
2:49 - 2:52才可以容纳能量。
-
2:52 - 2:56但 Hedge 一个个检查
这些单元格会耗费很多时间。 -
2:56 - 3:01如果他一次考虑一整个纵列呢?
-
3:01 - 3:05比如这个结构可以容纳多少能量?
-
3:05 - 3:07暂停来自己试试。
-
3:10 - 3:14我们可以通过这个例子
来分析一下问题。 -
3:14 - 3:16这里有 5 纵列单元格。
-
3:16 - 3:20最左边的不能容纳任何能量,
因为没有比它更高的了。 -
3:20 - 3:23第二列能容纳3个单元格的能量,
-
3:23 - 3:27这两个四格高的纵列
可以把能量夹在中间。 -
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:05Hedge 由此向左一点点检查,
找到最高的纵列, -
4:05 - 4:08再检查右边并找出最高的纵列,
-
4:08 - 4:13两个高度中较小的
就是最终能量可以填满的高度。 -
4:13 - 4:16如果这个结果高过某列原高度,
-
4:16 - 4:19那么减去这列的原有高度,
-
4:19 - 4:23就能得出这个纵列的容纳量。
-
4:24 - 4:27如果低于某列的原有高度,
-
4:27 - 4:29能量就会泄漏。
-
4:29 - 4:33Hedge 可以对整个底座
依次这样操作, -
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每一步,Hedge 都要反复地左看右看。
-
5:05 - 5:10如果有 N 个纵列,
他就需要把每个纵列都看 N 遍。 -
5:10 - 5:12有没有更快的方法呢?
-
5:12 - 5:16有个节省时间的方法:
-
5:16 - 5:17首先,Hedge 从左边开始,
-
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:46现在 Hedge 可以再扫描一次,
-
5:46 - 5:50按照之前的等式计算每个纵列
可以容纳多少能量: -
5:50 - 5:54在存储的左右最高值中选较小的,
-
5:54 - 5:57再减去当前纵列的高度。
-
5:57 - 6:02与把 N 个纵列每个看 N 遍相比,
他只需把每个纵列看三遍—— -
6:02 - 6:05这就是我们所说的线性时间。
-
6:05 - 6:08还有很多更优解决方法,
-
6:08 - 6:11但这个已经够好了。
-
6:11 - 6:12Ethic 和 Hedge 配合默契。
-
6:15 - 6:19他们轻而易举地通过了
第一个瀑布,塔楼地板上升了。 -
6:22 - 6:24第二个难一些。
-
6:33 - 6:37第三个容器非常大,
每列有数十个单元格。 -
6:37 - 6:41计时器显示出 0,
但 Ethic 的动作很快。 -
6:41 - 6:44她在最后时刻找到了正确位置,
-
6:49 - 6:52能量让他们上升至创造之结。
-
6:56 - 7:01和第一次一样,它显现出了幻象:
多年前的记忆。 -
7:01 - 7:03世界机器改变了一切,
-
7:03 - 7:07Ethic 作为首席机器人工程师,
-
7:07 - 7:09对她目击到的现象感到不安。
-
7:09 - 7:12当 Brad 障碍升起并围住人群时,
-
7:12 - 7:15她知道大事不妙了。
-
7:15 - 7:17于是她造出了三个物品,
-
7:17 - 7:21它们拥有修复人们的力量、
创造力以及记忆的能力, -
7:21 - 7:24并把它们偷运到了三个社区里。
-
7:24 - 7:26在她告诉人们如何使用之前,
-
7:26 - 7:30政府发现了她的成果,
并派出机器人 -
7:30 - 7:32抓捕她以及其他程序员。
-
7:32 - 7:35Ethic 用世界机器创造的
最后一件物品是个机器人, -
7:35 - 7:38它可以把古老的装置
-
7:38 - 7:42围在大型迷宫中,
使它远离愚昧的力量。 -
7:42 - 7:45她给这个物品起名叫 Hedge。
-
7:52 - 7:56在没有任何警告的情况下,
能量电梯开始闪烁,然后消散了。
- Title:
- 主显节塔 | 像程序员一样思考 - 第 7 集
- Speaker:
- Alex Rosenthal
- Description:
-
观看完整课程: https://ed.ted.com/lessons/the-tower-of-epiphany-think-like-a-coder-ep-7
本视频是《像程序员一样思考》系列动画的第 7 集。全部 10 集都跟随女孩 Ethic 和她的机器人伙伴 Hedge 的脚步,记录着他们尝试拯救世界的行为。他们需要收集三样物品,同时必须面对一系列的编程谜题。
授课:Alex Rosenthal;导演:Kozmonot Animation Studio。
- Video Language:
- English
- Team:
closed TED
- Project:
- TED-Ed
- Duration:
- 07:58
![]() |
Yolanda Zhang approved Chinese, Simplified subtitles for The Tower of Epiphany | Think Like A Coder, Ep 7 | |
![]() |
Yolanda Zhang edited Chinese, Simplified subtitles for The Tower of Epiphany | Think Like A Coder, Ep 7 | |
![]() |
Yolanda Zhang accepted Chinese, Simplified subtitles for The Tower of Epiphany | Think Like A Coder, Ep 7 | |
![]() |
Yolanda Zhang edited Chinese, Simplified subtitles for The Tower of Epiphany | Think Like A Coder, Ep 7 | |
![]() |
Yolanda Zhang edited Chinese, Simplified subtitles for The Tower of Epiphany | Think Like A Coder, Ep 7 | |
![]() |
Yolanda Zhang edited Chinese, Simplified subtitles for The Tower of Epiphany | Think Like A Coder, Ep 7 | |
![]() |
Yolanda Zhang edited Chinese, Simplified subtitles for The Tower of Epiphany | Think Like A Coder, Ep 7 | |
![]() |
Yolanda Zhang edited Chinese, Simplified subtitles for The Tower of Epiphany | Think Like A Coder, Ep 7 |