- 论坛徽章:
- 5
|
{:2_172:} 多谢提醒- [8650000, 9750000] = -634.355527
- [13250000, 13950000] = -844.211609
- [17650000, 18850000] = -831.1381455
复制代码- #!/usr/bin/perl
- my @range = (
- [ 8650000, 9750000 ],
- [ 13250000, 13950000 ],
- [ 17650000, 18850000 ],
- );
-
- @range = sort { $a->[0] <=> $b->[0] } @range;
- my $index = 0;
- my @data = map { [split] } <DATA>;
- range: for my $R (@range) {
- my $L = $R->[1] - $R->[0];
- my $ave;
- for my $i ( $index .. $#data ) {
- next if $R->[0] > $data[$i][1];
- $index = $i;
- my ( $r1, $r2, $v ) = @{ $data[$i] };
- if ( $R->[1] <= $r2 ) {
- print "[$R->[0], $R->[1]]\t= $v\n";
- next range;
- }
- $ave += ( $r2 - $R->[0] ) / $L * $v;
- for my $j ( $index + 1 .. $#data ) {
- my ( $r1, $r2, $v ) = @{ $data[$j] };
- $ave += ( $r2 - $r1 ) / $L * $v and next if $R->[1] > $r2;
- $ave += ( $R->[1] - $r1 ) / $L * $v;
- print "[$R->[0], $R->[1]]\t= $ave\n";
- next range;
- }
- }
- }
- __DATA__
- 7400000 8200000 -747.871582
- 8200000 8500000 -311.464386
- 8500000 9100000 -552.063538
- 9100000 9800000 -691.326904
- 9800000 10700000 -860.887024
- 10700000 11500000 -775.908630
- 11500000 12300000 -748.672424
- 12300000 13200000 -868.078918
- 13200000 14100000 -844.211609
- 14100000 14600000 -531.665039
- 14600000 15500000 -934.396790
- 15500000 16300000 -808.178162
- 16300000 17500000 -1163.265747
- 17500000 17900000 -425.282043
- 17900000 18900000 -937.942383
- 18900000 19600000 -743.132019
- 19600000 20800000 -1200.120850
- 20800000 21100000 -285.289520
复制代码 回复 11# mingoing
|
|