免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3784 | 回复: 10
打印 上一主题 下一主题

【已解决】如何获取连续10个及以上值大于等于20的的起始位置? [复制链接]

论坛徽章:
7
巳蛇
日期:2013-11-28 09:22:59天秤座
日期:2014-10-25 15:40:452015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之德黑兰石油
日期:2015-07-15 08:46:452015亚冠之平阳省
日期:2015-11-08 16:27:53白银圣斗士
日期:2015-11-14 09:58:12
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-11-14 14:03 |只看该作者 |倒序浏览
本帖最后由 b114213903 于 2015-11-16 16:33 编辑

有如下数据,想获得连续10个值大于等于20的的起始位置(位置从1开始计算,如:示例中位置为41);
  1. 5 3 3 4 5 7 4 4 18 4 9 4 4 5 4 5 4 4 9 4 4 9 9 7 18 9 25 15 9 13 17 8 5 5 4 8 11 38 31 11 33 32 20 47 38 23 51 42 42 47 38 39 39 47 39 32 32 51 28 51 34 59 62 34 44 59 59 56 47 51 51 49 56 49 24 59 59 51 24 62 43 59 49 49 43 36 59 56 59 46 46 34 49 62 49 59 51 59 59 59 59 49 43 62 49 49 62 50 62 62 62 50 50 24 56 59 51 49 62 30 59 43 23 44 39 49 62 54 59 59 62 62 50 51 51 59 59 49 59 59 51 59 59 59 51 59 62 51 43 46 56 49 59 56 56 59 50 56 56 59 59 56 59 51 54 28 46 38 48 23 56 43 51 59 62 39 59 43 59 49 51 59 59 62 62 59 59 59 62 59 56 59 59 49 34 59 59 50 43 51 49 56 59 44 26 46 44 59 56 50 46 59 40 33 40 59 56 51 54 43 62 62 59 62 51 62 59 59 59 59 62 51 51 59 59 59 59 59 46 46 51 49 59 50 56 62 59 62 59 62 59 59 62 59 49 59 59 59 62 49 51 56 59 59 59 59 59 59 56 59 62 59 59 62 56 54 48 50 59 59 59 46 56 56 59 49 39 49 40 49 51 59 49 59 49 46 43 59 59 59 59 39 59 59 59 59 62 62 62 59 62 46 46 48 36 62 51 56 51 43 59 62 59 59 59 62 62 59 62 62 62 59 62 59 49 62 59 59 59 59 34 51 49 51 49 59 59 59 59 59 46 43 43 39 62 56 59 59 59 62 50 59 59 56 56 51 43 51 59 59 48 33 43 59 46 51 49 44 44 56 50 43 62 56 59 59 62 56 50 56 34 59 59 62 51 50 59 59 59 46 59 62 51 59 59 59 59 44 62 62 62 62 59 51 43 24 46 38 62 56 44 43 62 44 51 56 59 59 59 62 50 62 42 62 50 56 47 51 51 56 27 56 62 47 62 56 56 56 62 56 39 51 38 51 51 44 51 47 44 37 38 37 38 41 39 47 56 47 43 50 37 56 56 56 56 51 51 37 24 39 47 50 37 37 56 47 56 56 51 56 62 62 56 56 47 38 54 56 56 47 41 56 56 56 56 62 56 56 47 41 54 56 42 47 56 23 31 56 38 56 47 33 37 41 42 43 42 43 46 30 52 54 52 46 39 46 52 62 62 62 62 50 39 41 52 38 43 62 48 62 42 43 45 30 54 47 42 45 52 36 58 45 33 45 46 42 54 47 41 42 39 27 54 52 54 41 36 42 35 36 35 47 54 33 31 37 26 25 19 52 41 42 52 54 54 54 58 45 42 47 38 45 42 54 54 45 27 54 47 51 41 49 48 52 42 54 51 50 58 46 53 53 50 34 54 52 50 50 25 36 51 50 48 32 22 32 18 53 52 49 51 41 51 37 58 29 40 35 25 46 41 49 49 50 31 39 58 53 39 28 44 51 35 50 53 51 42 33 39 46 37 53 40 39 50 50 17 31 50 58 50 39 32 43 44 50 49 42 54 39 39 37 39 54 40 37 39 49 26 44 44 40 54 40 32 42 30 41 46 42 39 49 54 38 38 52 28 25 10 46 31 19 37 37 33 25 33 37 51 54 37 18 41 34 52 22 22 31 40 18 25 53 53 37 33 35 25 53 32 42 53 47 27 31 46 45 41 35 15 46 12 41 26 43 31 21 28 29 46 31 30 29 27 22 26 46 40 46 25 46 13 32 32 31 46 30 34 42 15 37 46 25 33 37 31 27 11 32 26 24 24 31 37 31 18 31 32 29 18 31 31 25 29 18 43 31 30 34 26 31 15 20 23 36 24 11 5 14 36 35 22 15 9 20 38 14 17 18 19 6 14 27 31 26 24 16 38 26 24 24 28 25 16 36 31 9 48 16 28 28 32 19 33 27 28 21 17 9 21 6 4 7 17 23 20 10 21 22 14 24 24 25 27 12 28 43 27 13 8 15 10 24 12 18 20 10 21 6 20 11 8 16 3 11 18 18 7 11 15 6 23 10 31 4 3 5 12 11 13 7 22 20 28 29 15 3 2 2 12 7 7 5 1 13 5 6 13 22 3 9 7 5 1 3 6 5 8 4 15 4 10 21 13 15 8 3 7 6 6 5 25 13 13 5 12 10 11 8 12 8 8 25 7 6 6 20 17 12 15 17 13 6 7 11 11 6 13 4 11 7 10 7 6 5
复制代码
我用的是if判断,感觉很笨拙,请大神给出修改意见!
谢谢!
  1. #!/usr/bin/perl
  2. use strict;

  3. my @qual=();
  4. while(<DATA>){
  5.         chomp;
  6.         @qual=split;
  7. }

  8. for(my $i=0;$i<@qual;$i++){
  9.         if($qual[$i]>=20 and $qual[$i+1]>=20 and $qual[$i+2]>=20 and $qual[$i+3]>=20 and $qual[$i+4]>=20 and $qual[$i+5]>=20 and $qual[$i+6]>=20 and $qual[$i+7]>=20 and $qual[$i+8]>=20 and $qual[$i+9]>=20){
  10.                 my $pos=$i+1;
  11.                 print "Pos:  $pos\n";
  12.                 last;
  13.         }
  14. }
  15. __DATA__
  16. 5 3 3 4 5 7 4 4 18 4 9 4 4 5 4 5 4 4 9 4 4 9 9 7 18 9 25 15 9 13 17 8 5 5 4 8 11 38 31 11 33 32 20 47 38 23 51 42 42 47 38 39 39 47 39 32 32 51 28 51 34 59 62 34 44 59 59 56 47 51 51 49 56 49 24 59 59 51 24 62 43 59 49 49 43 36 59 56 59 46 46 34 49 62 49 59 51 59 59 59 59 49 43 62 49 49 62 50 62 62 62 50 50 24 56 59 51 49 62 30 59 43 23 44 39 49 62 54 59 59 62 62 50 51 51 59 59 49 59 59 51 59 59 59 51 59 62 51 43 46 56 49 59 56 56 59 50 56 56 59 59 56 59 51 54 28 46 38 48 23 56 43 51 59 62 39 59 43 59 49 51 59 59 62 62 59 59 59 62 59 56 59 59 49 34 59 59 50 43 51 49 56 59 44 26 46 44 59 56 50 46 59 40 33 40 59 56 51 54 43 62 62 59 62 51 62 59 59 59 59 62 51 51 59 59 59 59 59 46 46 51 49 59 50 56 62 59 62 59 62 59 59 62 59 49 59 59 59 62 49 51 56 59 59 59 59 59 59 56 59 62 59 59 62 56 54 48 50 59 59 59 46 56 56 59 49 39 49 40 49 51 59 49 59 49 46 43 59 59 59 59 39 59 59 59 59 62 62 62 59 62 46 46 48 36 62 51 56 51 43 59 62 59 59 59 62 62 59 62 62 62 59 62 59 49 62 59 59 59 59 34 51 49 51 49 59 59 59 59 59 46 43 43 39 62 56 59 59 59 62 50 59 59 56 56 51 43 51 59 59 48 33 43 59 46 51 49 44 44 56 50 43 62 56 59 59 62 56 50 56 34 59 59 62 51 50 59 59 59 46 59 62 51 59 59 59 59 44 62 62 62 62 59 51 43 24 46 38 62 56 44 43 62 44 51 56 59 59 59 62 50 62 42 62 50 56 47 51 51 56 27 56 62 47 62 56 56 56 62 56 39 51 38 51 51 44 51 47 44 37 38 37 38 41 39 47 56 47 43 50 37 56 56 56 56 51 51 37 24 39 47 50 37 37 56 47 56 56 51 56 62 62 56 56 47 38 54 56 56 47 41 56 56 56 56 62 56 56 47 41 54 56 42 47 56 23 31 56 38 56 47 33 37 41 42 43 42 43 46 30 52 54 52 46 39 46 52 62 62 62 62 50 39 41 52 38 43 62 48 62 42 43 45 30 54 47 42 45 52 36 58 45 33 45 46 42 54 47 41 42 39 27 54 52 54 41 36 42 35 36 35 47 54 33 31 37 26 25 19 52 41 42 52 54 54 54 58 45 42 47 38 45 42 54 54 45 27 54 47 51 41 49 48 52 42 54 51 50 58 46 53 53 50 34 54 52 50 50 25 36 51 50 48 32 22 32 18 53 52 49 51 41 51 37 58 29 40 35 25 46 41 49 49 50 31 39 58 53 39 28 44 51 35 50 53 51 42 33 39 46 37 53 40 39 50 50 17 31 50 58 50 39 32 43 44 50 49 42 54 39 39 37 39 54 40 37 39 49 26 44 44 40 54 40 32 42 30 41 46 42 39 49 54 38 38 52 28 25 10 46 31 19 37 37 33 25 33 37 51 54 37 18 41 34 52 22 22 31 40 18 25 53 53 37 33 35 25 53 32 42 53 47 27 31 46 45 41 35 15 46 12 41 26 43 31 21 28 29 46 31 30 29 27 22 26 46 40 46 25 46 13 32 32 31 46 30 34 42 15 37 46 25 33 37 31 27 11 32 26 24 24 31 37 31 18 31 32 29 18 31 31 25 29 18 43 31 30 34 26 31 15 20 23 36 24 11 5 14 36 35 22 15 9 20 38 14 17 18 19 6 14 27 31 26 24 16 38 26 24 24 28 25 16 36 31 9 48 16 28 28 32 19 33 27 28 21 17 9 21 6 4 7 17 23 20 10 21 22 14 24 24 25 27 12 28 43 27 13 8 15 10 24 12 18 20 10 21 6 20 11 8 16 3 11 18 18 7 11 15 6 23 10 31 4 3 5 12 11 13 7 22 20 28 29 15 3 2 2 12 7 7 5 1 13 5 6 13 22 3 9 7 5 1 3 6 5 8 4 15 4 10 21 13 15 8 3 7 6 6 5 25 13 13 5 12 10 11 8 12 8 8 25 7 6 6 20 17 12 15 17 13 6 7 11 11 6 13 4 11 7 10 7 6 5
复制代码

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2015-11-14 14:12 |只看该作者
本帖最后由 MMMIX 于 2015-11-14 14:27 编辑

回复 1# b114213903


    用两层循环不就行了?

sub find_index {
  my ($threshold, $length, $array) = @_;

OUTTER:
  while (my ($idx, $val) = each @$array) {
    for my $offset (0 .. $length-1) {
      my $idx1 = $idx + $offset;
      if ($idx1 < @$array && $array->[$idx1] < $threshold) {
        next OUTTER;
      }
    }
    return $idx + 1;
  }
  return;
}

论坛徽章:
7
巳蛇
日期:2013-11-28 09:22:59天秤座
日期:2014-10-25 15:40:452015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之德黑兰石油
日期:2015-07-15 08:46:452015亚冠之平阳省
日期:2015-11-08 16:27:53白银圣斗士
日期:2015-11-14 09:58:12
3 [报告]
发表于 2015-11-14 14:29 |只看该作者
回复 2# MMMIX
  1. #!/usr/bin/perl
  2. use strict;
  3. my @qual=();

  4. while(<DATA>){
  5.         chomp;
  6.         @qual=split;
  7. }

  8. for(my $i=0;$i<@qual;$i++){
  9.         my $flag=0;
  10.         for (my $j=$i;$j<$i+10;$j++){
  11.                 if($qual[$j]<20){
  12.                         $flag=1;
  13.                 }
  14.         }
  15.         unless($flag){
  16.                 my $pos=$i+1;
  17.                 print "Pos:  $pos\n";
  18.                 last;
  19.         }
  20. }
复制代码

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2015-11-14 14:34 |只看该作者
回复 3# b114213903


    你这是没有开 warning 的习惯呀

论坛徽章:
7
巳蛇
日期:2013-11-28 09:22:59天秤座
日期:2014-10-25 15:40:452015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:53:172015亚冠之德黑兰石油
日期:2015-07-15 08:46:452015亚冠之平阳省
日期:2015-11-08 16:27:53白银圣斗士
日期:2015-11-14 09:58:12
5 [报告]
发表于 2015-11-14 14:38 |只看该作者
回复 4# MMMIX


    您看的很对,哈哈

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
6 [报告]
发表于 2015-11-14 16:41 |只看该作者
本帖最后由 sunzhiguolu 于 2015-11-14 16:42 编辑

回复 1# b114213903
转换一个视角, 试下:
#!/usr/bin/perl
use strict;
use warnings;

if (<> =~ m/(?:[2-9][0-9]\s+){10}/){
        my $sAB = (split /\s+/, $` . $&);
        my $sB = (split /\s+/, $&);
        printf "%d\n", $sAB - $sB + 1;
}

论坛徽章:
0
7 [报告]
发表于 2015-11-14 19:41 |只看该作者
回复 1# b114213903
  1. my @str = split ' ', <DATA>;
  2. my ( $COUNT, $MIN )   = ( 10, 20 );
  3. my ( $count, $found ) = ( 0,  'not found' );

  4. for my $i ( 0 .. $#str ) {
  5.     if ( $str[$i] < $MIN ) {
  6.         $count = 0;
  7.     }
  8.     elsif ( ++$count == $COUNT ) {
  9.         $found = $i + 1 - $COUNT + 1;
  10.         last;
  11.     }
  12. }

  13. print $found;

  14. __DATA__
  15. 5 3 3 4 5 7 4 4 18 4 9 4 4 5 4 5 4 4 9 4 4 9 9 7 18 9 25 15 9 13 17 8 5 5 4 8 11 38 31 11 33 32 20 47 38 23 51 42 42 47 38 39 39 47 39 32 32 51 28 51 34 59 62 34 44 59 59 56 47 51 51 49 56 49 24 59 59 51 24 62 43 59 49 49 43 36 59 56 59 46 46 34 49 62 49 59 51 59 59 59 59 49 43 62 49 49 62 50 62 62 62 50 50 24 56 59 51 49 62 30 59 43 23 44 39 49 62 54 59 59 62 62 50 51 51 59 59 49 59 59 51 59 59 59 51 59 62 51 43 46 56 49 59 56 56 59 50 56 56 59 59 56 59 51 54 28 46 38 48 23 56 43 51 59 62 39 59 43 59 49 51 59 59 62 62 59 59 59 62 59 56 59 59 49 34 59 59 50 43 51 49 56 59 44 26 46 44 59 56 50 46 59 40 33 40 59 56 51 54 43 62 62 59 62 51 62 59 59 59 59 62 51 51 59 59 59 59 59 46 46 51 49 59 50 56 62 59 62 59 62 59 59 62 59 49 59 59 59 62 49 51 56 59 59 59 59 59 59 56 59 62 59 59 62 56 54 48 50 59 59 59 46 56 56 59 49 39 49 40 49 51 59 49 59 49 46 43 59 59 59 59 39 59 59 59 59 62 62 62 59 62 46 46 48 36 62 51 56 51 43 59 62 59 59 59 62 62 59 62 62 62 59 62 59 49 62 59 59 59 59 34 51 49 51 49 59 59 59 59 59 46 43 43 39 62 56 59 59 59 62 50 59 59 56 56 51 43 51 59 59 48 33 43 59 46 51 49 44 44 56 50 43 62 56 59 59 62 56 50 56 34 59 59 62 51 50 59 59 59 46 59 62 51 59 59 59 59 44 62 62 62 62 59 51 43 24 46 38 62 56 44 43 62 44 51 56 59 59 59 62 50 62 42 62 50 56 47 51 51 56 27 56 62 47 62 56 56 56 62 56 39 51 38 51 51 44 51 47 44 37 38 37 38 41 39 47 56 47 43 50 37 56 56 56 56 51 51 37 24 39 47 50 37 37 56 47 56 56 51 56 62 62 56 56 47 38 54 56 56 47 41 56 56 56 56 62 56 56 47 41 54 56 42 47 56 23 31 56 38 56 47 33 37 41 42 43 42 43 46 30 52 54 52 46 39 46 52 62 62 62 62 50 39 41 52 38 43 62 48 62 42 43 45 30 54 47 42 45 52 36 58 45 33 45 46 42 54 47 41 42 39 27 54 52 54 41 36 42 35 36 35 47 54 33 31 37 26 25 19 52 41 42 52 54 54 54 58 45 42 47 38 45 42 54 54 45 27 54 47 51 41 49 48 52 42 54 51 50 58 46 53 53 50 34 54 52 50 50 25 36 51 50 48 32 22 32 18 53 52 49 51 41 51 37 58 29 40 35 25 46 41 49 49 50 31 39 58 53 39 28 44 51 35 50 53 51 42 33 39 46 37 53 40 39 50 50 17 31 50 58 50 39 32 43 44 50 49 42 54 39 39 37 39 54 40 37 39 49 26 44 44 40 54 40 32 42 30 41 46 42 39 49 54 38 38 52 28 25 10 46 31 19 37 37 33 25 33 37 51 54 37 18 41 34 52 22 22 31 40 18 25 53 53 37 33 35 25 53 32 42 53 47 27 31 46 45 41 35 15 46 12 41 26 43 31 21 28 29 46 31 30 29 27 22 26 46 40 46 25 46 13 32 32 31 46 30 34 42 15 37 46 25 33 37 31 27 11 32 26 24 24 31 37 31 18 31 32 29 18 31 31 25 29 18 43 31 30 34 26 31 15 20 23 36 24 11 5 14 36 35 22 15 9 20 38 14 17 18 19 6 14 27 31 26 24 16 38 26 24 24 28 25 16 36 31 9 48 16 28 28 32 19 33 27 28 21 17 9 21 6 4 7 17 23 20 10 21 22 14 24 24 25 27 12 28 43 27 13 8 15 10 24 12 18 20 10 21 6 20 11 8 16 3 11 18 18 7 11 15 6 23 10 31 4 3 5 12 11 13 7 22 20 28 29 15 3 2 2 12 7 7 5 1 13 5 6 13 22 3 9 7 5 1 3 6 5 8 4 15 4 10 21 13 15 8 3 7 6 6 5 25 13 13 5 12 10 11 8 12 8 8 25 7 6 6 20 17 12 15 17 13 6 7 11 11 6 13 4 11 7 10 7 6 5
复制代码

评分

参与人数 1信誉积分 +10 收起 理由
substr函数 + 10 很给力!

查看全部评分

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
8 [报告]
发表于 2015-11-14 21:34 |只看该作者
回复 7# Okelani
您的思路非常棒!

   

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
9 [报告]
发表于 2015-11-14 21:36 |只看该作者
回复 2# MMMIX
像您学习了.

   

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
10 [报告]
发表于 2015-11-15 21:10 |只看该作者
回复 1# b114213903


如何获取连续10个及以上值大于等于20的的起始位置?

LINE:
while(<DATA>){
  chomp;
  my $sCnt = 0;
  my $sPos = 0;
  my $sMatch = 0;
  foreach(split){
    $sPos++;
    if($_ < 20){
      $sCnt = 0;
      next;
    }
    $sCnt++;
    $sMatch = $sPos if($sCnt == 1);
    if($sCnt == 10){
      print "Pos: $sMatch\n";
      next LINE;
    }
  }
}

__DATA__
5 3 3 4 5 7 4 ...


评分

参与人数 1信誉积分 +10 收起 理由
substr函数 + 10 很给力!

查看全部评分

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP