数学オリンピック同様、ICPCなるプログラミングコンテストも世界大会があるようで。。
詳細はid:tanakh さんの2006ICPCの参加記から伺うことできます。
http://fxp.hp.infoseek.co.jp/icpc2005/wf/4.html
(前述のURLにもあるのだけど、出題問題PDF@ICPC2006、2007)
それで、初めて耳にしたキーワード周辺を少し調べてみようかと。
ダイクストラ、ベルマンフォード、などのアルゴリズム名でGoogleってみると、適切な通信経路選択する上で利用されているとのこと。
実生活とアルゴリズムを意識するきっかけって改めて少ないなー、、暗号とかいじることもなく。
サーチエンジンの裏側でページランク算出するのに使われるとはいえ、公開されているのではないし。
・(検索エンジンを作ろう~記事)
・(Google検索ランキング要素の推測)
・(dan さんの「知っておきたい10のアルゴリズム」)
それとは別に、アルゴリズムとコードでは奥村晴彦先生の「『C言語による最新アルゴリズム事典』 技術評論社,1991年」を読んだものの、まだ活用するタイミングがなひ。
途中、コードアーカイブが発見されたので後日見てみる。
アルゴリズム&コード集
例えばSearch Algorithm 項目
→EXACT STRING MATCHING ALGORITHMS
(http://www-igm.univ-mlv.fr/~lecroq/string/)
のページを開くと、「人名+algorithm」でコードとアルゴリズムが一覧できる。
各アルゴリズムページには "Visualization" ボタンが設置されていて、これを押すとテストデータに対してコードが実行されるというおもしろもの(Java appletの動作)。。
さっとデータ入れて動かせて、コードの挙動を見れる仕組みは良い学習素材と思う。
(追記)
計算幾何工学とアルゴリズム?画像解析とか複雑そう‥
http://tokweb.ics.es.osaka-u.ac.jp/toklab/research/compg/index-j.html
2008年5月5日月曜日
2008年4月25日金曜日
Mech::Googleサーチ 試し打ち
下記参照
http://d.hatena.ne.jp/hakobe932/20070131/1170266398
参照先のコードでは気をつけないと、"syntax error" "requires explicit package name" とか出てしまう。
「;」 と「my」の欠けは注意。
あと、コード末尾のエンコードはutf-8のままならエンコード/デコード処理は不要。。
そのまま実行すると文字化けします。
下は修正後。。
#!/usr/bin/perl
use strict;
use warnings;
#http://d.hatena.ne.jp/hakobe932/20070131/1170266398
use WWW::Mechanize;
use HTML::TreeBuilder::XPath;
use Encode;
use Readonly;
sub say {print @_, "\n";}
my $mesh = WWW::Mechanize->new();
# Googleにアクセス
$mesh->get('http://www.google.com');
# 検索フォームにPerlを入力してサブミット
my $res = $mesh->submit_form(
fields => {
q => 'Perl',
}
) or die 'submitting failed';
# レスポンスを取り出してパース
my $tree= HTML::TreeBuilder::XPath->new();
$tree->parse($res->content()) or die "parsing failed";
# 結果をXPathで取り出して表示
my @nodes = $tree->findnodes( '/html/body//div[@class="g"]/a[@class="l"]' );
for my $node (@nodes) {
say $node->as_text, ' (', $node->attr('href'), ')';
}
コードここまで。
出力結果は下記。
Perl - Wikipedia (http://ja.wikipedia.org/wiki/Perl)
Perl基礎入門 (http://www.kent-web.com/perl/)
とほほのperl入門 (http://www.tohoho-web.com/wwwperl.htm)
The Perl Directory - perl.org (http://www.perl.org/)
Perl講座[入門からデータベース連携なども] (http://www.site-cooler.com/kwl/perl/
)
Amazon.co.jp: Perl - プログラミング: 本 (http://www.amazon.co.jp/Perl-%E3%83%97%
E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E3%82%B3%E3%83%B3%E3%83%9
4%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BB%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%
8D%E3%83%83%E3%83%88-%E5%92%8C%E6%9B%B8/b?ie=UTF8&node=515826)
Perl.com: The Source for Perl -- perl development, conferences (http://www.perl.
com/)
Perl講座 [Smart] (http://www.rfs.jp/sb/perl/)
Perlとは 【Practical Extraction and Report Language】 - 意味・解説 ... (http://e
-words.jp/w/Perl.html)
Perlメモ (http://www.din.or.jp/~ohzaki/perl.htm)
以上、取れました。。
http://d.hatena.ne.jp/hakobe932/20070131/1170266398
参照先のコードでは気をつけないと、"syntax error" "requires explicit package name" とか出てしまう。
「;」 と「my」の欠けは注意。
あと、コード末尾のエンコードはutf-8のままならエンコード/デコード処理は不要。。
そのまま実行すると文字化けします。
下は修正後。。
#!/usr/bin/perl
use strict;
use warnings;
#http://d.hatena.ne.jp/hakobe932/20070131/1170266398
use WWW::Mechanize;
use HTML::TreeBuilder::XPath;
use Encode;
use Readonly;
sub say {print @_, "\n";}
my $mesh = WWW::Mechanize->new();
# Googleにアクセス
$mesh->get('http://www.google.com');
# 検索フォームにPerlを入力してサブミット
my $res = $mesh->submit_form(
fields => {
q => 'Perl',
}
) or die 'submitting failed';
# レスポンスを取り出してパース
my $tree= HTML::TreeBuilder::XPath->new();
$tree->parse($res->content()) or die "parsing failed";
# 結果をXPathで取り出して表示
my @nodes = $tree->findnodes( '/html/body//div[@class="g"]/a[@class="l"]' );
for my $node (@nodes) {
say $node->as_text, ' (', $node->attr('href'), ')';
}
コードここまで。
出力結果は下記。
Perl - Wikipedia (http://ja.wikipedia.org/wiki/Perl)
Perl基礎入門 (http://www.kent-web.com/perl/)
とほほのperl入門 (http://www.tohoho-web.com/wwwperl.htm)
The Perl Directory - perl.org (http://www.perl.org/)
Perl講座[入門からデータベース連携なども] (http://www.site-cooler.com/kwl/perl/
)
Amazon.co.jp: Perl - プログラミング: 本 (http://www.amazon.co.jp/Perl-%E3%83%97%
E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E3%82%B3%E3%83%B3%E3%83%9
4%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%BB%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%
8D%E3%83%83%E3%83%88-%E5%92%8C%E6%9B%B8/b?ie=UTF8&node=515826)
Perl.com: The Source for Perl -- perl development, conferences (http://www.perl.
com/)
Perl講座 [Smart] (http://www.rfs.jp/sb/perl/)
Perlとは 【Practical Extraction and Report Language】 - 意味・解説 ... (http://e
-words.jp/w/Perl.html)
Perlメモ (http://www.din.or.jp/~ohzaki/perl.htm)
以上、取れました。。
2008年1月1日火曜日
perl雑記 フレームワーク編
フレームワークCatalyst学習
環境:
Windows Vista
perl 5.8(Active Perlインストール済)
Catalyst 2.0(2.1が最新)
で、書籍「ずばりわかる!Webプログラミング2.0」からPerlに慣れるべく奮闘。
114ページあたりのCPANからCatalyst入れる際に、Task-Catalystのインストールにつまづく。
エラー内容が既存ファイルの衝突とのこと、しかしそのファイルが見当たらなかったため検索。
「C:/Perl/html/site/lib/Catalyst/Helper.html」
すると、Task-CatalystでなくBundle-Catalystでもいけるようなのでこちらをインストール。
以下、'Hello'スケルトンを作成するも、障害が起こらないので良しとした。
(参考URL)http://naoya.dyndns.org/~naoya/mt/archives/001682.html
Catalystは確かにMVCモデルに従うディレクトリ構成(フォルダ名がそのままMとVとC)をしていた。
単純にControlとView部のみを対象に'Hello'アプリを作成することにする。
Root.pmを適宜修正し、Helloアプリのrootディレクトリにroot.ttを追加すると"Hello!"表示がされた。
次は、SQLiteと合わせてやってみるつもり。
環境:
Windows Vista
perl 5.8(Active Perlインストール済)
Catalyst 2.0(2.1が最新)
で、書籍「ずばりわかる!Webプログラミング2.0」からPerlに慣れるべく奮闘。
114ページあたりのCPANからCatalyst入れる際に、Task-Catalystのインストールにつまづく。
エラー内容が既存ファイルの衝突とのこと、しかしそのファイルが見当たらなかったため検索。
「C:/Perl/html/site/lib/Catalyst/Helper.html」
すると、Task-CatalystでなくBundle-Catalystでもいけるようなのでこちらをインストール。
以下、'Hello'スケルトンを作成するも、障害が起こらないので良しとした。
(参考URL)http://naoya.dyndns.org/~naoya/mt/archives/001682.html
Catalystは確かにMVCモデルに従うディレクトリ構成(フォルダ名がそのままMとVとC)をしていた。
単純にControlとView部のみを対象に'Hello'アプリを作成することにする。
Root.pmを適宜修正し、Helloアプリのrootディレクトリにroot.ttを追加すると"Hello!"表示がされた。
次は、SQLiteと合わせてやってみるつもり。
登録:
コメント (Atom)