作者: 藤岡和夫
日時: 2005/10/08(12:24)
On Sat, 08 Oct 2005 12:04:54 +0900
藤岡和夫 <kazuf@...> さんwrote:

>  シュワルツ変換は、ソート対象の配列要素と配列要素から計算して得られる新
> しい要素をmapして、新しい要素をキーにソートして、元の配列要素を並び替え
> るというものです。今回の場合はソートする必要はないので(というか、フィー
> ルドの計算でソートを使っているので)、シュワルツ変換とは言えないですけど、
> それ風に書けば(^^;)、mapを使って、

 シュワルツ変換に囚われていた(^^;;;、単にmapするだけ・・・

@a=(13, 18, 8, 9, 11, 20);
@b=(15, 9, 9, 18, 25);
foreach (sort{$a <=> $b}(@a, @b)){
    $nc{$_}++;$count++;
    if($_ == $buffer){
        $na{$_} +=  $count;
    }else{
        $na{$_} = $count; 
    }
    $buffer = $_;
}
foreach (keys %na){
    $ea{$_} = $na{$_}/$nc{$_};
}
@A = map { $ea{$_} } @a;
@B = map { $ea{$_} } @b;
print '@A = (', join(", ", @A), ")\n";
print '@B = (', join(", ", @B), ")\n";

藤岡 和夫
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/