第 3 回 情報の構造を分析しよう レポート課題 氏名:樋口貴士 学籍番号:C1101715 語学クラス:中国語3 コース(系):地域共創コース 1.筆記問題 A.higuchi takashiをASCIIコードで表示すると h = 0x68 i = 0x69 g = 0x67 u = 0x75 c = 0x63 h = 0x68 i = 0x69 t = 0x74 a = 0x61 k = 0x6b a = 0x61 s = 0x73 h = 0x68 i = 0x69 となる。 B.にわとりをかう にわとり を かう (にわとりを買う) にわとり を かう (にわとりを飼う) にわ とり を かう (二羽鳥を買う) にわ とり を かう (二羽鳥を飼う) C.アニメ、ワンピースの特徴を hash 配列 one piece とした。 one piece の key と value はそれぞれ名前とその役職、懸賞金額、出身地にとした。 1: key 「モンキーD・ルフィ」に対して valueは「"船長", "400000000", "フーシャ村"」 2: key 「ロロノア・ゾロ」に対して valueは「"剣士", "120000000", "シモツキ村"」 3: key 「ナミ」に対して valueは「"航海士", "16000000", "ココヤシ村"」 4: key 「ウソップ」に対して valueは「"狙撃手", "30000000", "シロップ村"」 5: key 「サンジ」に対して valueは「"コック", "77000000", "北の海"」 ◯これらを hash 配列で表記する方法が one piece["モンキーD・ルフィ"] = "船長", "400000000", フーシャ村"" one piece["ロロノア・ゾロ"] = "剣士", "120000000", "シモツキ村" one piece["ナミ"] = "航海士", "16000000", "ココヤシ村" one piece["ウソップ"] = "狙撃手", "30000000", "シロップ村" one piece["サンジ"] = "コック", "77000000", "北の海" となる。 ◯もうひとつの表記の方法が {"モンキーD・ルフィ" => "船長", "400000000", "フーシャ村" {"ロロノア・ゾロ" => "剣士", "120000000", "シモツキ村" {"ナミ" => "航海士", "16000000", "ココヤシ村" {"ウソップ" => "狙撃手", "30000000", "シロップ村" {"サンジ" => "コック", "77000000", "北の海" となる。 2.プログラム問題 Bの問題を作成した。 a 考えた設定 プログラムにある対のデータを表示させて 懸賞金額の高い順に並び替えるプログラム hash_ary_sort.rb を作成した。 b 作成したプログラム #!/usr/koeki/bin/ruby $KCODE = 'e' # 文字コードを設定する。 onepiece = Hash.new # Hash配列をonepieceと設定する。 onepiece["モンキーD・ルフィ"] = "船長",400000000,"フーシャ村" onepiece["ロロノア・ゾロ"] = "剣士",120000000,"シモツキ村" onepiece["ナミ"] = "航海士",16000000,"ココヤシ村" onepiece["ウソップ"] = "狙撃手",30000000,"シロップ村" onepiece["サンジ"] = "コック",77000000,"北の海" for yaku , beree in onepiece # Hash を全て表示させる。 printf("「%s」は『%s』です。 懸賞金額が%d ベリーで出身地は %s です。\n\n",yaku,beree[0],beree[1],beree[2]) end print("★懸賞金額が多い順に並び変えます★\n\n") onepiece.keys.sort{|a,b| # 変数とabを使い並び替えに使用する部分を表す。 onepiece[b][1]<=> onepiece[a][1]}.each{|beree| #<=>は並び替え演算子である。 printf("『%s』の懸賞金額は %d ベリーです。\n",beree,onepiece[beree][1])} c 変更点 今回の筆記問題Cで、作成した Hash を利用して 西村まどか先生のWebの並び替えのページをみて変更させた。 d プログラムの実行結果 pan{c110171}% ./hash_ary_sort.rb [~/Ruby] 「ウソップ」は『狙撃手』です。 懸賞金額が30000000 ベリーで出身地は シロップ村 です。 「ナミ」は『航海士』です。 懸賞金額が16000000 ベリーで出身地は ココヤシ村 です。 「ロロノア・ゾロ」は『剣士』です。 懸賞金額が120000000 ベリーで出身地は シモツキ村 です。 「サンジ」は『コック』です。 懸賞金額が77000000 ベリーで出身地は 北の海 です。 「モンキーD・ルフィ」は『船長』です。 懸賞金額が400000000 ベリーで出身地は フーシャ村 です。 ★懸賞金額が多い順に並び変えます★ 『モンキーD・ルフィ』の懸賞金額は 400000000 ベリーです。 『ロロノア・ゾロ』の懸賞金額は 120000000 ベリーです。 『サンジ』の懸賞金額は 77000000 ベリーです。 『ウソップ』の懸賞金額は 30000000 ベリーです。 『ナミ』の懸賞金額は 16000000 ベリーです。 3.考察 プログラムに登録している対が表示していて 懸賞金額が多い順に並び変えてあるので このプログラムは正しく動作してるといえる。 4.感想 前回に比べHashの使い方が少しずつ理解することが出来た。 並び替えをしても、ちょっとしたミスで思うようにできなかったり、 表示されなかったりして大変だったが、間違いをすることでよりわかったと思う。 また、プログラムの23行目のaとbを逆にすることで、懸賞金額が低い順にも並び 替えれることがわかって良かった。 ◎何度も繰り返す昔話 おばあさん、おじいさんが笠をつくる → おじいさんが笠を売りにいく おじいさんが笠を売りにいく → 笠が売れのこった 笠が売れのこった → おじいさんが家に帰る おじいさんが家に帰る → 地蔵にであう 地蔵にであう → 地蔵の雪をはらい、笠を頭にかぶせる 地蔵の雪をはらい、笠を頭にかぶせる → 家に帰るとなにやら物音がする 家に帰るとなにやら物音がする → 地蔵が家にきて食料や金をもってくる 地蔵が家にきて食料や金をもってくる → ハッピーエンド 5.参考文献 第2回 なになにといえばこれこれ http://roy/~madoka/2011/r2/02/ 第3回 情報の構造を分析しよう http://roy/~madoka/2011/r2/03/ 作者:西村まどか ONE PIECE wikipediaより http://ja.wikipedia.org/wiki/ONE_PIECE