ねずみの嫁入りという昔話がある。
ある庄屋のお蔵に、ねずみが暮していた。 ねずみはとうとう美しい娘ねずみを授かった。 年頃になったので、娘のために日本一の婿を探しに旅に出た。 日本一の婿はおてんとうさまだと考え、おてんとうさまに会いに行った。 おてんとうさまはおてんとうさまより偉いものがあるという。 おてんとうさまより偉いのは、おてんとうさまを隠す雲であるという。 そこで日本一の婿は雲だと考え、雲に会いに行った。 雲は雲より偉いものがあるという。 雲より偉いのは、雲を吹きはらう風であるという。 そこで日本一の婿は風だと考え、風に会いに行った。 風は風より偉いものがあるという。 風より偉いのは、風を遮るお蔵の壁であるという。 そこで日本一の婿はお蔵の壁だと考え、お蔵の壁に会いに行った。 お蔵の壁はお蔵の壁より偉いものがあるという。 お蔵の壁より偉いのは、お蔵の壁をかじるねずみであるという。 そこで日本一の婿はねずみだと考え、ねずみを婿とした。
"こぶた、たぬき、きつね、ねこ" のような key と value がぐるぐる回るパターンである。
{こぶた => たぬき, たぬき => きつね, きつね => ねこ}
それでは実際に key と value を比較していき、物語を進行させるように してみよう。mouse.rb
#!/usr/koeki/bin/ruby
mouse = {"おてんとうさま" => ["雲","隠して"],
"雲" => ["風","吹き飛ばして"],
"風" => ["お蔵の壁","さえぎって"],
"お蔵の壁" => ["ねずみ","かじって穴をあけて"]}
bridegroom = "おてんとうさま"
print("ある庄屋のお蔵に、ねずみが暮していた。\n")
print("ねずみは美しい娘ねずみを授かった。\n")
print("年頃になったので、娘のために日本一の婿を探しに旅に出た。\n")
printf("日本一の婿と見込んで%sに話をした。\n",bridegroom)
while true
if bridegroom == "ねずみ"
break
end
print("親ねずみ:「娘の婿になってほしいのだが」\n")
printf("%s: 「わたしより偉いのは%s。わたしを%sしまうから」\n",
bridegroom,mouse[bridegroom][0],mouse[bridegroom][1])
printf("そこで親ねずみは%sに会いに行った。\n",mouse[bridegroom][0])
bridegroom = mouse[bridegroom][0]
end
printf("親ねずみは%sを婿とした。\n",bridegroom)
value の値を key に代入し、ある key になったところで止まる。
本日の講義 / 基礎プログラミング II / 2007 年度
Madoka Nishimura <madoka@e.koeki-u.ac.jp>