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