[ 像程序员一样思考 ]
[ 地点：监狱、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 就说明他们不是目标。
海吉在人群中飞来飞去，
几分钟内就找到了 抵抗运动领袖阿迪拉，
并将她带回艾斯克处。
她愿意帮忙偷第一件物品—— 权力的节点——
但有一个条件：
艾斯克和海吉要对镇压小镇的 炉膛机器人重新编程，
来发动这场革命。
话音刚落，炉膛机器人就到了。