結城浩の『Perlクイズ』

[PQ][Perl Quiz 1999-12-12 No.0038]


カテゴリー: 1999年12月12日
===========================================================
結城浩の『Perlクイズ』1999-12-12 No.0038
http://www.st.rim.or.jp/~hyuki/pq/
===========================================================
■今日の一言
-----------------------------------------------------------
こんにちは、結城浩です。
ここしばらく多忙な日々が続いていて、
メールマガジン『Perlクイズ』はお休みしていました。
時間を見つけてまたお送りしたいと思いますので、
どうぞよろしくお願いいたします。
===========================================================
■今回のクイズ
-----------------------------------------------------------
●クイズ
-----------------------------------------------------------
もうすぐクリスマスですね。
今回の『Perlクイズ』ではクリスマスツリーを作ってみましょう。
次の表示を行うプログラムを書いてください。
ともかく以下の表示ができれば正解としますが、
プログラムの内容はみなさんがそれぞれ工夫をこらしてみてください。
(1)と(2)が別のプログラムでも構いませんし、
一つのプログラムで両方を書いても構いません。

(1) 小さなツリー

      *
     *!*
    *!*!*
   *!*%*!*
  *!*%/%*!*
 *!*%/*/%*!*

(2) 大きなツリー

               *
              *!*
             *!*!*
            *!*%*!*
           *!*%/%*!*
          *!*%/*/%*!*
         *!*%/*+*/%*!*
        *!*%/*+-+*/%*!*
       *!*%/*+-!-+*/%*!*
      *!*%/*+-!.!-+*/%*!*
     *!*%/*+-!.*.!-+*/%*!*
    *!*%/*+-!.***.!-+*/%*!*
   *!*%/*+-!.**%**.!-+*/%*!*
  *!*%/*+-!.**%/%**.!-+*/%*!*
 *!*%/*+-!.**%/*/%**.!-+*/%*!*
*!*%/*+-!.**%/*+*/%**.!-+*/%*!*
===========================================================
■前回の解答
-----------------------------------------------------------
●クイズ
-----------------------------------------------------------
メールアドレスが or.jp または ac.jp または ne.jp で終わる
ものにマッチする正規表現を書いてください。
メールアドレスの仕様を調べて厳密にやってくださっても
けっこうですが、とりあえずは、
以下に示すものでmatched/nomatchが合えばよいとしましょう。
以下のXXXの部分を埋めてください。
文字数はもちろん3文字じゃないです(^_^;

@arr = (
    'web.master@some.org.or.jp',        # matched
    'web-master@some-school.ac.jp',     # matched
    'web_master@some_provider.ne.jp',   # matched
    'webmaster@someone.to',             # nomatch
    'webmaster@someone.com',            # nomatch
    'webmaster@someone.gr.jp',          # nomatch
);

foreach $addr (@arr) {
    if ($addr =~ /XXX/i) {
        print "matched : $addr\n";
    } else {
        print "nomatch : $addr\n";
    }
}
-----------------------------------------------------------
●解答
-----------------------------------------------------------
@arr = (
    'web.master@some.org.or.jp',        # matched
    'web-master@some-school.ac.jp',     # matched
    'web_master@some_provider.ne.jp',   # matched
    'webmaster@someone.to',             # nomatch
    'webmaster@someone.com',            # nomatch
    'webmaster@someone.gr.jp',          # nomatch
);

foreach $addr (@arr) {
    if ($addr =~ /^[\w.\-_]+\@[\w.\-_]+\.(or|ac|ne)\.jp$/i) {
        print "matched : $addr\n";
    } else {
        print "nomatch : $addr\n";
    }
}
-----------------------------------------------------------
●読者からの解答(複数人から)
-----------------------------------------------------------
今回の結城の出題は、
通常の文字 \. とメタ文字の . の区別を理解していなくても
うまく動作してしまう出題になっていました。
ごめんなさい。

例えば、/.or.jp/ という正規表現では、
'.or.jp'という文字列だけではなく'fordjp'という文字列にも
マッチしてしまうことになります。
'.or.jp'にマッチさせるには、/\.or\.jp/にする必要があります。
この違いを突いた出題になっていなかった、ということです。

読者のみなさんの解答から正規表現部分だけを抜粋してみました。
以下はすべて正解です。

/\w+(.or.jp)|\w+(.ne.jp)|\w+(.ac.jp)/i
/.*(.or.jp|.ac.jp|.ne.jp)$/
/.*or.jp$|.*ac.jp$|.*ne.jp$/
/or\.jp$|ac\.jp$|ne\.jp$/i
/\.(or|ac|ne)\.jp$/i
/(or|ac|ne)\.jp/i
/.+\@.*(\.or\.jp|\.ac\.jp|\.ne\.jp)$/i
/\.or\.|\.ac\.|\.ne\./i
/(or|ac|ne)\.jp$/i
===========================================================
■結城浩の書籍紹介(ソフトバンクパブリッシング)
-----------------------------------------------------------
◆『Java言語プログラミングレッスン』(上下2巻)
    http://www.st.rim.or.jp/~hyuki/jb/
◆『C言語プログラミングレッスン』(入門編・文法編)
    http://www.st.rim.or.jp/~hyuki/lc/
◆『Perlで作るCGI入門』(基礎編・応用編)
    http://www.st.rim.or.jp/~hyuki/cgibook/
    http://www.st.rim.or.jp/~hyuki/cgibook2/
===========================================================
結城浩の『Perlクイズ』
Copyright (C) 1999 by Hiroshi Yuki. <hyuki@st.rim.or.jp>
http://www.st.rim.or.jp/~hyuki/pq/
お送りくださる文章やプログラムは、
書籍や連載などで無断で利用させていただく場合があります。
===========================================================

このメルマガは現在休刊中です

結城浩の『Perlクイズ』

RSSを登録する
発行周期 不定期
最新号 2007/08/25
部数 0部

このメルマガは
現在休刊中です

ついでに読みたい

結城浩の『Perlクイズ』

RSSを登録する
発行周期 不定期
最新号 2007/08/25
部数 0部

このメルマガは
現在休刊中です

今週のおすすめ!メルマガ3選

サラリーマンで年収1000万円を目指せ。
高卒、派遣社員という負け組から、外資系IT企業の部長になった男の、成功法則を全て公開します。誰にでも、どんな状況、状態からでも自分の力で人生を変えるための情報と知性を発信しています。人生を意のままにするには、脳みそとこころの両方が進化しなければなりません。そんな進化とは何か?をお届けする四コママンガ付きメルマガです。2014年から3年連続でまぐまぐ大賞部門賞を受賞しました 学歴やバックグラウンドに拘わらず、人生を思いのままに生きるために必要な考え方が書かれた、「良書リスト」も希望者に差し上げています。
  • メールアドレスを入力

  • 規約に同意して

株投資・初心者からミリオネアへ
一般の個別銘柄は、 日経225先物に引きずられて動く習性があります。 そのため、個別銘柄を売買する場合は、 先物の動向をチェックした上で、売買する必要があります。 ここでは、その日経225先物の動向を中心にお伝えしてまいります。
  • メールアドレスを入力

  • 規約に同意して

毎日1分!経済英語NEWS(解説付き)
TOEIC235点だった私が900点を超えるまでの勉強の過程で感じた、「英語のニュースを解説してくれる教材があったらいいのに。。。」という思いを形にしました。 全ての英文に、文法解説・和訳 がついています。 「読めない英語」は聞き取れません。 1ヶ月無料です。もしあなたが、「本気で英語を身に着けたい!」と思っているのであれば、挑戦しない理由はないはずです。 あなたの英語力を必ず引き上げてみせます。
  • メールアドレスを入力

  • 規約に同意して

今週のおすすめ!メルマガ3選

ダメおやじの全財産をかけた崖っぷちFX通信
【1日に数万人が熟読する人気FXブログのメルマガ版】 相場歴30年以上のダメおやじがFXノウハウを大公開! 毎朝配信!毎日の経済指標情報や攻略法を無料で解説しています。 ●損切りがうまくできない、利食いが浅い ●ポジポジ病(ポジションを不要に持ってしまう) ●コツコツドカーン(小さく勝っても大きく負ける) ●エントリータイミングわからない ●メンタル面が弱い このようなお悩みがあれば購読してみてください。 FX初心者から経験者まで、FXの悩みをこのメルマガで解消します。 期間限定でメルマガ内で数万円相当分のFX情報商材をプレゼント中!
  • メールアドレスを入力

  • 規約に同意して

右肩下がりの時代だからこそ、人の裏行く考えを【平成進化論】
【読者数12万人超・日刊配信5,000日継続の超・定番&まぐまぐ殿堂入りメルマガ】 ベストセラー「仕事は、かけ算。」をはじめとするビジネス書の著者であり、複数の高収益企業を経営、ベンチャー企業23社への投資家としての顔も持つ鮒谷周史の、気楽に読めて、すぐに役立つビジネスエッセイ。 創刊以来14年間、一日も欠かさず日刊配信。大勢の読者さんから支持されてきた定番メルマガ。 経験に裏打ちされた、ビジネスで即、結果を出すためのコミュニケーション、営業、マーケティング、投資、起業、経営、キャリア論など、盛り沢山のコンテンツ。
  • メールアドレスを入力

  • 規約に同意して

問題解決研究所刊【よくわかる!英字新聞の読み方】
このメルマガは、中学レベルの英語を復習できるように、毎号、英字新聞記事を使って文法事項を解説します。また、取り上げたニュースの背景を解説し世界で起こった出来事が我々にどのように関係するのかをお伝えします。2020東京オリンピックに向かって英語は欠かせません。このメルマガを購読すれば、世界の人とつながるための英語脳ができ、さらにはグローバル競争に勝つための戦略脳を作れます。戦略は弱者のためにあります。忙しい方、英語の苦手な方に最適なメルマガです。メルマガ読者だけの特典・イベントを開催します。
  • メールアドレスを入力

  • 規約に同意して

他のメルマガを読む

ウィークリーランキング