totofugaのブログ

ネットワークとかc言語、perlの話。

perl

gauss-jordan法

#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $a = [ [1, -1, 1], [2, 1, -3], [3, 2, -1], ]; my $b = [ [-5], [19], [16], ]; gauss_jordan($a, $b); print Dumper($a); print Dumper($b); sub gauss_jordan { my ($a, $b) = @_; my $…

内部探索(interpolation search)

データが均等なランダムの場合loglogNの速度になるため、 binary searchより効率がよくなるが、 一つの計算時間は増えるため、データがかなり大きい場合にのみ有効。 やってることは、binary searchのメディアンの選び方を現在のデータから 有効そうな位置を…

グラフ

グラフの内部表現で通常c言語だと エッジの数によって隣接行列か隣接リストのどっちかで表すが、 メモリと速度をあまり気にしない場合perlだと ハッシュを使った下記のような形で作るのが簡単。 my $adj; sub add_connect { my ($a, $b) = @_; $adj->{$a}->{…

ヒープ木

順位キューで挿入と探索をlogNで行いたいときに使う 二分ヒープ - Wikipedia 挿入のときは最下層の一番左に挿入して補正 取り出すときは一番上から取得 => 最下層の一番左にあったものを上に付けて補正 を行うので常に完全バランスが取れて、左からノードが…

サーバーで複数ポートを待ち受ける

socketは普通にacceptすると処理をblockしてしまうので複数のポートの待ちうけが出来ません。 acceptする前にIO->Selectのcan_readを使用することにより複数ポートの待ちうけが可能になります。 #!/usr/bin/perl use strict; use warnings; use IO::Socket; …

perl: warning: Please check that your locale settings: ワーニングの対処法

CentOSにて /etc/sysconfig/i18nで LANG="ja_JP.UTF-8" 言語設定を行った時に # perl -v perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "ja_JP.UTF-8" are …

Module::Starterから自分用のテンプレートを生成する

Module::Starter http://search.cpan.org/~xsawyerx/Module-Starter-1.60/lib/Module/Starter.pm Module::Starterをcpanからインストールするとmodule-starterコマンドが使用できるようになり、 module-starter --modules=Hoge::Fuga --distro=hoge-fuga と…

外部プログラム実行時にエラー出力と終了ステータスも取得する

外部プログラムを実行した時に出力される値には 標準出力 標準エラー出力 終了ステータス があります。 http://codepad.org/duNbERYM use strict; use warnings; print "std out print"; warn "std err print\n"; exit(99); のようなテストプログラムのすべ…