プログラミング

ディレクトリエントリの読み方

Windowsでは、ディレクトリ名にスペースを許容するため、glob関数を使うと困ったことになります。 use strict; use warnings; use Cwd; print join("\n", glob(getcwd)), "\n";マイドキュメントの上で実行した場合の結果は以下の通り。glob関数は複数のパタ…

驚いた素数

とても驚いた素数の数え上げ。 http://log.ttsky.net/article/19432981.html http://www.nslabs.jp/haskell_vs_ruby.rhtml Perlに移してみました。 use strict; use warnings; # # See: # http://log.ttsky.net/article/19432981.html # http://www.nslabs.j…

第12夜:ピタゴラスの宮殿

数の悪魔*1を題材にSchemeの勉強の最終回です。三角数の計算方法です。 よろしい、ドリス。じゃ、よく聞いて。前に座ってる1番目の生徒が、ええっと、アルバートだよね、そう、アルバートがパンを1個もらうことにする。つぎに2番目の生徒のベッティーナは、…

第11夜:証明はむずかしい

数の悪魔*1を題材にして、Schemeの勉強の11回目です。 111...のように1が並んだ数の2乗は、123..321というように対称性があって美しい数字になるというのが、第1夜の数の悪魔の主張でした。ですが、11個並べたら、その数がおかしくなりました。 突然、答えが…

第10夜:雪片のマジック

数の悪魔*1を題材にSchemeプログラミング10回目。五角形とペンタグラムに見る黄金比です。 五角星は5本の赤い線でできている。その線をどれか1本えらんでこらん。その長さはどうなっているか。ちょうど1.618……クァン。それ以上でも、それ以下でもない - 数の…

第9夜:はてしない物語

数の悪魔*1を題材にSchemeの勉強をしています。今回は数列です。 こんな具合に、どんどん大きくなっていく。思ったよりも速く。ところで、ほかはどうだ。見おぼえがあるかね? - 数の悪魔 (define (sequence s proc) (define (sequence-iter c n m l) (if (>…

第8夜:いったい何通りあるの?

数の悪魔*1を題材にして、プログラミングの勉強中。その8回目。階乗と組合せです。 「アルファベット順がいい」。ドリスが言った。「アルバートAlbertがAで、ベッティーナBettinaがBで、チャーリーCharlieがCで、ドリスDorisがD。一番簡単でしょ。」「まあ、…

第7夜:パスカルの三角形

数の悪魔*1を題材に、schemeの勉強その7回目、パスカルの三角形です。 普通の三角形じゃない。モニターなんだ。画面になる。サイコロたちの心には電気が通ってるが、それはなんのためか。スイッチを入れてやれば、明るくなるんだ - 数の悪魔 (define (pascal…

第6夜:にぎやかなウサギ時計

数の悪魔*1を題材にSchemeプログラミングの6回目です。今回は、フィボナッチのうさぎのつがいです。 「一ヶ月後、子うさぎのつがいは親うさぎのつがいになり、次の一ヶ月後、親うさぎのつがいは子うさぎのつがいを産むようになります。今、子うさぎが一つが…

第5夜:ヤシの実で三角形をつくる

数の悪魔*1の中から題材を取り、Schemeプログラミングしてます。その5回目。三角数です。 (define (triangler-number s) (define (decorate n m) (format #f "~3D = ~2D + ~3D : ~V,,,VA ~%" (+ n m) n m n #\o "")) (define (tri-iter n m l) (if (> n s) (…

第4夜:わけのわからない数と大根

数の悪魔*1を題材にプログラミングしてます。今回は大根です。本では計算機で出していました。 じゃ、このトリックの名前、ぜひおぼえておこう。「後ろにホップする」じゃなくて、「大根を抜く」っていうんだ。ほら、地面から根を引き抜くみたいに - 数の悪…

第3夜:素数の秘密

数の悪魔*1から題材を取ってプログラミングの三回目。素数です。本では、素数を素直なエラトステネスの篩を使って確かめていました。 もちろん。だれにも。つまりな、数を見ただけじゃ、それが素数か、素数でないか、区別がつかん。だれも最初からはわからな…

第2夜:0はえらい

数の悪魔*1を題材にschemeプログラミング第二回です。 5の1乗、5の2乗、5の3乗。これをな、5をホップさせる、と言うんじゃ。わかったかな。おなじことを10でやると、もっと簡単だ。計算機なんかなくったって、すらすらできる。10を1回ホップさせれば、そのま…

第1夜:1の不思議

Schemeの肩慣らしに数の悪魔*1から題材を取り、プログラミングしてみることにしました。数の悪魔―算数・数学が楽しくなる12夜作者: ハンス・マグヌスエンツェンスベルガー,丘沢静也出版社/メーカー: 晶文社発売日: 2000/04/01メディア: 単行本(ソフトカバー…

Perl5.12.0の新機能

http://perldoc.perl.org/5.12.0/perl5120delta.html とりあえず、押さえておいた方が良さそうなものをチョイスです。 colinux(Debian/Lenny)でコンパイル/インストールしたものを使ってみました。 Yada Yada Operator Blah-Blah-Blahのような演算子(?)。あ…

DateTimeが入らない

ActivePerlのppmでDateTimeがインストールできないトラブル。 http://www.experts-exchange.com/Programming/Languages/Scripting/Perl/Q_24773247.html C:/Perl/lib/ActivePerl/PPM/Package.pm 169行のpush(@dunno, $p);をコメントアウト。 ppmのGUIでイン…

Image::Magickをインストール

今更ですがWindows版をインストールしました。 http://www.imagemagick.org/script/index.php http://www.imagemagick.org/script/binary-releases.php Windows、dll版をダウンロードします インストーラの途中、Select Additional Tasksで"Install Perlmagi…

麻雀の続き

あれからCとSchemeに移植してました。行数の比較。 Perl 172行 C 256行 Scheme 114行 標準ライブラリまでの仕様を使ってみて、こんな感じになりました(Schemeは初心者なので凝ったことはしてません)。Schemeの処理系はGaucheを使ってみたのですが、予想外(失…

麻雀でマジじゃん

聴牌形の探索。一日考えたけど、びしっと決まる方法が考え付かず。 use strict; use warnings; package Local::Set; use List::MoreUtils; =begin 牌操作を扱うクラスです。いらない手間かも。 =cut sub new { my ($class, @array) = @_; return bless { set…

迷路に迷う

use strict; use warnings; package Local::Maze; sub new { my ($class, $maze) = @_; return bless { maze => [ map{[ split // ]} split(/^/, $maze) ], ans => [], }, $class; } sub start { my ($self) = @_; for(my $y = 0; $y < @{$self->{maze}}; $y…

円描画

はてぶを見ていて懐かしくなったので、久しぶりに。 use strict; use warnings; package Local::TinyPlotter; sub new { my ($class, $xs, $ys) = @_; $xs ||= 20; $ys ||= 20; my $self = bless{ xs => $xs, ys => $ys, space => [], }, $class; $self->cle…

colinux(Debian)でgo

colinux(Debian)にGoを入れてみる手順です。 インストール rootでeasy_installとmercurialと、必要なコマンドとライブラリをインストールします。 # aptitude install python-dev # aptitude install python-setuptools python-docutils # easy_install merc…

"ldconfig -v"で自分の足を撃つ

http://www.mail-archive.com/freebsd-questions@freebsd.org/msg176744.html ldconfig -vの謎が解けたのでshooting oneself in the foot with "ldconfig -v"を訳してみました。 結論は、オプションをつけない"ldconfig" は "ldconfig -R"と等価で、"ldconfi…

vim omnifunc

vimの補完が便利になりそうだったのでhttp://vim-users.jp/2009/11/hack96/を設定してみたのですが、上手くいかず。 シンタックスハイライトがチカチカして見にくかったので、元の設定でsyntax clearなんてことをやってたためでした。(syntaxを参照してるん…

install Plagger

CoLinux with Debianで、Plaggerのインストールに挑戦です。以下、問題のあったモジュールです。 XML::Liberal XML::Liberalをインストールしようとするとテストで失敗します。直接の原因は、XML::LibXMLバージョン1.67からXML::LibXML::Errorが導入されてエ…

install XML::LibXML::Common

CoLinux(中身はDebian)に色々入れることになり、CPANでインストールしていたのですが、XML系モジュールが入らず。原因はXML::LibXML::Commonでした。 running xml2-config... failed using fallback values for LIBS and INC options: LIBS='-L/usr/local/li…

Windows環境のActivePerlのencodingモジュールと改行の関係

Windowsの改行コードは"\x0d\x0a"、Unixでは"\x0a"などと異なりますが、Perlでは同じスクリプトを複数の環境でも動かせるように、改行コードを"\n"で扱うことができるようになっています。 実際のWindows版ActivePerlでは以下のような変換を行っています。 …

JSONバリデータ

3時間30分ぐらいでした。大急ぎで書いたのでエラーメッセージがアレです。 (実際は小一時間バグに悩まされてました。) package Local::Validator; use strict; use warnings; use utf8; my $digit = qr/[\x30-\x39]/; my $hexdig4 = qr/[\x30-\x39\x41-\x46\…

2の平方根をけいさん!

2の平方根とは 面積2の正方形の一辺を求めること。x^2 = 2のxを求める。 某巨大掲示板の某スレッドがにぎわっていたので、色々調べてみましたところ、本当に色々ありました。勉強になったのでまとめてみました。 参考: 2の平方根 - Wikipedia wolfram alpha …

すっかり忘れていたV8をMinGWでインストール

Google謹製JavascriptエンジンのV8をインストールするのに、Windows環境ではVisual C++などが必要だと思っていましたが、もしかしてと思いMinGWを使ってみたところ、問題無くコンパイル終了。びっくりしました。 環境: Python 2.6.2 scons v1.2.0.r3842 g++ …