- 论坛徽章:
- 5
|
本帖最后由 pitonas 于 2014-09-06 10:57 编辑
我的理解 ~ {:2_172:}- #!/usr/bin/perl
- use 5.010;
- my @A;
- my @B = map [ @_ = split, ~~ grep /-/, @_[ 1, 2, 2 ] ], <DATA>;
- for my $i ( 1 .. $#B ) {
- $A[$i][$i] = SA($i, $i);
- $A[$_][$i] = $A[$i][$_] = SA( $i, $_ ) for $i + 1 .. $#B;
- }
- say join "\t", splice @$_, 1 for splice @A, 1;
- sub SA {
- my ( $i, $j, $k ) = ( @_, $B[ $_[-1] ][-1] );
- $i == $j
- ? ( $k ? 1 : 1 + $A[ $B[$i][1] ][ $B[$i][2] ] * 0.5 )
- : ( $k == 0 ? $A[$i][ $B[$j][1] ] + $A[$i][ $B[$j][2] ] :
- $k == 1 ? $A[$i][ $B[$j][2] ] :
- $k == 2 ? $A[$i][ $B[$j][1] ] : 0 ) * 0.5
- }
复制代码 |
|