[Tokyo.pm] JUS感想
Kazumasa Utashiro
utashiro @ iij.ad.jp
1999年 10月 6日 (水) 06:25:30 CDT
解説の部分は間違いありません。わかりやすく書く努力はあえてしてないんで
すが、今津さんでも時間がかかったすると、わかりにくすぎでしたね。
ただ、
From: IMAZU Hideyo <himazu @ ms.com>
Subject: [Tokyo.pm] Re: [Tokyo.pm] JUS感想
Date: Wed, 06 Oct 1999 18:47:23 +0900
> シュワルツ変換のキモは比較のための計算量を最低限にするといいうこと
> ですから、
というのは違うと思いますよ。僕が指摘するまでもなく、すでに perlfaq4 に
は、次のような記述があります。
If you have a complicated function needed to pull out the
part you want to sort on, then don't do it inside the sort
function. Pull it out first, because the sort BLOCK can
be called many times for the same element. Here's an
example of how to pull out the first word after the first
number on each item, and then sort those words case-
insensitively.
@idx = ();
for (@data) {
($item) = /\d+\s*(\S+)/;
push @idx, uc($item);
}
@sorted = @data[ sort { $idx[$a] cmp $idx[$b] } 0 .. $#idx ];
Which could also be written this way, using a trick that's
come to be known as the Schwartzian Transform:
@sorted = map { $_->[0] }
sort { $a->[1] cmp $b->[1] }
map { [ $_, uc((/\d+\s*(\S+)/ )[0] ] } @data;
キモは、やはり trick の部分ではないでしょうか。JAPH と同じで。
--utashiro
Tokyo-pm メーリングリストの案内