第 3 回 情報の構造を分析しよう レポート課題 氏名:照井さつき 学籍番号:C1101589 語学クラス:中国語3 コース(系):政策マネジメント ======== 1A.Terui Satsuki 16進数 T:0x54 e:0x65 r:0x72 u:0x75 i:0x69 S:0x53 a:0x61 t:0x74 s:0x73 u:0x75 k:0x6b i:ox69 10進数 T:0d84 e:0d101 r:0d114 u:0d117 i:0d105 S:0d83 a:0d97 t:0d116 s:0d115 u:0d117 k:0d107 i:0d105 -------- 1B.はかない はかな い(儚い) は かない(掃かない) はか ない(墓無い) かんどうする かん どうする(缶どうする) かんどう する(感動する) かんどう する(勘当する) だいぶつかった だいぶ つかった(だいぶ使った) だいぶつ かった(大仏買った) だいぶ つかった(大分漬かった) --------- 1C.四字熟語を Hash 配列 yoji とした。 yoji の key と value は、それぞれ key:前二文字 value:後二文字、読み方、意味 とした。 その1、key「歳月」に対して、value「不待,さいげつふたい, 今の時を大切にし日々怠けることなく努力せよという戒め」 その2、key「明朗」に対して、value「快活,めいろうかいかつ, 明るくほがらかで、はきはきとして元気がよいこと」 その3、key「馬鹿」に対して、value「正直,ばかしょうじき,愚直であること」 その4、key「急転」に対して、value「直下,きゅうてんちょっか, 事態・情勢が急に変わって物事の解決、決着がつく」 その5、key「永遠」に対して、value「無窮,えいえんむきゅう, いつまでも続いて、極まりがないこと」 これに対する Hash の表し方は yoji["歳月"]="不待","さいげつふたい","今の時を大切にし日々怠けることなく努力せよという戒め" yoji["明朗"]="快活","めいろうかいかつ","明るくほがらかで、はきはきとして元気がよいこと" yoji["馬鹿"]="正直","ばかしょうじき","愚直であること" yoji["急転"]="直下","きゅうてんちょっか","事態・情勢が急に変わって物事の解決、決着がつく" yoji["永遠"]="無窮","えいえんむきゅう",いつまでも続いて、極まりがないこと"" また、もう一つの表し方は {"歳月" =>"不待","さいげつふたい","今の時を大切にし日々怠けることなく努力せよという戒め" "明朗" =>"快活","めいろうかいかつ","明るくほがらかで、はきはきとして元気がよいこと" "馬鹿" =>"正直","ばかしょうじき","愚直であること" "急転" =>"直下","きゅうてんちょっか","事態・情勢が急に変わって物事の解決、決着がつく" "永遠" =>"無窮","えいえんむきゅう","いつまでも続いて、極まりがないこと"} ============== 2B. a.設定------- 予め登録してある対を全表示し、その下に五十音順に並び替えたものを 表示させるプログラム。 b.作成したプログラム-------- #!/usr/koeki/bin/ruby $KCODE = 'e' #EUCに文字コードを指定、文字化け予防 yoji = Hash.new #Hash配列をyojiとする。 yoji["歳月"]="不待","さいげつふたい","今の時を大切にし日々怠けることなく努力せよという戒め","3" yoji["明朗"]="快活","めいろうかいかつ","明るくほがらかで、はきはきとして元気がよいこと","5" yoji["馬鹿"]="正直","ばかしょうじき","愚直であること","4" yoji["急転"]="直下","きゅうてんちょっか","事態・情勢が急に変わって物事の解決、決着がつくこと","2" yoji["永遠"]="無窮","えいえんむきゅう","いつまでも続いて、極まりがないこと","1" # [] 内がkey内容、"" 内がvalue内容となっており、コンマ毎に区切られている。 #「=」で対応を意味している。 #p yoji for mae,ato in yoji #hash内容(yoji)の key を mae、value を ato に代入している。 printf("\n %s %s (%s)、\n 意味:%s\n",mae,ato[0],ato[1],ato[2]) #maeにkey内容、yoji[0]に後二文字、yoji[1]に読み仮名、yoji[2]に意味を #それぞれ代入させて表示。「,」で区切られている順に番号が振られている。 #%sは文字表示を指定している。 end print("\n") #hash内の最後の行の後に空白一行 print(" -----五十音順-----\n") print("\n") #空白行 yoji.keys.sort{|mae,ato| yoji[mae][3]<=>yoji[ato][3] #[]の部分を入れ替え。 #上の部分と表記順が同じであるため(mae,ato)、昇順になっている。 } .each{|retail| printf(" %s : %s%s\n 意味 : %s\n",yoji[retail][1],retail,yoji[retail][0],yoji[retail][2]) #入れ替えた後の各々を代入して表示。 print("\n") #各々のhashの後に空白行 } c.元にしたプログラム----------- hash_choice.rb を元に、上記の 1c で value 内容を増やし、 並び替えのためにvalue内に数字を増やした。 d.実行結果--------- pan{c110158}% ./hash_ary_sort.rb [~/Ruby] 明朗 快活 (めいろうかいかつ)、 意味:明るくほがらかで、はきはきとして元気がよいこと 歳月 不待 (さいげつふたい)、 意味:今の時を大切にし日々怠けることなく努力せよという戒め 急転 直下 (きゅうてんちょっか)、 意味:事態・情勢が急に変わって物事の解決、決着がつくこと 永遠 無窮 (えいえんむきゅう)、 意味:いつまでも続いて、極まりがないこと 馬鹿 正直 (ばかしょうじき)、 意味:愚直であること -----五十音順----- えいえんむきゅう : 永遠無窮 意味 : いつまでも続いて、極まりがないこと きゅうてんちょっか : 急転直下 意味 : 事態・情勢が急に変わって物事の解決、決着がつくこと さいげつふたい : 歳月不待 意味 : 今の時を大切にし日々怠けることなく努力せよという戒め ばかしょうじき : 馬鹿正直 意味 : 愚直であること めいろうかいかつ : 明朗快活 意味 : 明るくほがらかで、はきはきとして元気がよいこと e,結果の考察--------- 実行してみると、プログラムどおりに昇順に並び替えることが出来た。 ============= 3.感想 何度も繰り返す文章で進む物語は、大きなカブが挙げられる。 畑に大きなカブができる → 抜こうとする お爺さんが抜こうとする → 抜けない お婆さんも手伝う → 抜けない 孫娘も手伝う → 抜けない 犬も手伝う → 抜けない ネコも手伝う → 抜けない ネズミも手伝う → ようやく抜ける ----- 今回は対で表す部分までは簡単に出来たが、並び替えの部分では手間取ってし まった。特に入れ替えの部分についての理解がまだ不充分だと感じたので、 よく復習するようにしたい。 ============= 参考文献 *基礎プログラミング II 第 2 回 (なになにといえばこれこれ) 「要素の一部分を使って入れ替えをするには」 西村まどか http://roy/~madoka/2011/r2/02/r2_02_15_theme_14_sorthasharraycomp.html *基礎プログラミング II ハッシュ[2] 神田直弥 http://roy/~naoya/rubyII/4.html *基礎プログラミング I 第9回 16進数・ASCIIコード http://roy/~naoya/ruby/9.html 神田直弥 *四字熟語データバンク http://www.sanabo.com/words/ *ぎなた読み-wikipedia http://ja.wikipedia.org/wiki/%E3%81%8E%E3%81%AA%E3%81%9F%E8%AA%AD%E3%81%BF *おおきなかぶ-wikipedia http://ja.wikipedia.org/wiki/%E3%81%8A%E3%81%8A%E3%81%8D%E3%81%AA%E3%81%8B%E3%81%B6