Return to Video

主显节塔 | 像程序员一样思考 - 第 7 集

  • 0:32 - 0:37
    Ethic 和 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:33
    Ethic 和 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:19
    Hedge 每次能让一个能量柱现形
    并数出它的高度,
  • 2:19 - 2:23
    但他不能一次看全整个结构。
  • 2:23 - 2:26
    Ethic 要怎样让 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:05
    Hedge 由此向左一点点检查,
    找到最高的纵列,
  • 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:33
    Hedge 可以对整个底座
    依次这样操作,
  • 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:12
    Ethic 和 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:07
    Ethic 作为首席机器人工程师,
  • 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:35
    Ethic 用世界机器创造的
    最后一件物品是个机器人,
  • 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。

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

Chinese, Simplified subtitles

Revisions