5 月 30 日のレポートについて 語学クラス:XXXX語XX 系: XXXX系 学籍番号:c106XXXX 氏名:XXXXXXXX 1、A、0b100101=0x??? [1]0b100101を10進数に直す (1×2の5乗)+(0×2の4乗)+(0×2の3乗)+(1×2の2乗)+(0×2の1乗)+(1×2の0 乗)=32+0+0+4+0+1 =37 よって、0d37となる [2]0d37を16進数に変える 37/16=2余り5 2/16=0余り2 余りを16進数に当てはまるように変える 5→5 2→2 これを下から読んで行くと、 25となる よって、0x25となる。 したがって、 0b100101=0x25である。 B、0d1111=0x??? 1111/16=69余り7 69/16=4余り5 4/16=0余り4 余りを16進数に当てはまるように変える 7→7 5→5 4→4 これをしたから読んで行くと、 457となる よって、0x457となる。 したがって、 0d1111=0x457である 手計算による確かめ A [1] (1×2の5乗)+(0×2の4乗)+(0×2の3乗)+(1×2の2乗)+(0×2の1乗)+(1×2の0 乗)=32+0+0+4+0+1 =37 [2] 37/16=2余り5 2/16=0余り2 以上二つを計算してみたところ、問題の答えと同じ結果になったためこれら の答えは正しいことが証明された。 B 1111/16=69余り7 69/16=4余り5 4/16=0余り4 と計算してみたところ、問題の答えと同じ結果になったため、この答えは正 しいことが証明された。 2、 [1]作成したデータの内容の説明 私の好きな小説または漫画本の登場人物達の名前 [2]データファイルの張りつけ 杏本詩歌 ムシウタ あんもと しいか Anmoto Shiika 薬屋大助 ムシウタ くすりや だいすけ Kusuriya Daisuke 立花利菜 ムシウタ たちばな りな Tachibana Rina 紅秀麗 彩雲国物語 こう しゅうれい Koh Shuurei 紫劉輝 彩雲国物語 し りゅうき Shi Ryuuki 安倍昌浩 少年陰陽師 あべの まさひろ Abeno Masahiro 藤原彰子 少年陰陽師 ふじわらの あきこ Fuziwarano Akiko 中嶋陽子 十二国記 なかじま ようこ Nakazima Youko 高里要 十二国記 たかさと かなめ Takasato Kaname 四月一日君尋 ×××HoLic わたぬき きみひろ Watanuki Kimihiro 壱原侑子 ×××HoLic いちはら ゆうこ Ichihara Yuuko 百目鬼静 ×××HoLic どうめき しずか Doumeki Shizuka 九軒ひまわり ×××HoLic くのぎ ひまわり Kunogi Himawari 谷山麻衣 ゴーストハント たにやま まい Taniyama Mai 渋谷一也 ゴーストハント しぶや かずや Shibuya Kazuya 林興徐 ゴーストハント りん こうじょ rin koujo 滝川法生 ゴーストハント たきがわ ほうせい Takigawa housei 松崎綾子 ゴーストハント まつざき あやこ Matsuzaki ayako 原真砂子 ゴーストハント はら まさこ Hara masako [3]どのような分類をしたいのか、目的についての説明 好きな小説や漫画本の登場人物達を検索する A [4]分類に使った検索パターンについて [a]iが連続して付く人物を探す。 #!/usr/koeki/bin/ruby while data06 = gets #whileで繰り返しdata06.datからの取り出す if /i.i/i =~ data06 #"/ /i"で大文字小文字を問わないで、 =~data06から検索 print data06 end #ifに対応するend end #whileに対応するend [b]最期に"子"が付く人物を探す。 #!/usr/koeki/bin/ruby while data06 = gets #whileで繰り返しdata06.datからの取り出す if /ko$/i =~ data06 #"/ /i"で大文字小文字を問わないで検索 "$"で末尾の文字列のみ検索 "=~ data06でdata06.datから取り出す print data06 end #ifに対応するend end #whileに対応するend [c]"こう"が付く人物を探す #!/usr/koeki/bin/ruby while data06 = gets #whileで繰り返しdata06.datからの取り出す if /koh|kou/i =~ data06 #"/ /i"で大文字小文字を問わないで検索 "=~ data06"でdeta06.rbから取り出し "koh|kou"でどちらかにヒットする人物を探し出す print data06 end #ifに対応するend end #whileに対応するend [5]実行した結果 [a]% ./answer1.rb data06.dat [~/Ruby] 四月一日君尋 ×××HoLic わたぬき きみひろ WatanukiKimihiro [b]% ./answer2.rb data06.dat [~/Ruby] 藤原彰子 少年陰陽師 ふじわらの あきこ Fuziwarano Akiko 中嶋陽子 十二国記 なかじま ようこ Nakazima Youko 壱原侑子 ×××HoLic いちはら ゆうこ Ichihara Yuuko 松崎綾子 ゴーストハント まつざき あやこ Matsuzaki ayako 原真砂子 ゴーストハント はら まさこ Hara masako [c]% ./answer3.rb data06.dat [~/Ruby] 紅秀麗 彩雲国物語 こう しゅうれい Koh Shuurei 林興徐 ゴーストハント りん こうじょ rin koujo [6]結果の考察 [a]iが連続して続く、四月一日君尋が検索された。 [b]最後に"子"が付く人物、藤原彰子・中嶋陽子・壱原侑子・松崎綾子・原 真砂子が検索された。しかし、初めに #!/usr/koeki/bin/ruby while data06 = gets if /綾?子\s+/e =~ data06 print data06 end end としてしまったため、最後に子の付く人物ではなく、"子の付く人物"を 検索してしまうこととなったので[4]にあるように書きかえた。 その結果、最後に子の付く人物のみ検索された。 [c]"こう"が付く人物、紅秀麗・林興徐が検索された。 [7]利用した正規表現 $ 末尾の文字列のみ探して調べる | 「または」の意味を持つ B [4]分類に使った検索パターンについて [a]同じ文字を繰り返す人物を検索 [b]kaまたはnaで終わる人物の検索 #!/usr/koeki/bin/ruby STDERR.print ("検索パターン : ") pattern = STDIN.gets.chomp #STDINは与えられたデータの処理の方法をキーボードから入力したい ときに使う #chmopは文字列を切り取るmethod request = Regexp.new(pattern, true, "e") #requestはオプションと文字コードを指定した検索パターンをしまう 変数 #Regexp.new(変数、オプション、文字コード)は正規表現したい文字列 にオプションを付ける #tureは大文字小文字を区別しない #eは漢字コードをEUS jpに指定している while data06 = gets if request =~ data06 print data06 end #ifに対応するend end #whileに対応するend [c]"ら行"の付く人物を検索(切り出しを使う) #!/usr/koeki/bin/ruby STDERR.print ("検索パターン : ") pattern = STDIN.gets.chomp request = Regexp.new(pattern, true, "e") while data06 = gets if request =~ data06 # print data06 if /(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/ =~ data06 #(\S+)は空白文字以外の文字列が 1 個以上並んでいるものを探 す事を優先させる #\s+は空白文字が 1 個以上並んでいるものを探す printf("%sさん\n", $1) end #2番目のifに対応するend end #1番目のifに対応するend end #whileに対応するend [5]実行した結果 [a]% ./answer_b1.rb data06.dat [~/Ruby] 検索パターン(\S)\1 杏本詩歌 ムシウタ あんもと しいか Anmoto Shiika 紅秀麗 彩雲国物語 こう しゅうれい Koh Shuurei 紫劉輝 彩雲国物語 し りゅうき Shi Ryuuki 四月一日君尋 ×××HoLic わたぬき きみひろ Watanuki Kimihiro 壱原侑子 ×××HoLic いちはら ゆうこ Ichihara Yuuko 百目鬼静 ×××HoLic どうめき しずか Doumeki Shizuka 九軒ひまわり ×××HoLic くのぎ ひまわり Kunogi Himawari [b]% ./answer_b1.rb data06.dat [~/Ruby] 検索パターン : (\S+)\s+(\S+)\s+(\S+)\s+(\S+[kn]a)$ 杏本詩歌 ムシウタ あんもと しいか Anmoto Shiika 立花利菜 ムシウタ たちばな りな Tachibana Rina 百目鬼静 ×××HoLic どうめき しずか Doumeki Shizuka [c]% ./answer_b2.rb data06.dat 検索パターン : ra* 薬屋大助さん 立花利菜さん 紅秀麗さん 紫劉輝さん 安倍昌浩さん 藤原彰子さん 四月一日君尋さん 壱原侑子さん 九軒ひまわりさん 林興徐さん 原真砂子さん [6]結果の考察 [a]同じ文字を繰り返す人物である、 杏本詩歌 ムシウタ あんもと しいか Anmoto Shiika 紅秀麗 彩雲国物語 こう しゅうれい Koh Shuurei 紫劉輝 彩雲国物語 し りゅうき Shi Ryuuki 四月一日君尋 ×××HoLic わたぬき きみひろ Watanuki Kimihiro 壱原侑子 ×××HoLic いちはら ゆうこ Ichihara Yuuko 百目鬼静 ×××HoLic どうめき しずか Doumeki Shizuka 九軒ひまわり ×××HoLic くのぎ ひまわり Kunogi Himawari が検索された。 [b]kaまたはnaで終わる人物である 杏本詩歌 ムシウタ あんもと しいか Anmoto Shiika 立花利菜 ムシウタ たちばな りな Tachibana Rina 百目鬼静 ×××HoLic どうめき しずか Doumeki Shizuka が検索された。 [c]"ら行"の付く人物である 薬屋大助さん 立花利菜さん 紅秀麗さん 紫劉輝さん 安倍昌浩さん 藤原彰子さん 四月一日君尋さん 壱原侑子さん 九軒ひまわりさん 林興徐さん 原真砂子さん が検索された。 [7]利用した正規表現 * 直前の文字が出現してもしなくてもよいが、出現は何回でも良い場合 [] []で括られた文字のどれかが一致するものを取り出す [8]参考資料 西村先生のホームページ http://roy/~madoka/2007/r1/07/ 正規表現とRubyでのプログラミング 3 感想 色々な正規表現を使って検索することが出来て良かった。今回出来なかった課 題は近いうちに必ずしようと思う。 ようやくプログラムを作ることが楽しく感じられてきたのでもっと頑張ってい ろいろなプログラムを自分で作っていけたらいいと思った。