第 3 回 情報の構造を分析しよう レポート課題 氏名:森桂太 学籍番号:c110190 語学クラス:中国語 コース(系):社会福士コース 1.筆記問題 A.自分の名前を alphabet 表示で書き下し、その ASCII コードを調べる。 森桂太 = morikeita m 6d o 6f r 72 i 69 k 6b e 65 i 69 t 74 a 61 B.自分で創作した文章、あるいは複数の意味をあてることができる文章を調べ、 ひらがなで書き下したあと、わかち書きする。 きょう せんとう にいく(今日銭湯に行く) きょう せんとう にいく(今日先頭に行く) きょう せんとう にいく(今日戦闘に行く) C.5 つの対を考える。その対について、適切な hash 配列名を与え、 value を 3 成分以上の配列とする。 2 種類の記法があるので両方とも記す。 $KCODE = 'e' animal = Hash.new key = "シマウマ" value1 = 200 value2 = 180 value3 = "アフリカ草原" animal[key] = value1,value2,value3 animal = {key=>[value1,value2,value3]} 2. 作成したプログラム B. ある値について並べ替えるプログラムへ変更する #!/usr/koeki/bin/ruby $KCODE = 'e' n = 0 rich = {[0,"貧乏な男は転んだ"]=>[1,"わらをつかんだ"], [1,"わらをつかんだ"]=>[2,"アブが飛んできた"], [2,"アブが飛んできた"]=>[3,"わらにくくりつけた"], [3,"わらにくくりつけた"]=>[4,"おもちゃになった"], [4,"おもちゃになった"]=>[5,"赤ん坊が欲しがった"], [5,"赤ん坊が欲しがった"]=>[6,"赤ん坊はおもちゃを得た"], [6,"赤ん坊はおもちゃを得た"]=>[7,"赤ん坊は泣きやんだ"], [7,"赤ん坊は泣きやんだ"]=>[8,"みかんをもらった"], [8,"みかんをもらった"]=>[9,"喉の喝いた旅人が欲しがった"], [9,"喉の喝いた旅人が欲しがった"]=>[10,"みかんをあげた"], [10,"みかんをあげた"]=>[11,"喉の喝いた旅人は喉をうるおした"], [11,"喉の喝いた旅人は喉をうるおした"]=>[12,"反物をもらった"], [12,"反物をもらった"]=>[13,"侍が倒れた馬と反物を交換したがった"], [13,"侍が倒れた馬と反物を交換したがった"]=>[14,"反物と倒れた馬を交換した"], [14,"反物と倒れた馬を交換した"]=>[15,"倒れた馬を得た"], [15,"倒れた馬を得た"]=>[16,"馬を休ませた"], [16,"馬を休ませた"]=>[17,"馬は元気になった"], [17,"馬は元気になった"]=>[18,"馬を欲しがる庄屋がいた"], [18,"馬を欲しがる庄屋がいた"]=>[19,"馬を庄屋にあげた"], [19,"馬を庄屋にあげた"]=>[20,"庄屋は旅に出た"], [20,"庄屋は旅に出た"]=>[21,"屋敷の留守を頼まれた"], [21,"屋敷の留守を頼まれた"]=>[22,"庄屋は戻って来なかった"], [22,"庄屋は戻って来なかった"]=>[23,"庄屋になった"]} while true if n >= 23 printf"%s\n",rich.values.sort![n-1][1] break end printf"%sそして\n",rich.keys.sort![n][1] n += 1 end 3.プログラム説明 rich = {[ ]} のなかに情報を書きこんでおく。その情報を結論まで書き、for premise in rich.keys if rich.value?(premise) == false printf("%s。そし て",premise) end end とすると、書きこんだ情報が順序ばらばらで表示される ため、各情報に番号を与え、[n][1] の配列で話が繋がるように並べ替えを指定。 4. もとにしたプログラムからの変更点 授業で扱ったわらしべ長者のプログラムを元に、ストーリーが順序良く話が繋が るように並べ替えを [][] 配列を用いて表示させるプログラムを追加。 5. プログラムを実行した結果画面 貧乏な男は転んだそして わらをつかんだそして アブが飛んできたそして わらにくくりつけたそして おもちゃになったそして 赤ん坊が欲しがったそして 赤ん坊はおもちゃを得たそして 赤ん坊は泣きやんだそして みかんをもらったそして 喉の喝いた旅人が欲しがったそして みかんをあげたそして 喉の喝いた旅人は喉をうるおしたそして 反物をもらったそして 侍が倒れた馬と反物を交換したがったそして 反物と倒れた馬を交換したそして 倒れた馬を得たそして 馬を休ませたそして 馬は元気になったそして 馬を欲しがる庄屋がいたそして 馬を庄屋にあげたそして 庄屋は旅に出たそして 屋敷の留守を頼まれたそして 庄屋は戻って来なかったそして 庄屋になった 5. 導き出された結果の考察 物語が順序良く進み、〜が〜した、そして〜 と表示されるようになった。しか し、このプログラムは時間が掛かる上に、一つでも要所が抜けるとエラーを起こ してしまった。 6. 参考文献 西村先生講義ページ http://roy/~madoka/2011/prog/hash_strawrich.rb 神田先生講義ページ http://roy/~naoya/ruby/9.html http://roy/~naoya/ruby/6.html