[ 像程序员一样思考 ] [ 地点:监狱、BRADBARRIER ] [ 第二集 反抗 ] 海吉从狱中救出艾斯克之后, 就带着她飞往长城脚下的 一个边境定居点, 布莱德霸长城绕国土而建。 那里的人们很快就要聚集 参加每月的喂食活动。 长城脚下的人花了大量时间 从全国收集艺术和文学作品。 喂食那天炉膛机器人抵达,饥饿如狼。 如果机器人吃东西,炉膛灯才会亮, 给人的食物就会被送出来。 如果它们挨饿,人们就没吃的。 他俩抵达城郊时, 海吉的燃料刚好用尽, 他们只好紧急着陆。 幸运的是,所有人忙于准备喂食, 没有人注意到他俩。 在今天的喂食现场, 艾斯克能找到在暗中的反抗领袖, 此人知道三个强大物件中 第一个的位置。 问题是,海吉和艾斯克 不知道抵抗领袖的名字或长相。 但海吉搜集到领袖的相关信息: 他的眼睛是绿色的; 如果他长着红头发, 名字至少两个连续字母相同; 如果戴眼镜的话, 名字中则有且仅有 2 个元音; 否则,名字中会有 3 个元音; 只有 1 人 符合以上条件。 艾斯克作为逃犯, 难以潜入人群而不引人注意, 但她可以给海吉下达指令。 她有个程序员称为条件语句的工具, 使用形式是:“If A, then B”。 流程图可很好展现其工作原理, 这个条件语句可翻译为: 如果 A 真,则执行 B 指令。 条件语句也可描述不同的可能, 如这句:“如果 A 是真的, 则执行 B 指令; 否则,执行 C 指令。” 艾斯克给海吉下达什么指令, 才能让它找到抵抗领袖呢? [ 提示倒计时 3 ] [ 提示倒计时 2 ] [ 提示倒计时 1 ] 碰到类似问题, 先简化会帮助解答。 要是海吉必须先检查这个人呢? 他需要收集关于她的哪些信息? 他可能会问:“她眼睛是绿色吗?” 海吉要找到抵抗领袖, 还应该问其它什么问题? 以及如何追踪这些答案呢? [ 若想自行解题,可按暂停 ] [ 答案公布倒计时 3 ] [ 答案公布倒计时 2 ] [ 答案公布倒计时 1 ] 作为人类,你可能觉得 处理这个问题很直观, 但是,海吉不是人类, 因此,你面临的挑战是 需要给它系统化指令, 这些指令能处理任何情况。 海吉需挨个查看住在那里的人, 直到找到符合条件的人。 换句话说,就像解开牢房锁一样, 这是一个重复相同指令的循环。 只是这一次的循环指令 是一系列问题的条件语句形式, 一旦海吉找到目标, 会立即结束循环。 但是首先,你需要整理信息。 每个人都有一组特征: 眼睛和头发颜色、眼镜和名字。 这人的眼睛是绿色吗? 如果是,请在“眼睛颜色”旁打勾; 否则,请在此处标记 X 。 如果他们是红色头发, 名字里有两个连续字母相同吗? 如果是,请在“头发颜色”旁打勾; 否则,在“头发颜色”旁标 X 。 红头发但名字里没有双字母的人, 都不可能是抵抗运动领袖。 但是请注意,如果是蓝头发, 海吉将跳过此问题, 继续查看下一个人。 最后一个问题,我们可以这样问: “如果他们戴眼镜, 名字中有且仅有 2 个元音吗? 如果没戴眼镜, 名字是否有且仅有 3 个元音?” 人群中戴眼镜 和名字有 1 个元音的人, 或没戴眼镜 和名字有 2 个元音的人, 但他们不是我们的目标, 所以,把他们标记为 X 。 抵抗运动领袖一定是 每个问题旁打勾的人 或问题旁空白 并有待进一步检验的人。 空白是可能的, 因为如果某人是蓝头发, 那么就与红色头发的规则相左。 你可以让海吉询问每人所有问题, 然后仅选择打勾和空白的人。 但有一种方法可以节省大量时间: 一旦海吉对此人标 X 后, 立即让它转到下一个人。 你无需知道每个问题的答案, 一个 X 就说明他们不是目标。 海吉在人群中飞来飞去, 几分钟内就找到了 抵抗运动领袖阿迪拉, 并将她带回艾斯克处。 她愿意帮忙偷第一件物品—— 权力的节点—— 但有一个条件: 艾斯克和海吉要对镇压小镇的 炉膛机器人重新编程, 来发动这场革命。 话音刚落,炉膛机器人就到了。