忍者ブログ
mirac cafe という名の不思議なブログ

※ ブログ等での私の投稿は個人の見解によるものであり、 所属する組織の見解ではありません。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

今日もバイト行ってpkuといういつものroutine.

1人でプログラム書くときはいつも何かBGMを流してるんですが、、

今日は何故かAve Mariaが聞きたくなったので、

youtubeで見つけたAve Mariaをランダム再生してましたw



で、今日もプログラミングネタなんですがー、、

最近10分で書けるお手軽パーサーにはまってますw


えーと、パーサーと言うのはですね、、

「構文解析器」っていう物なのですが、例えば

I wish I were a bird, which can fly! とか言う文を見たときに、

I wish (I were a bird (, which can fly)))! とか言う感じに、

区切ってくれるような、そんな働き方をします。


別の例で言うと、1+2*3+3*5/2-3っていう数式を、

(((1+(2*3))+((3*5)/2))-3)っていう感じで

適切に括弧をつけてくれる、みたいなのも構文解析です。



んで、上の例を見て分かる通り、構文解析ってのはなかなかややこしいんです。

小学生とかだと1+2*3を9 ( = (1+2)*3 ) って言ってしまったり、

にゅうしとかでえいごをなんねんべんきょうしてもがくしゃたちがこのみそうな

ふくざつでこうぶんがいりみだれたようなえいぶんがかいしゃくできなかったり、

なかなか難しいわけですよ。この平仮名の文章も構文解析しにくいでしょ?w


人間が大変なものってのはプログラムするのも大変なわけで、

普通はパーサ(構文解析器)を作るってのはなかなか手のかかる作業なわけです。

でも上のリンクの、10分で書けるお手軽パーサーっていうサイトを参考にすると、

なんか驚くほど簡単にパーサが作れるようになってしまったのですw


詳細を述べるにはLL文法で左再帰があると不味い理由とか、

なんかそういうおもしろくないことを書かないといけないので省略しますが、、

まぁICPCとか挑戦してる人にはこのサイトはものすごく勉強になると思います。


で、"10分で書ける"お手軽パーサーって名前のサイトなので、

本当に10分で書けるのか試してみました。

使った問題はこちら。問題文の解説とかは省略でw


で、さすがに問題を読む時間を含めると間に合わないことが確定してしまうので、

まず問題を読んでから、時刻をチェックしてプログラムを書き始めてみました。

このとき22:10でした。で、まず文法を列挙して、パーサ部分をカリカリ書いて、

最後に入出力部分をカリカリカリカリ書いて、submitしてみたら一発Accept。

そしてこのときの時間が22:19。所要時間がきっかり10分(笑)


いやー、、正直10分で書けると思ってなかったから感動しました。

これでまた一つ知識がついたので世界大会に近づいたかなー、

なんて思ってみたりみなかったり。いや、思ってるんですがw


俺がここ数日pkuで解いた問題を探すと、

パーサの練習になるような問題がいくつかあるので、

興味のある人はやってみてくださいな。

そろそろお風呂入ったかな、、いてきますw
PR
この記事にコメントする
お名前
タイトル
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
無題
I wish I was a bird, which can fly, which is a fragile dream which often comes up with me, which is mere a man.

なにはともあれGJ
sky_way 2009/02/20(Fri)23:00:21 編集
無題
正解です。頑張って調べたねー
多分そこがmiracと僕との違い。
申し訳ないけど今日も斜め読みです…orz
2009/02/20(Fri)23:48:25 編集
無題
>sky_way
俺は鳥になれたらいいのに!だって空を飛べるじゃないか。
空を飛ぶのは俺の夢なんだ。しょっちゅう思ってる。ま、所詮ただの男だけどさ。

こうですか?わかりません><


>渚
おー、、合ってたんだ、、嬉しいな(笑
どんなモノなのか気になってねー、、
けどやっぱネットだと情報が断片的でよく分からんかったわ(汗)
顔の感覚器とかその辺なのかなー、ってぐらいw
mirac 2009/02/22(Sun)00:06:24 編集
page not found
「10分でかけるお手軽パーサ」のページ, なくなってしまったみたいですね :-(
kamae 2012/11/30(Fri)09:15:45 編集
この記事へのトラックバック
この記事にトラックバックする:
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア
最新コメント
[11/30 kamae]
[04/30 mirac]
[04/29 渚]
[01/20 渚]
[01/01 mirac]
[12/09 mirac]
[10/31 mirac]
[03/14 mirac]
[08/10 404ななしさん]
[08/09 halwhite]
最新記事
最新トラックバック
ブログ内検索
忍者ブログ [PR]