5月30日のレポートについて XXXX語XX XXXX系 c106XXXX XXXXXXXX 1 A 二進法表示 0b 100101 を十六進法に変換します。まず 0b 0010 と 0b 0101 に分けその数字に対応する数字(アルファベット)を表より探し出しだします。 0b 0010 0b 0010 =0x 2 0b 0101 0b 0101 =0x 5 (表) 16進法 | 2進表 0 | 0 1 | 1 2 | 10 3 | 11 4 | 100 5 | 101 6 | 110 7 | 111 8 | 1000 9 | 1001 a | 1010 b | 1011 c | 1100 d | 1101 e | 1110 f | 1111 参考サイトURL 基礎プログラミング1(二進法、十六進法変換(2) http://roy/~madoka/2007/r1/04/04-12-binary2.html B 十進法 を 二進法 に変換後 十六進法 に変換したいと思います。まず 0d 1111 を2で割って行きます。その後に出た数字を上の表に照らし合わせて 十六進 法 に変換します。 0d 1111 0d 1111 1111 ÷ 2 = 555 余り 1 555 ÷ 2 = 277 余り 1 277 ÷ 2 = 138 余り 1 138 ÷ 2 = 69 余り 0 69 ÷ 2 = 34 余り 1 34 ÷ 2 = 17 余り 0 17 ÷ 2 = 8 余り 1 8 ÷ 2 = 4 余り 0 4 ÷ 2 = 2 余り 0 2 ÷ 2 = 1 余り 0 1 ÷ 2 = 0 余り 1 0d 1111 = 0b 10001010111 此を上の表に対応させていくと 0b 0100 =0x 4 ,0b 1010 = 0x a ,0b 0111 = 0x 7 ,以上の数字を合わせて 0b 10001010111 = 0x 4a7 となり、0d 1111 = 0x 4a7 と言うことになる。 10001010111 2 の 10乗× 1 = 1024 2 の 9乗× 0 = 0 2 の 8乗× 0 = 0 2 の 7乗× 0 = 0 2 の 6乗× 1 = 64 2 の 5乗× 0 = 0 2 の 4乗× 1 = 16 2 の 3乗× 0 = 0 2 の 2乗× 1 = 4 2 の 1乗× 1 = 2 2 の 0乗× 1 = 1 −−−−−−−−−−− 答え 1111 2 A answer1 #!/usr/koeki/bin/ruby while data06 = gets if /[uo]pa-ru/i =~data06 print data06 end end answer2 #!/usr/koeki/bin/ruby while data06 = gets if/[a-b]/i =~data06 print data06 end end answer3 #!/usr/koeki/bin/ruby while data06 = gets if/幸福|希望/i =~data06 print data06 end end 一行目 Rubyのプログラムである亊の宣言とそのプログラムを実行させる場所の宣言です 三行目 data06の中から調べる(data06のデータを取って来る) 四行目 ifはその後に条件が来ることでそれに該当するときと言う意味になる。 / /の中 は検索パターンを記している([□△]で□か△の文字(数字)の何方かに該当する モノを取って来る,[□ー△]で□から△までの文字(数字)このときは aからb 迄の文字 の含まれているものを探して表示させる, □|△ で□と△の文字(数字)が含まれ ているモノを持って来る 五行目 data06 の中のモノを表示させるように規定している 六行目 この end は四行目の if の終わりを示している 七行目 この end は三行目の while の終わりを示している 検索結果の考察 answer1 if /[uo]pa-ru/i =~data06 なので upa-ru か opa-ru を探すように指示しているのでオパールが検索される と思います。 answer2 if/[a-b]/i =~data06 a-b 迄のアルファベットを取って来るように指示しているのでガーネット,アメ ジスト,アクアマリン,ダイアモンド,エメラルド,ルビー,サファイア.オパール, トパーズ.ターコイスが a b どちらかのアルファベットを含んでいるので表示 されると思います。 answer3 if/幸福|希望/i =~data06 と、定義しているので幸福又は希望のとい言う単語が該当するエメラルド,ペリ ドット,オパール,トパーズが検索されると思います。 検索結果 answer1 十月 『オパール』(蛋白石) おぱーる opa-ru 心の歓喜・安楽・忍耐・悲哀を克服して幸福を得る 考察どうりで o か u のどちらかの pa-ru を探してきているので予想どうりで した。 answer2 一月 『ガーネット』(柘榴石) がーねっと ga-netto 貞操・真実・友愛・忠実 二月 『アメジスト』(紫水晶) あめじすと amezisuto 誠実・心の平和 三月 『アクアマリン』(藍玉) あくあまりん akuamarin 沈着・勇敢 四月 『ダイアモンド』(金剛石) だいあもんど daiamondo 清浄無垢 五月 『エメラルド』(翠玉/緑玉) えめらるど emerarudo 幸運・幸福 七月 『ルビー』(紅玉) るびー rubi- 情熱・仁愛・威厳 九月 『サファイア』(青玉) さふぁいあ safaia 慈愛・誠実・徳望 十月 『オパール』(蛋白石) おぱーる opa-ru 心の歓喜・安楽・忍耐・悲哀を克服して幸福を得る 十一月 『トパーズ』(黄玉) とぱーず topa-zu 友情・友愛・希望・潔白 十二月 『ターコイス』(トルコ石) たーこいす ta-koisu 成功を保証する a-b 迄のアルファベットを取って来るように指示してあるので六月と八月は a-b のアルファベットを含んでいないので検索されず考察どうりでした。 answer3 五月 『エメラルド』(翠玉/緑玉) えめらるど emerarudo 幸運・幸福 八月 『ペリドット』(橄欖石) ぺりどっと peridotto 夫婦の幸福・和合 十月 『オパール』(蛋白石) おぱーる opa-ru 心の歓喜・安楽・忍耐・悲哀を克服して幸福を得る 十一月 『トパーズ』(黄玉) とぱーず topa-zu 友情・友愛・希望・潔白 幸福又は希望を探して来るので考察どうりで考え違いは無いようです。 b answer_b1 while data06 = gets if/[uo]pa-ru/i =~ data06 if /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/ =~ data06 printf("%s %s \n" , $2 ,$5) end end end answer_b2 while data06 = gets if/[a-b]/i =~ data06 if /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/ =~ data06 printf("%s %s \n" , $2 ,$1) end end end answer_b3 while data06 = gets if//i =~ data06 if /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/ =~ data06 printf("%s %s \n" , $2 ,$3) end end end 一行目 data06から取って来るように規定している。此に対応する end は七行目のです。 二行目 if でもしを表していて「もし{検索パターン}に該当するモノがdata06あるか探 すよう」に規定してい」。因に i は大文字小文字の区別無くと言った意味があり ます。此の if に対応しているのは六行目の end です。 三行目 /(\S+)\s+ で data06 の中の文字列、空白のデータの中の文字列を取って来るよ うにしている。此の if に対応しているのは五行目の endです。 四行目 printf で ( " " )ないのモノを表示させる、そして %s は文字列を表していて $□ は三行目で取っている data06 の文字列を %s の中に当てはめるように指示 していれ $ の後の数字は data06 内での入力が早い順から順に数字を当てはめ ている。 考察 answer_b1 此処では $2 $5 の宝石の名前とその宝石の意味を切り抜いて来るようにしてい ます。 answer_b2 「$2 $1」 で、$2で宝石の名前 $1で何月かを表示させ、 $2 を先に表示させる ようにしました。 answer_b3 $2 $3 で、$3で宝石の読み方(ひらがな)を表示させるようにしました。 結果 answer_b1 『オパール』(蛋白石) 心の歓喜・安楽・忍耐・悲哀を克服して幸福を得る 宝石の名前と意味が見やすく表示されているので良かったです。 answer_b2 『ガーネット』(柘榴石) 一月 『アメジスト』(紫水晶) 二月 『アクアマリン』(藍玉) 三月 『ダイアモンド』(金剛石) 四月 『エメラルド』(翠玉/緑玉) 五月 『ルビー』(紅玉) 七月 『サファイア』(青玉) 九月 『オパール』(蛋白石) 十月 『トパーズ』(黄玉) 十一月 『ターコイス』(トルコ石) 十二月 $2 と $1 を反対にしてみましたが、問題なく表示されているようです。 answer_b3 『ガーネット』(柘榴石) がーねっと 『アメジスト』(紫水晶) あめじすと 『アクアマリン』(藍玉) あくあまりん 『ダイアモンド』(金剛石) だいあもんど 『エメラルド』(翠玉/緑玉) えめらるど 『ムーンストーン』(月長石) むーんすとーん 『ルビー』(紅玉) るびー 『ペリドット』(橄欖石) ぺりどっと 『サファイア』(青玉) さふぁいあ 『オパール』(蛋白石) おぱーる 『トパーズ』(黄玉) とぱーず 『ターコイス』(トルコ石) たーこいす 考察どうりで問題なく表示されているので良かったです。 3感想 1Bの問題があっているのか心配で確かめる為に2進法から10進法に直してみたり と時間をかけてみました、最初は16で割ればすぐに答えが出ると思っていたので すが出てきた答えがどうしても納得のいくもので無く何度か計算をし直していま した。そのお陰で2進法や10進法、16進法について理解が深まり良かったと思い ます。次回はもっと早く変換の問題が解けるようにしたいです。