「Software Factories」とは、開発の自動化を推進する次世代開発基盤技現在の仕事内容と直接大きくは関わらない方向性なんだけど、
術のこと。効率的な工業生産の手法をソフトウェア開発に適用し、ソフト
ウェア開発を自動化する技術です。本書は、そのSoftware Factoriesの
手法とプラクティスを解説した待望の1冊。
#!/usr/bin/perl -w use strict; my $t = "mississippi"; # Text - 対象テキスト my @sa = (0..length($t)-1); # Suffix Array - 初期設定 ### Suffix Array の作成 @sa = sort {substr($t, $a) cmp substr($t, $b)} @sa; # テスト出力 for (0..$#sa) { print "$_ $sa[$_] ",substr($t, $sa[$_]),"\n"; } ### バイナリサーチによる Suffix Array の検索 my $k = "ppi"; # Key - 検索キー my ($l, $u) = (0, $#sa); while ($l <= $u) { my $i = int(($l + $u)/2); my $c = $k cmp substr($t, $sa[$i], length($k)); if ($c > 0) { $l = $i + 1; } elsif ($c < 0) { $u = $i - 1; } else { print qq("$k" is found at $sa[$i]\n); last; } }
% perl sa.pl 0 10 i 1 7 ippi 2 4 issippi 3 1 ississippi 4 0 mississippi 5 9 pi 6 8 ppi 7 6 sippi 8 3 sissippi 9 5 ssippi 10 2 ssissippi "ppi" is found at 8