免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: mingoing
打印 上一主题 下一主题

求教各位大大们,这个问题用perl怎么处理 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2014-02-28 09:11 |只看该作者
快了,貌似[13250000, 13950000]    = -911.185874还有点问题,因为[13250000, 13950000] 是在区间[13200000 14100000]内的,所以直接可以确定为-844.211609。{:2_172:} 回复 10# pitonas


   

论坛徽章:
0
12 [报告]
发表于 2014-02-28 09:16 |只看该作者
我研究一下 回复 9# xiumu2280


   

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
13 [报告]
发表于 2014-02-28 10:05 |只看该作者
{:2_172:} 多谢提醒
  1. [8650000, 9750000]      = -634.355527
  2. [13250000, 13950000]    = -844.211609
  3. [17650000, 18850000]    = -831.1381455
复制代码
  1. #!/usr/bin/perl

  2. my @range = (
  3.           [ 8650000, 9750000 ],
  4.           [ 13250000, 13950000 ],
  5.           [ 17650000, 18850000 ],
  6. );
  7.          
  8. @range = sort { $a->[0] <=> $b->[0] } @range;
  9. my $index = 0;
  10. my @data  = map { [split] } <DATA>;

  11. range: for my $R (@range) {
  12.     my $L = $R->[1] - $R->[0];
  13.     my $ave;
  14.     for my $i ( $index .. $#data ) {
  15.         next if $R->[0] > $data[$i][1];
  16.         $index = $i;
  17.         my ( $r1, $r2, $v ) = @{ $data[$i] };
  18.         if ( $R->[1] <= $r2 ) {
  19.             print "[$R->[0], $R->[1]]\t= $v\n";
  20.             next range;
  21.         }
  22.         $ave += ( $r2 - $R->[0] ) / $L * $v;

  23.         for my $j ( $index + 1 .. $#data ) {
  24.             my ( $r1, $r2, $v ) = @{ $data[$j] };
  25.             $ave += ( $r2 - $r1 ) / $L * $v and next if $R->[1] > $r2;
  26.             $ave += ( $R->[1] - $r1 ) / $L * $v;
  27.             print "[$R->[0], $R->[1]]\t= $ave\n";
  28.             next range;
  29.         }
  30.     }
  31. }

  32. __DATA__
  33. 7400000 8200000  -747.871582
  34. 8200000 8500000  -311.464386
  35. 8500000 9100000  -552.063538
  36. 9100000 9800000  -691.326904
  37. 9800000 10700000  -860.887024
  38. 10700000 11500000  -775.908630
  39. 11500000 12300000  -748.672424
  40. 12300000 13200000  -868.078918
  41. 13200000 14100000  -844.211609
  42. 14100000 14600000  -531.665039
  43. 14600000 15500000  -934.396790
  44. 15500000 16300000  -808.178162
  45. 16300000 17500000  -1163.265747
  46. 17500000 17900000  -425.282043
  47. 17900000 18900000  -937.942383
  48. 18900000 19600000  -743.132019
  49. 19600000 20800000  -1200.120850
  50. 20800000 21100000  -285.289520
复制代码
回复 11# mingoing


   

论坛徽章:
0
14 [报告]
发表于 2014-02-28 11:05 |只看该作者
哥们太赞了,学习了{:2_172:} 回复 13# pitonas


   

论坛徽章:
8
双子座
日期:2013-08-31 07:37:12金牛座
日期:2013-09-09 18:49:12处女座
日期:2013-09-23 11:43:14处女座
日期:2013-10-09 19:48:21狮子座
日期:2014-03-24 18:22:12丑牛
日期:2014-04-22 22:07:51申猴
日期:2014-06-12 21:54:13双鱼座
日期:2014-06-13 21:52:31
15 [报告]
发表于 2014-02-28 20:29 |只看该作者
来个想要求出结果的栗子
回复 1# mingoing


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP