エシックを牢屋から 脱出させたヘッジは
彼女を連れて 辺境の居住区に飛んでいきます
国を取り囲む防壁である ブラッドバリアの影にある区画です
住人はまもなく 月に１度の配給に集まってきます
人々は毎日 美術や文学の作品を
国じゅうから 集めて回っています
配給の日には かまどロボットが ひどく空腹で現れます
ロボットが十分食べれば ランプはついたままで 食料が届きます
ロボットのお腹が満たされなければ 人々も食べられないのです
２人が居住区のはずれに着くと同時に ヘッジの燃料がなくなり
ヘッジとエシックは不時着します
幸い みんな配給の日の準備で 忙しくて気づきません
エシックは配給の場で 地下抵抗運動のリーダーを
見つけることができるはずです
その人こそが １つめの 強力なアイテムのありかを知っています
問題は ヘッジもエシックも
抵抗運動のリーダーの名前や 見た目を知らないことです
でも ヘッジの集めた情報から 分かっていることがあります
①リーダーの目は緑色であること
②リーダーが赤毛ならば 名前の中に同じ文字の連続があること
③リーダーがめがねをかけているなら 名前にある母音は２つ
かけていないなら 名前にある母音は３つということです
これらがすべて当てはまる人は 一人しかいません
エシックは逃亡者の身ですから
人ごみに出ていけば 注目を集めてしまうでしょう
でも ヘッジに指示を 与えることはできます
エシックが使えるツールは プログラマーが「条件文」と呼ぶものです
条件文とは「ＡならばＢ」 という形の文のことです
流れ図で説明しましょう
この条件文の意味は 「Ａが真ならばＢを実行せよ」です
他の場合についても指示する 条件文もあります
「Ａが真ならばＢを実行せよ
そうでなければＣを実行せよ」 というものです
では どんな指示をヘッジに与えれば 抵抗運動のリーダーを見つけられるでしょう？
［ビデオをいったん止めて 自分で考えてみましょう］
このような問題では まず簡単な場合を考えてみましょう
ヘッジが調べる相手が この人一人だけだったら
どんな情報を集めればいいでしょうか？
「彼女の目は緑色か」 と問うのはいいとして
他にどんな質問をすれば 抵抗運動のリーダーかどうか分かるでしょう？
そして得た答えを どう使えばいいでしょう？
［ビデオをいったん止めて 自分で考えてみましょう］
人間であれば どう進めればいいか 直感的にわかるかもしれませんが
ヘッジは人間ではないので
ここで難しいのは どんな場合であっても上手くいくような
網羅的な指示を 与えなければならないことです
ヘッジは探している人に たどり着くまで
住人を一人ずつ 調べていきます
つまり 牢屋の錠前の時と同様に
同じ指示をくり返す ループが使えます
ただし今回のループには 条件文の形をした質問が必要で
また 対象が見つかり次第 終了した方がよいでしょう
でも まずは情報を整理しましょう
どの人にも一連の特徴があります 目の色、髪の色、めがね、名前です
この人の目は緑色か？
そうならば 「目の色」に ✓ を そうでなければ × をつけます
赤毛ならば 名前の中で 同じ文字が２つ続いているか？
そうであれば 「髪の色」に ✓ をつけ
同じ文字が連続していなければ 「髪の色」に × をつけます
赤毛で同じ文字が連続していない人は リーダーではありません
でも髪が青ければ
ヘッジは 名前の質問をとばして 次に進みます
最後の質問では
「めがねをかけているなら 名前の中の母音は２つか？
めがねをかけていないなら 名前の中の 母音は３つか？」と聞けばいいでしょう
めがねをかけていて 母音１つの人や
めがねをかけてない 母音２つの人もいるでしょうが
そういう人たちは探している 相手ではないので × です
抵抗運動のリーダーは
それぞれの質問の結果が ✓ か空欄のはずです
空欄があっても大丈夫なのは 例えば 髪が青かった場合
赤毛についてのルールは 当てはまらないからです
ヘッジには すべての人に 全部の質問をさせてから
✓ と空欄だけの人を 選ばせてもいいですが
時間を節約するには × がついたらすぐに
次の人に移らせるといいでしょう
すべての質問の答えを 知る必要はありません
× が１つでもついたら 探している相手ではないのですから
ヘッジは人ごみを動き回って
数分のうちに抵抗運動のリーダー アディーラ (Adila) を見つけて
エシックのもとに連れてきます
アディーラは １つめのアイテム 「力の石」を盗む手助けをしてもいいが
ひとつ条件があると言います
革命を起こすため
街を脅かす かまどロボットの プログラムを書き換えてほしいというのです
まさにその時 ロボットの群れが降り立ちました