< Return to Video

艺术家们 | 像程序员一样思考 第五集

  • 0:09 - 0:11
    [ 像程序员一样思考 ]
  • 0:13 - 0:18
    [ 地点:198 树林 ]
  • 0:19 - 0:20
    [ 第五集 艺术家们 ]
  • 0:23 - 0:28
    破晓时分,火车停下,
    艾斯克和海吉抵达了树林。
  • 0:28 - 0:31
    这两位冒险者
    已找到第一件神器 ——
  • 0:31 - 0:33
    能量晶石,
  • 0:33 - 0:37
    现抵达 198 森林,
    来找寻第二件神器,
  • 0:37 - 0:41
    殖民首领奥克塔维亚
    欢迎他们的到来。
  • 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 - 1:00
    他们放弃了艺术和手工,
  • 1:00 - 1:03
    只是不停地画自己,
    并展示自己的照片,
  • 1:03 - 1:05
    日复一日,年复一年。
  • 1:05 - 1:08
    第二件神器的位置众所周知,
  • 1:08 - 1:10
    位于一个万丈深谷的塔里,
  • 1:10 - 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:46
    每个方向的像素数都是奇数。
  • 1:46 - 1:49
    机器人助手收集画完的肖像,
  • 1:49 - 1:53
    并挂在公共场所供大家欣赏。
  • 1:53 - 1:57
    海吉只有极短的时间窗口
    能接触到这些画,
  • 1:57 - 2:00
    如果它在每幅画上涂个 X,
  • 2:00 - 2:03
    人们就会责怪机器人助手,
  • 2:03 - 2:06
    从而实现他们
    分散机器人注意力的目的,
  • 2:06 - 2:08
    要是实现起来
    也如此容易就好了,
  • 2:08 - 2:11
    海吉不是如此简单就能画上 X,
  • 2:11 - 2:15
    它的绘画处理器
    需要非常具体的指令。
  • 2:15 - 2:17
    它把这些画当作正方形网格,
  • 2:17 - 2:21
    一次只能填一个像素,
    即只能填一个小正方形。
  • 2:21 - 2:25
    它在画布上可以向前移动,
    也能进行 90 度旋转,
  • 2:25 - 2:28
    但不能斜着移动。
  • 2:28 - 2:32
    艾斯克如何编程,
    才能让海吉在自画像上涂上 X 呢?
  • 2:32 - 2:34
    [ 可暂停播放自行解题 ]
  • 2:34 - 2:35
    [ 涂画规则 4 ]
  • 2:35 - 2:36
    [ 涂画规则 3 ]
  • 2:36 - 2:37
    [ 涂画规则 2 ]
  • 2:37 - 2:38
    [ 涂画规则 1 ]
  • 2:38 - 2:39
    [ 思路 5 ]
  • 2:39 - 2:40
    [ 思路 4 ]
  • 2:40 - 2:41
    [ 思路 3 ]
  • 2:41 - 2:41
    [ 思路 2 ]
  • 2:41 - 2:42
    思路如下:
  • 2:42 - 2:45
    先画一个正方形网格,如图,
  • 2:45 - 2:48
    然后模拟海吉的涂画路径。
  • 2:48 - 2:51
    如何指导海吉完成任务呢?
  • 2:51 - 2:52
    [ 按暂停自己解题 ]
  • 2:52 - 2:53
    [ 答案公布 3 ]
  • 2:53 - 2:54
    [ 答案公布 2 ]
  • 2:54 - 2:55
    [ 答案公布 1 ]
  • 2:56 - 2:58
    这里的挑战是如何设计指令组,
  • 2:58 - 3:01
    以适用任何大小的正方形网格。
  • 3:01 - 3:05
    幸运的是,编程的优点之一
    就是其灵活性,
  • 3:05 - 3:07
    它并非只能解决一个问题,
  • 3:07 - 3:10
    而是一次性解决一类问题。
  • 3:10 - 3:15
    先从一个案例开始着手,
    总有助于找到整体方案。
  • 3:15 - 3:17
    我们假设正方形如图所示,
  • 3:17 - 3:21
    海吉可测量其边长,
    并保存为变量值。
  • 3:21 - 3:27
    现在,我们需要一个计划,
    让海吉把像素逐个画上 X 。
  • 3:27 - 3:30
    实现方法不止一个,
  • 3:30 - 3:32
    我们先来看两个方法。
  • 3:32 - 3:35
    第一种,打字机模式,
    让海吉一行一行地画。
  • 3:35 - 3:38
    如果画像是 9 X 9 像素,
  • 3:38 - 3:43
    它先画第一行第一格,
    跳过七格,然后画一格,
  • 3:43 - 3:47
    第二行,他跳过第一格再画,
    跳过五格再画,
  • 3:47 - 3:49
    继续画下一行。
  • 3:49 - 3:54
    规则是,每行开始跳过的像素 +1,
  • 3:54 - 3:58
    中间跳过的像素 -2,
  • 3:58 - 4:01
    海吉画到中心点时,
    情况变得更加复杂。
  • 4:01 - 4:04
    这一行只画一个像素。
  • 4:04 - 4:06
    然后,画的顺序就全反了 ——
  • 4:06 - 4:10
    左边跳过的像素数每行 -1,
  • 4:10 - 4:14
    每行中间跳过的像素数 +2。
  • 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:34
    才能使逻辑始终一致呢?
  • 4:34 - 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:16
    现在向前少移动一格,
    右转,再向前移动一格,
  • 5:16 - 5:19
    海吉正好位于
    下个同心正方形一角,
  • 5:19 - 5:22
    即可重复下一个循环过程。
  • 5:22 - 5:28
    每个正方形的长宽
    都比上一个少 n - 2 像素,
  • 5:28 - 5:30
    继续该螺旋模式,
  • 5:30 - 5:37
    通过变量和循环控制海吉的步伐,
    最终一直画到中心点。
  • 5:37 - 5:39
    两种方式哪种更优呢?
  • 5:39 - 5:41
    这取决于你的侧重点。
  • 5:41 - 5:44
    螺旋循环的优点在于,
    它简单地找到一个模式,
  • 5:44 - 5:47
    并从头到尾循序相同逻辑。
  • 5:47 - 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:05
    不一会儿,
  • 6:05 - 6:09
    痛苦的哭声响彻整个森林。
  • 6:09 - 6:12
    守卫塔的守卫们
    离开了他们的岗位,
  • 6:12 - 6:14
    以安抚骚动的人们,
  • 6:14 - 6:17
    艾斯克、海吉和奥克塔维亚
    悄悄穿了过去 ——
  • 6:17 - 6:20
    差一点掉进幽幽深谷,
  • 6:20 - 6:23
    那位于他们和塔之间的万丈峡谷。
Title:
艺术家们 | 像程序员一样思考 第五集
Speaker:
亚历克斯 · 罗森塔尔
Description:

查看完整课程:https://ed.ted.com/lessons/the-artists-think-like-a-coder-ep-5

这是我们的动画系列 《像程序员一样思考》的第五集。该故事共十集,讲述了女孩艾斯克和她的机器人伙伴海吉努力拯救世界的故事。 两人从收集三个神器开始,并且必须通过解决一系列编程谜题,才能完成这一使命。

课程讲解:亚历克斯·罗森塔尔(Alex Rosenthal),动画执导:Kozmonot Animation 工作室。

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

Chinese, Simplified subtitles

Revisions