第3回 基礎プログラミング II レポート課題 氏名:宮川史礼 学籍番号:C1071948 語学クラス:英語1 コース(系):社会系 1.筆記問題 A. .自分の名前みやがわふみのりを16進法表示で表す ASCIIコード表と照らし合わせると以下のようになる M = 0x4d i = 0x69 y = 0x79 a = 0x61 g = 0x67 a = 0x61 w = 0x77 a = 0x61 F = 0x46 u = 0x75 m = 0x6d i = 0x69 n = 0x6e r = 0x6f i = 0x69 B. ここではきものをぬいでください ここでは きものを ぬいでください (ここでは着物をぬいでください) ここで はきもの ぬいでください (ここで履き物をぬいでください) C. 作家の名前と主著を hash 配列 meisaku としました。 meisakuの key と value はそれぞれ作者名とその代表作をとりました。 その 1: key 「谷崎潤一郎」に対して value は「細雪」「卍」「春琴抄」 その 2: key 「川端康成」に対して value は「雪国」「古都」「眠れる美女」 その 3: key 「井伏鱒二」に対して value は「山椒魚」「ジョン萬次郎漂流記」 「黒い雨」 その 4: key 「三島由紀夫」に対して value は「美徳のよろめき」「近代能樂集」 「サド候爵夫人」 その 5: key 「安部公房」に対して value は「砂の女」「燃えつきた地図」 「他人の顏」 これに対するHash の表し方は meisaku["谷崎潤一郎"] = "細雪","卍","春琴抄" meisaku["川端康成"] = "雪国","古都","眠れる美女" meisaku["井伏鱒二"] = "山椒魚","ジョン萬次郎漂流記","黒い雨" meisaku["三島由紀夫"] = "美徳のよろめき","近代能樂集","サド候爵夫人" meisaku["安部公房"] = "砂の女","燃えつきた地図","他人の顏" また、もう一つの表し方は {"谷崎潤一郎" => ["細雪","卍","春琴抄"], "川端康成" => ["雪国""古都","眠れる美女"] "井伏鱒二" => ["山椒魚","ジョン萬次郎漂流記","黒い雨"] "三島由紀夫" =>["美徳のよろめき","近代能樂集","サド候爵夫人"] "安部公房" => ["砂の女","燃えつきた地図","他人の顏"] } 2.プログラム問題 五つの問題があるうちA、B、Dの三問を、今回は選択しました。 A.プログラミング内容 #!/usr/koeki/bin/ruby $KCODE = 'e' # このプログラムの漢字コードは EUC である meisaku = Hash.new meisaku["谷崎潤一郎"] = "細雪","卍","春琴抄" meisaku["川端康成"] = "雪国","古都","眠れる美女" meisaku["井伏鱒二"] = "山椒魚","ジョン萬次郎漂流記","黒い雨" meisaku["三島由紀夫"] = "美徳のよろめき","近代能樂集","サド候爵夫人" meisaku["安部公房"] = "砂の女","燃えつきた地図","他人の顏" print("\n−文豪代表作シリーズ−\n") for name, title in meisaku printf("「%s」\n",name) printf("1位 %s\t2位 %s\t3位 %s\n\n",title[0],title[1],title[2]) end 実行結果 pan{c107194}% ./hash_ary_print.rb [~/Ruby] −文豪代表作シリーズ− 「三島由紀夫」 1位 美徳のよろめき 2位 近代能樂集 3位 サド候爵夫人 「安部公房」 1位 砂の女 2位 燃えつきた地図 3位 他人の顏 「谷崎潤一郎」 1位 細雪 2位 卍 3位 春琴抄 「川端康成」 1位 雪国 2位 古都 3位 眠れる美女 「井伏鱒二」 1位 山椒魚 2位 ジョン萬次郎漂流記 3位 黒い雨 B.プログラミング内容 #!/usr/koeki/bin/ruby $KCODE = 'e' # このプログラムの漢字コードは EUC である meisaku = Hash.new meisaku["谷崎潤一郎"] = "細雪","卍","春琴抄",4 meisaku["川端康成"] = "雪国","古都","眠れる美女",9 meisaku["井伏鱒二"] = "山椒魚","ジョン萬次郎漂流記","黒い雨",5 meisaku["三島由紀夫"] = "美徳のよろめき","近代能樂集","サド候爵夫人",6 meisaku["安部公房"] = "砂の女","燃えつきた地図","他人の顏",6 print("\n−文豪代表作シリーズ−\n") for name, title in meisaku printf("「%s」\n",name) printf("1位 %s\t2位 %s\t3位 %s\n\n",title[0],title[1],title[2]) end print("---------------------------------------------\n") print("受賞の多い作家順\n") meisaku.keys.sort{|many,few| meisaku[few][3] <=>meisaku[many][3] }.each{|hyouji| printf("「%s」\n", hyouji) printf("1位 %s\t2位 %s\t3位 %s\n\n",meisaku[hyouji][0],meisaku[hyouji][1],meisaku[hyouji][2]) } 実行結果 pan{c107194}% ./hash_ary_sort.rb [~/Ruby] −文豪代表作シリーズ− 「三島由紀夫」 1位 美徳のよろめき 2位 近代能樂集 3位 サド候爵夫人 「安部公房」 1位 砂の女 2位 燃えつきた地図 3位 他人の顏 「谷崎潤一郎」 1位 細雪 2位 卍 3位 春琴抄 「川端康成」 1位 雪国 2位 古都 3位 眠れる美女 「井伏鱒二」 1位 山椒魚 2位 ジョン萬次郎漂流記 3位 黒い雨 --------------------------------------------- 受賞の多い作家順 「川端康成」 1位 雪国 2位 古都 3位 眠れる美女 「安部公房」 1位 砂の女 2位 燃えつきた地図 3位 他人の顏 「三島由紀夫」 1位 美徳のよろめき 2位 近代能樂集 3位 サド候爵夫人 「井伏鱒二」 1位 山椒魚 2位 ジョン萬次郎漂流記 3位 黒い雨 「谷崎潤一郎」 1位 細雪 2位 卍 3位 春琴抄 D.プログラミング内容 #!/usr/koeki/bin/ruby $KCODE = 'e' # このプログラムの漢字コードは EUC である meisaku = Hash.new open("hash_ary_data.dat","r") do |bungaku| while sakuhin = bungaku.gets if /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\d+)/ =~ sakuhin meisaku[$1] = [$2,$3,$4,$5.to_i] end end end print("\n−文豪代表作シリーズ−\n") for name, title in meisaku printf("「%s」\n",name) printf("1位 %s\t2位 %s\t3位 %s\n\n",title[0],title[1],title[2]) end print("---------------------------------------------\n") print("受賞の多い作家順\n") meisaku.keys.sort{|many,few| meisaku[few][3] <=>meisaku[many][3] }.each{|hyouji| printf("「%s」\n", hyouji) printf("1位 %s\t2位 %s\t3位 %s\n\n",meisaku[hyouji][0],meisaku[hyouji][1],meisaku[hyouji][2]) } データ 谷崎潤一郎 細雪 卍 春琴抄 4 川端康成 雪国 古都 眠れる美女 9 井伏鱒二 山椒魚 ジョン萬次郎漂流記 黒い雨 5 三島由紀夫 美徳のよろめき 近代能樂集 サド候爵夫人 6 安部公房 砂の女 燃えつきた地図 他人の顏 6 実行結果 pan{c107194}% ./hash_ary_read.rb [~/Ruby] −文豪代表作シリーズ− 「三島由紀夫」 1位 美徳のよろめき 2位 近代能樂集 3位 サド候爵夫人 「安部公房」 1位 砂の女 2位 燃えつきた地図 3位 他人の顏 「谷崎潤一郎」 1位 細雪 2位 卍 3位 春琴抄 「川端康成」 1位 雪国 2位 古都 3位 眠れる美女 「井伏鱒二」 1位 山椒魚 2位 ジョン萬次郎漂流記 3位 黒い雨 --------------------------------------------- 受賞の多い作家順 「川端康成」 1位 雪国 2位 古都 3位 眠れる美女 「安部公房」 1位 砂の女 2位 燃えつきた地図 3位 他人の顏 「三島由紀夫」 1位 美徳のよろめき 2位 近代能樂集 3位 サド候爵夫人 「井伏鱒二」 1位 山椒魚 2位 ジョン萬次郎漂流記 3位 黒い雨 「谷崎潤一郎」 1位 細雪 2位 卍 3位 春琴抄 3.感想 むかしむかしあるところに住んでいたおじいさんは山へ芝刈りにいきました。 おなじくおばあさんは川へ洗濯をしにいきました。おばあさんが洗濯をしている と大きな桃が流れて来ました。おばあさんはそれを持って帰りました。おじいさん も帰って来てから二人はその桃を二つに割りました。すると中には赤ん坊がいま した。赤ん坊は桃から産まれたので桃太郎と名付けられました。桃太郎はす くすくと成長していきました。或る日桃太郎は鬼ヶ島の鬼たちをを退治に行くこ とにしました。おばあさんはきび団子を桃太郎に与えました。そして桃太郎は旅 に出ました。鬼ヶ島へ行く途中で桃太郎は犬に出会いました。犬は桃太郎のきび 団子をほしがりました。桃太郎はきび団子をあげるかわりに仲間になるよう言い ました。こうして犬は桃太郎の仲間になりました。鬼ヶ島へ行く途中で桃太郎と犬は 猿に出会いました。猿は桃太郎のきび団子をほしがりました。桃太郎はきび団子を あげるかわりに仲間になるよう言いました。こうして猿は桃太郎の仲間になりました。 鬼ヶ島へ行く途中で桃太郎と犬と猿はきじに出会いました。きじは桃太郎のきび団子を ほしがりました。桃太郎はきび団子をあげるかわりに仲間になるよう言いました。 こうしてきじは桃太郎の仲間になりました。桃太郎たちはようやく鬼ヶ島につき ました。桃太郎たちは鬼たちをこらしめました。桃太郎たちは鬼をこらしめてお じいさんとおばあさんのもとへ帰りました。 4.参考文献 基礎プログラミング II 第2回 なになにといえばこれこれ 「要素の一部分を使って入れ替えをするには」 http://roy/~madoka/2010/r2/02/02_15_theme_14_sorthasharraycomp.html 協力してくれたTA 工藤智也