共同学習者を書き忘れたため、送り直します。 こちらで採点をお願いします。 第6回 正規表現と検索 レポート課題 氏名:田中井晶帆 学籍番号:C111104A 語学クラス:中国語3 コース:社会福祉コース 1.筆記問題 A.Od1993, Od3, Od24 Ob11111001001, Ob11, Ob11000 計算方法 1993 / 2 = 996 … 1 3 / 2 = 1 … 1 24 / 2 = 12 … 0 996 / 2 = 498 … 0 1 / 2 = 0 … 1 12 / 2 = 6 … 0 498 / 2 = 249 … 0 6 / 2 = 3 … 0 249 / 2 = 124 … 1 3 / 2 = 1 … 1 124 / 2 = 62 … 0 1 / 2 = 0 … 1 62 / 2 = 31 … 0 31 / 2 = 15 … 1 15 / 2 = 7 … 1 7 / 2 = 3 … 1 3 / 2 = 1 … 1 1 / 2 = 0 … 1 →「Od1993」「Od3」「Od24」をそれぞれ商が 0 になるまで 2 で割り続 け、最後に余りを下から読むと「Ob11111001001」「Ob11」「Ob11000」 となる。 Ox7c9, Ox3, Ox18 計算方法 1993 / 16 = 124 … 9 3 / 16 = 0 … 3 24 / 16 = 1 … 8 124 / 16 = 7 … 12 1 / 16 = 0 … 1 7 / 16 = 0 … 7 →「Od1993」「Od3」「Od24」をそれぞれ商が 0 になるまで 16 で割り続 け、最後に余りを下から読むと「Ox7 12 9」「Ox3」「Ox18」となる。 「Ox7 12 9」の「12」は 16 進数で表すと c であるため、「Ox7c9」と なる。 B.10 進数表示の誕生日の各項を足す: Od1993 + Od3 + Od24 = Od2020 16 進数表示の誕生日の和を求める: Ox7c9 + Ox3 + Ox18 = 7e4 →※「Oxc」 = 「12」 である。 筆算のような形式で計算するとすると、以下のようになる。 9 + 3 + 8 = 4 # 9 + 3 + 8 = 20 だが、16 進数計算のため繰 り上がりは 16 となり、残るのは 4 である。 12 + 1 = 14 = e # 前の計算で 1 繰り上がったため、12 + 1 + 1 = 14 となり、「14」 = 「Oxe」 である。 7 = 7 # 7はそのままおろしてくる。 計算結果を 10 進数に戻す: Ox7 * 16^2 + Oxe * 16^1 + Ox4 *16^0 = 2020 → 16 進数の右から一桁目に 16^0, 二桁目に 16^1, 三桁目に 16^3をして その合計を出す。 16^2 = 256 * 7 = 1792 16^1 = 16 * e (14) =224 1792 + 224 + 4 = 2020 上記の計算より、16 進数の各項を足したものを 10進数に変換すると、元の 10 進数を足したものと同じ数になる。 C.STDERR とは標準エラー出力であり、print文やprintf文を実行したときに ktermにメッセージ、エラーメッセージを表示させるためにつける。 2.プログラム問題 A.データの内容 料理の名前と主役となる材料、主菜・副菜等の分類、調理時間、カロリーにつ いて B.データファイル ふろふき大根 大根 副菜 50分 165kcal 白菜の浅漬け 白菜 副菜 10分 22kcal 揚げなすの煮びたし なす 副菜 15分 186kcal なすの浅漬け なす 副菜 8分 19kcal かぼちゃのサラダ かぼちゃ 副菜 10分 169kcal バンバンジー 鶏肉 副菜 25分 332kcal ミートローフ ひき肉 主菜 40分 606kcal ふわふわかに玉 卵 主菜 15分 253kcal ふんわり豆腐ハンバーグ 豆腐 主菜 20分 247kcal いり鶏 鶏肉 主菜 30分 339kcal 麻婆豆腐 豆腐 主菜 15分 396kcal きのこの炊き込みごはん ごはん 主食 10分 577kcal ブリの照り焼き ブリ 主菜 15分 273kcal かやくごはん ごはん 主食 15分 479kcal 塩焼きそば 麺 主食 15分 632kcal とん汁 豚肉 汁物 20分 150kcal C.分類、目的について 主役の材料や主菜・副菜等の分類、調理時間からどんな料理が作れるか調べたり、 調理時間やカロリーからどんな料理が作れるかを調べたりしてみたい。 D.分類の検索パターンについて (1)egrep "マーボー豆腐|麻婆豆腐" data_c111104.datを実行する。 予想:マーボー豆腐か麻婆豆腐のデータが検索される。 (2)egrep "肉" data_c111104.datを実行する。 予想:「肉」の文字が含まれるデータが検索される。 (3)egrep "^[ァ-ン]" data_c111104.datを実行する。 予想:カタカナで始まる料理名のデータが検索される。 (4)egrep "[10分-20分]" data_c111104.datを実行する。 予想:調理時間が「10分~20分」のデータが検索される。 (5)egrep "主菜" data_c111104.datを実行する。 予想:「主菜」のデータが検索される。 (6)egrep "浅漬け$" data_c111104.datを実行する。 予想:料理名の最後に「浅漬け」とつく料理のデータが検索される。 E.実行結果 (1)egrep "マーボー豆腐|麻婆豆腐" data_c111104.datを実行した。 麻婆豆腐 豆腐 主菜 15分 396kcal →「マーボー豆腐」はないが「麻婆豆腐」はあったので、予想通りそれが HITした。 (2)egrep "肉" data_c111104.dat バンバンジー 鶏肉 副菜 25分 332kcal ミートローフ ひき肉 主菜 40分 606kcal いり鶏 鶏肉 主菜 30分 339kcal とん汁 豚肉 汁物 20分 150kcal →予想通り、「肉」の文字を含んだデータが検索された。 (3)egrep "^[ァ-ン]" data_c111104.datを実行した。 バンバンジー 鶏肉 副菜 25分 332kcal ミートローフ ひき肉 主菜 40分 606kcal ブリの照り焼き ブリ 主菜 15分 273kcal →予想通り、カタカナで始まる料理名のデータが検索される。 (4)egrep "[10分-20分]" data_c111104.datを実行した。 ふろふき大根 大根 副菜 50分 165kcal 白菜の浅漬け 白菜 副菜 10分 22kcal 揚げなすの煮びたし なす 副菜 15分 186kcal なすの浅漬け なす 副菜 8分 19kcal かぼちゃのサラダ かぼちゃ 副菜 10分 169kcal バンバンジー 鶏肉 副菜 25分 332kcal ミートローフ ひき肉 主菜 40分 606kcal ふわふわかに玉 卵 主菜 15分 253kcal ふんわり豆腐ハンバーグ 豆腐 主菜 20分 247kcal いり鶏 鶏肉 主菜 30分 339kcal 麻婆豆腐 豆腐 主菜 15分 396kcal きのこの炊き込みごはん ごはん 主食 10分 577kcal ブリの照り焼き ブリ 主菜 15分 273kcal かやくごはん ごはん 主食 15分 479kcal 塩焼きそば 麺 主食 15分 632kcal とん汁 豚肉 汁物 20分 150kcal →予想とは違い、調理時間かkcalに「1」「2」「0」を含んだデータが検 索された。 (5)egrep "主菜" data_c111104.datを実行した。 ミートローフ ひき肉 主菜 40分 606kcal ふわふわかに玉 卵 主菜 15分 253kcal ふんわり豆腐ハンバーグ 豆腐 主菜 20分 247kcal いり鶏 鶏肉 主菜 30分 339kcal 麻婆豆腐 豆腐 主菜 15分 396kcal ブリの照り焼き ブリ 主菜 15分 273kcal →予想通り、「主菜」のデータが検索された。 (6)egrep "浅漬け$" data_c111104.datを実行した。 →予想とは違い、何も検索されなかった。 F.考察 (1)予想通りの検索結果であったため、プログラムは正常に動いていると言え る。 (2)予想通りの検索結果であったため、プログラムは正常に動いていると言え る。 (3)egrep "^[ァ-ン]" data_c111104.datを実行すると、カタカナで始まる料理 名のデータが検索される。 このことから、"^[ァ-ン]"を"^[ぁ-ん]"に変えると、ひらがなで始まる料 理名のデータが検索されると考え、実行してみた。以下に実行結果を記す。 ふろふき大根 大根 副菜 50分 165kcal なすの浅漬け なす 副菜 8分 19kcal かぼちゃのサラダ かぼちゃ 副菜 10分 169kcal ふわふわかに玉 卵 主菜 15分 253kcal ふんわり豆腐ハンバーグ 豆腐 主菜 20分 247kcal いり鶏 鶏肉 主菜 30分 339kcal きのこの炊き込みごはん ごはん 主食 10分 577kcal かやくごはん ごはん 主食 15分 479kcal とん汁 豚肉 汁物 20分 150kcal →予想通り、ひらがなで始まる料理名のデータが検索された。 (4)egrep "[10分-20分]" data_c111104.datを実行した結果、調理時間かkcal に「1」「2」「0」を含んだデータが検索されてしまった。 そこで、"[10分-20分]"を"[0分-9分]"に変えて、検索する数字が一桁のみ なら検索できるのか試してみた。以下に結果を記す。 ふろふき大根 大根 副菜 50分 165kcal 白菜の浅漬け 白菜 副菜 10分 22kcal 揚げなすの煮びたし なす 副菜 15分 186kcal なすの浅漬け なす 副菜 8分 19kcal かぼちゃのサラダ かぼちゃ 副菜 10分 169kcal バンバンジー 鶏肉 副菜 25分 332kcal ミートローフ ひき肉 主菜 40分 606kcal ふわふわかに玉 卵 主菜 15分 253kcal ふんわり豆腐ハンバーグ 豆腐 主菜 20分 247kcal いり鶏 鶏肉 主菜 30分 339kcal 麻婆豆腐 豆腐 主菜 15分 396kcal きのこの炊き込みごはん ごはん 主食 10分 577kcal ブリの照り焼き ブリ 主菜 15分 273kcal かやくごはん ごはん 主食 15分 479kcal 塩焼きそば 麺 主食 15分 632kcal とん汁 豚肉 汁物 20分 150kcal →「0」から「9」までのいずれかの数字を含むデータが検索されてしまっ た。 さらに、「分」ではなく「kcal」ではどうなるのか疑問に思い、"[0分-9 分]"を"[150kcal-300kcal]"に変え、実行してみた。以下に実行結果を記 す。 ふろふき大根 大根 副菜 50分 165kcal 白菜の浅漬け 白菜 副菜 10分 22kcal 揚げなすの煮びたし なす 副菜 15分 186kcal なすの浅漬け なす 副菜 8分 19kcal かぼちゃのサラダ かぼちゃ 副菜 10分 169kcal バンバンジー 鶏肉 副菜 25分 332kcal ミートローフ ひき肉 主菜 40分 606kcal ふわふわかに玉 卵 主菜 15分 253kcal ふんわり豆腐ハンバーグ 豆腐 主菜 20分 247kcal いり鶏 鶏肉 主菜 30分 339kcal 麻婆豆腐 豆腐 主菜 15分 396kcal きのこの炊き込みごはん ごはん 主食 10分 577kcal ブリの照り焼き ブリ 主菜 15分 273kcal かやくごはん ごはん 主食 15分 479kcal 塩焼きそば 麺 主食 15分 632kcal とん汁 豚肉 汁物 20分 150kcal →「1」「3」「5」「0」のいずれかを含むデータが検索されてしまった。 この検索パターンについては、解決方法が見つからなかった。 (5)予想通りの検索結果であったため、プログラムは正常に動いていると言え る。 (6)egrep "浅漬け$" data_c111104.datを実行したが、何も検索されなかった。 この「$」の記号は、語尾についている文字を検索するのではなく、文末に ついている文字を検索するのではないかと考え、試してみた。 ※このデータの文末は全て「kcal」になっていて、実行したときにプログ ラムが正常に動いているか分かりやすくするため、このパターンの実験時 のみ、ファイル内の「かやくごはん」「塩焼きそば」「とん汁」の 3 つの 文末の「kcal」を消しておくことにする。 以下に実行結果を記す。 ふろふき大根 大根 副菜 50分 165kcal 白菜の浅漬け 白菜 副菜 10分 22kcal 揚げなすの煮びたし なす 副菜 15分 186kcal なすの浅漬け なす 副菜 8分 19kcal かぼちゃのサラダ かぼちゃ 副菜 10分 169kcal バンバンジー 鶏肉 副菜 25分 332kcal ミートローフ ひき肉 主菜 40分 606kcal ふわふわかに玉 卵 主菜 15分 253kcal ふんわり豆腐ハンバーグ 豆腐 主菜 20分 247kcal いり鶏 鶏肉 主菜 30分 339kcal 麻婆豆腐 豆腐 主菜 15分 396kcal きのこの炊き込みごはん ごはん 主食 10分 577kcal ブリの照り焼き ブリ 主菜 15分 273kcal →「かやくごはん」「塩焼きそば」「とん汁」の 3 つのみ表示されてい ない。よって予想通り、「$」この記号は文末についている文字を検索 するためのものだと分かった。 G.利用した正規表現、気付いたこと (1) 「|」 … 「または」の意味で、複数の候補があるときに使う。 (3) 「^」 … 文頭の文字を検索する。 「[ァ-ン]」 … カタカナの中から1文字探す。 (4) 「[10分-20分]」 … 本来 [0-9]ならば、数字の 0 から 9 までの1文 字を探す。 (6) 「$」 … 文末の文字を検索する。 「$」はどれかの項目の文末の文字を検索するものだと思っていたが、(6) で実行して、「どれかの項目」ではなく、「文末」の文字を検索するもの だと気付いた。 3.感想 多くの記号が出て来て、どの記号がどの様な意味を持つのか把握するのが大変 だった。 私の家では年賀状を作成するときに、「筆ぐるめ」というソフトを使っている が、住所を入力する際に郵便番号を入力すると、ある程度の住所が出てきたり、 逆に住所を入力すると、郵便番号が検索できたりする。このソフトも正規表現 を利用しているのではないかと思った。 参考文献 http://roy/~madoka/2012/r1/03/r1_03_03_theme_01_gets.html 西村まどか 基礎プログラミング1 第3回 (キーボードから入力して計算させるには) 「入力した値をプログラムで使おう」 おかず!応援団 特別編集 毎日のおかず375 織田信雄 1part 人気野菜で主役おかずと小さいおかず 大根 p17 1part 人気野菜で主役おかずと小さいおかず 白菜 p21 1part 人気野菜で主役おかずと小さいおかず なす p26, p27 1part 人気野菜で主役おかずと小さいおかず かぼちゃ p31 2part 肉・魚介・卵・豆腐で主役おかずと小さいおかず 鶏肉 p72 2part 肉・魚介・卵・豆腐で主役おかずと小さいおかず ひき肉 p88 2part 肉・魚介・卵・豆腐で主役おかずと小さいおかず 卵 p119 2part 肉・魚介・卵・豆腐で主役おかずと小さいおかず 豆腐 p124 3part 献立とごはん&スープ・汁 人気のおかず献立 p134, p137, p140, p143 3part 献立とごはん&スープ・汁 ごはんもの p144 3part 献立とごはん&スープ・汁 めん p148 3part 献立とごはん&スープ・汁 具だくさん汁 p150 共同学習者:高橋真優