免费注册 查看新帖 |

Chinaunix

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

More than one way to do it... [复制链接]

论坛徽章:
8
技术图书徽章
日期:2013-09-30 08:51:28技术图书徽章
日期:2013-12-11 09:26:39白羊座
日期:2013-12-27 15:27:13金牛座
日期:2014-01-06 09:13:05天蝎座
日期:2014-01-21 14:23:28酉鸡
日期:2014-05-09 16:51:12卯兔
日期:2014-08-11 16:49:1515-16赛季CBA联赛之八一
日期:2017-08-14 23:24:57
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-25 09:47 |只看该作者 |倒序浏览
本帖最后由 xiumu2280 于 2014-07-25 09:47 编辑

最近收到数据,还是范围,但是是整整一列。
我需要按大小两两一组把他们进行分组,于是就想到变成二维数组的形式处理。

写程序的时候一想发现这个有很多种写法。数据如下,大神们发挥下~
  1. my @zone = reverse (
  2. 32666,
  3. 28064,
  4. 28354,
  5. 24183,
  6. 24326,
  7. 19936,
  8. 19964,
  9. 16585,
  10. 16072,
  11. 15727,
  12. 15562,
  13. 11341,
  14. 11381,
  15. 5549,
  16. );
复制代码

论坛徽章:
8
技术图书徽章
日期:2013-09-30 08:51:28技术图书徽章
日期:2013-12-11 09:26:39白羊座
日期:2013-12-27 15:27:13金牛座
日期:2014-01-06 09:13:05天蝎座
日期:2014-01-21 14:23:28酉鸡
日期:2014-05-09 16:51:12卯兔
日期:2014-08-11 16:49:1515-16赛季CBA联赛之八一
日期:2017-08-14 23:24:57
2 [报告]
发表于 2014-07-25 10:22 |只看该作者
  1. my @zone_real;
  2. foreach my $ele (0..$#zone) {
  3.         next if $ele%2;
  4.         push @zone_real,[$zone[$ele],$zone[$ele+1]];
  5. }
复制代码

论坛徽章:
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
3 [报告]
发表于 2014-07-25 21:52 |只看该作者
本帖最后由 pitonas 于 2014-07-28 06:57 编辑

这个有很多种写法。~ {:2_179:}

PART 1: 高端大气上档次
  1. sub show {
  2.     print join( ', ', map '[' . join( ', ', @$_ ) . ']', @_ ) . $/;
  3. }

  4. my @a = 1 .. 8;

  5. my @A = map [ @a[ $_, $_ + 1 ] ], grep !( $_ % 2 ), 0 .. $#a;
  6. show @A;

  7. my @B = map [ @a[ $_, $_ + 1 ] ], grep --$|, 0 .. $#a;
  8. show @B;

  9. my @C = map [ @a[ $_, $_ + 1 ] ], map $_ * 2, 0 .. $#a / 2;
  10. show @C;

  11. my @D = map { --$| ? [ @a[ $_, $_ + 1 ] ] : () } 0 .. $#a;
  12. show @D;

  13. my @E = map $_ & 1 ? () : [ @a[ $_, $_ + 1 ] ], 0 .. $#a;
  14. show @E;

  15. # destructive
  16. my @b = 1 .. 8;
  17. my @F = map [ splice @b, 0, 2 ], 0 .. $#b / 2;
  18. show @F;

  19. # destructive
  20. @ARGV = 1 .. 8;
  21. my @G = map [ shift, shift ], 0 .. $#ARGV / 2;
  22. show @G;

  23. # stupid
  24. my @H = map [split], "@a" =~ /\S+\s\S+/g;
  25. show @H;
复制代码
PART 2: 简约低调有内涵
  1. # cool
  2. my @a = 1 .. 8;
  3. # my @I = ... [[ read PART2.pl ]]
  4. # show @I;
复制代码
PART2: [ 优惠价格 : 50 积分 ]
代码只有 1 行。
  建议: 速度变身高大上小伙伴们快来 购买 吧 !!  

PART2.pl.zip (310 Bytes, 下载次数: 2, 售价: 50 可用积分)

论坛徽章:
0
4 [报告]
发表于 2014-07-29 16:07 |只看该作者
本帖最后由 afukada 于 2014-07-29 16:08 编辑

來獻醜一下
  1. print join(",",map{$r=$_;"[".join(",",map{$zone[$r*2+$_]}(0,1))."]"}(0..int($#zone/2))),"\n";
复制代码

论坛徽章:
8
技术图书徽章
日期:2013-09-30 08:51:28技术图书徽章
日期:2013-12-11 09:26:39白羊座
日期:2013-12-27 15:27:13金牛座
日期:2014-01-06 09:13:05天蝎座
日期:2014-01-21 14:23:28酉鸡
日期:2014-05-09 16:51:12卯兔
日期:2014-08-11 16:49:1515-16赛季CBA联赛之八一
日期:2017-08-14 23:24:57
5 [报告]
发表于 2014-07-31 09:51 |只看该作者
要的就是你~~回复 3# pitonas


   

论坛徽章:
8
技术图书徽章
日期:2013-09-30 08:51:28技术图书徽章
日期:2013-12-11 09:26:39白羊座
日期:2013-12-27 15:27:13金牛座
日期:2014-01-06 09:13:05天蝎座
日期:2014-01-21 14:23:28酉鸡
日期:2014-05-09 16:51:12卯兔
日期:2014-08-11 16:49:1515-16赛季CBA联赛之八一
日期:2017-08-14 23:24:57
6 [报告]
发表于 2014-07-31 09:57 |只看该作者
小伙伴写程序记得用 use strict啊回复 4# afukada


   

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
7 [报告]
发表于 2014-07-31 15:15 |只看该作者
how about it?
  1. my @zone_real;
  2. push(@zone_real, [splice(@zone, 0, 2)]) while @zone;
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP