在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 3206|回复: 8

[求助] perl中数组的处理

[复制链接]
发表于 2013-12-12 19:27:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
现在有个perl数组@array = qw/1 2 2 3 4 5 5 6 6 7 7 8 9 10 10 11 11 12 13 14 15/;由数字构成的升序排列的数组,其中有些数字会出现两次,其他只出现一次。 我现在对@array进行操作,把出现2次的数字取出来放到一个新的数组@duolicated_array = qw/2 5 6 7 10 11/; 现在我想继续操作@duplicated_array,请问,如何@duplicated_array拆分成3个字符串或者数组,分别为:“2”, “5 6 7”,“10,11”,也就是如何把数组中连续的数字放到一起,单个的放到一起,谢谢了~~~~~~~表述比较啰嗦,望牛人解答~~
发表于 2013-12-12 21:12:33 | 显示全部楼层




    对数组遍历,计算$d=$array[n+1]-$array[n],

$d=0代表一对
$d=1代表顺子
$d>1代表杂牌
 楼主| 发表于 2013-12-13 09:33:27 | 显示全部楼层
回复 2# sjtusonic


    能再说的详细一点吗?这样是针对两个元素挨着的时候,如果隔一段有两个挨着,再隔一段有三个挨着,再隔一段有5个挨着,怎么分别放到不同的数组中去呢?谢谢
 楼主| 发表于 2013-12-13 09:41:58 | 显示全部楼层
写了一下,生成的杂牌数组和顺子数组,需要再进一步处理,仅仅取相邻两个值的差还不太可以。
 楼主| 发表于 2013-12-13 11:21:32 | 显示全部楼层
回复 3# chanshi634


    写了一下:能出来结果,但是数组里面会有重复的数字,请大家看看:
#!/usr/bin/perl -w
@array = qw(2 3 4 5 7 9 11 13 14 29 30 32 33 34 35 37 39 41 42 49);

my(@array_interval, @array_adjacenct, %hash);
my $i_array = 0;
for ($i = 0; $i < $#array; $i++) {
      if ($array[$i+1] - $array[$i] > 1) {
          push (@array_interval, $array[$i]) if ($array[$i] -$array[$i-1] > 1);
      } elsif ($arrar[$i+1] - $array[$i] == 1) {
          if ($i_array > 0) {
              if (($array[$i] -$array[$i-1]) == 1) {
                   $array_adjacent[$i_array] = $array_adjacent[$i_array] . "*" . "$array[$i]" . "/" . "$array[$i+1]";
                   $i_array++ if (($array[$i+2] - $array[$i+1]) > 1);
              } else {
                   $array_adjacent[$i_array] = "$array[$i]" . "/" . "$array[$i+1]";
                   $i_array++ if (($array[$i+2] - $array[$i+1]) > 1);
              }
          } else {
              $array_adjacent[$i_array] = "$array_adjacent[$i_array]" . "*" . "$array[$i]" . "/" . "$array[$i+1]";
              $i_array++ if (($array[$i+2] - $array[$i+1]) > 1);
          }  
       } else {print STDERR "Error found!"; }
}

print ....
发表于 2013-12-13 11:59:17 | 显示全部楼层


回复  chanshi634


    写了一下:能出来结果,但是数组里面会有重复的数字,请大家看看:
#!/usr/b ...
chanshi634 发表于 2013-12-13 11:21




   挺好的嘛
 楼主| 发表于 2013-12-13 12:04:46 | 显示全部楼层
回复 6# sjtusonic


    但是出来的结果里面有重复的数字,还没想好怎么去掉~~~或者是最后再单独处理一下~
发表于 2013-12-23 12:52:42 | 显示全部楼层
回复 7# chanshi634


   sort下
 楼主| 发表于 2013-12-23 14:30:15 | 显示全部楼层
回复 8# angangang3484


    哇!!!!!!!果然是版主,我后来debug的时候发现有问题,后来就是sort解决的,哈哈,版主太牛了!我改了没有再往上发,sorry,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 19:46 , Processed in 0.020074 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表