免费注册 查看新帖 |

Chinaunix

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

如何生成这种固定格式的数组? [复制链接]

论坛徽章:
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
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-09-13 16:18 |只看该作者 |倒序浏览
本帖最后由 sunzhiguolu 于 2016-09-13 17:44 编辑

代码如下:
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my @aSeq = 0 .. 4;
  5. my @aPos = (
  6.     [0, 5, 10, 15],
  7.     [1, 6, 11, 16],
  8.     [2, 7, 12, 17],
  9.     [3, 8, 13, 18],
  10.     [4, 9, 14, 19],
  11. );

  12. print "@$_\n" for @aPos;
复制代码

怎样能够快速的将 @aSeq 数组转换成 @aPos 格式的数组, 谢谢大家.

论坛徽章:
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
2 [报告]
发表于 2016-09-13 17:04 |只看该作者
本帖最后由 sunzhiguolu 于 2016-09-13 17:42 编辑

弄了一个, 看着好像挺复杂 有没有简单一点的版本, 谢谢大家...
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my @aSeq = 0 .. 4;
  5. my @aPos = [0, 5, 10, 15];
  6. foreach my $idx (1 .. $#aSeq){
  7.     $aPos[$idx][$_] = ($aPos[$idx - 1][$_] + 1) for 0 .. $#{$aPos[0]};
  8. }

  9. print "@$_\n" for @aPos;
复制代码

论坛徽章:
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
3 [报告]
发表于 2016-09-13 17:13 |只看该作者
本帖最后由 sunzhiguolu 于 2016-09-13 17:44 编辑

如果去除下面这行代码, 还能得到 @aPos 数组吗?
  1. my @aPos = [0, 5, 10, 15];
复制代码

论坛徽章:
1
处女座
日期:2014-12-12 10:55:00
4 [报告]
发表于 2016-09-13 17:18 |只看该作者
路过,看到大神,膜拜一下

论坛徽章:
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
5 [报告]
发表于 2016-09-13 17:55 |只看该作者
没啥好的方法了吗?
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my @aSeq = 0 .. 4;
  5. my @aPos;
  6. foreach my $idx (0 .. $#aSeq){
  7.     my @aT = my $n = $idx;
  8.     push (@aT, map {$n += 5} 0 .. 2);
  9.     push (@aPos, \@aT);
  10. }

  11. print "@$_\n" for @aPos;
复制代码

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
6 [报告]
发表于 2016-09-13 23:13 |只看该作者
你是要做什么?二维数组转置?

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
7 [报告]
发表于 2016-09-13 23:15 |只看该作者
本帖最后由 104359176 于 2016-09-13 23:19 编辑

  1. > (transpose (explode (sequence 1 16) 4))
  2. ((1 5 9 13) (2 6 10 14) (3 7 11 15) (4 8 12 16))
复制代码

论坛徽章:
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 [报告]
发表于 2016-09-13 23:55 |只看该作者
回复 7# 104359176
大神 这个代码怎么运行?

论坛徽章:
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
9 [报告]
发表于 2016-09-14 07:06 |只看该作者
回复 5# sunzhiguolu


$ perl a2.pl
0 5 10 15 20 25 30 35
1 6 11 16 21 26 31 36
2 7 12 17 22 27 32 37
3 8 13 18 23 28 33 38
4 9 14 19 24 29 34 39

$ cat  a2.pl
#!/usr/bin/perl
use strict;
use warnings;

my $sSeq = 4;   # 0 .. 4
my $sNum = 7;  # 0 .. 7
my @aPos = map{my $x=$_; [ map {$x+$_*($sSeq+1)}(0..$sNum) ] } (0..$sSeq);

print "@$_\n" for @aPos;

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
10 [报告]
发表于 2016-09-14 08:00 |只看该作者
用 newlisp, 在 repl 中:

  1. > newlisp
  2. newLISP v.10.7.0 32-bit on Windows IPv4/6 libffi, options: newlisp -h  
  3.                                                                        
  4. >                                                                    
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP