免费注册 查看新帖 |

Chinaunix

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

请教一个数组转化问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-30 17:03 |只看该作者 |倒序浏览
本帖最后由 求浩871227 于 2014-07-31 09:29 编辑

想用perl写一个convert程式,能把txt文件内的数据的位置转化,如我下图所示。txt文件内的数据其实是二进制,只有1和0,只要把它们的位置按下面的规律调换就行了。

1    4
2    5
3    6
想将它转化为:
1    2
3    4
5    6

请问用perl该如何实现?提供思路或者用什么函数来实现都行,非常感谢!
最近刚接触perl,望大神们帮帮忙!

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
2 [报告]
发表于 2014-07-30 17:08 |只看该作者
没看出有啥规律.

难道是排序后两两输出?

论坛徽章:
1
狮子座
日期:2014-02-25 09:46:33
3 [报告]
发表于 2014-07-30 17:16 |只看该作者
能不能多贴点文本???

论坛徽章:
0
4 [报告]
发表于 2014-07-30 17:31 |只看该作者
感谢您的回复!是想用perl写一个convert程式,能把txt文件内的数据的位置转化,如我上面所示。txt文件内的数据其实是二进制,只有1和0,只要把它们的位置按上面的规律调换就行了,不知是否有办法?回复 2# q1208c


   

论坛徽章:
0
5 [报告]
发表于 2014-07-30 17:40 |只看该作者
谢谢回复!是想用perl写一个convert程式,能把txt文件内的数据的位置转化,如我上面所示。txt文件内的数据其实都是二进制,并没规律,只有1和0,只要把它们的位置按上面的规律调换就行了回复 3# 旋转小马


   

论坛徽章:
0
6 [报告]
发表于 2014-07-30 18:00 |只看该作者
本帖最后由 afukada 于 2014-07-30 18:10 编辑

應該是文件內本來有一個 (N+1) X (M+1) 的array (假設 M > N 且 M+1 < 2N+2)

經過轉換後仍然維持 (N+1) X (M+1)

依照這個格式轉換
(0,0) -> (0,0)
(1,0) -> (0,1)
(2,0) -> (0,2)
...
(N,0) -> (0,N)
(N+1,0) -> (1,0)
(N+2,0) -> (1,1)
...
(M,0) -> (1,M-N)
(0,1) -> (1,M-N+1)
(1,1) -> (1,M-N+2)
(2,1) -> (1,M-N+3)
...

是這個意思嗎?

论坛徽章:
6
丑牛
日期:2014-03-21 15:42:04子鼠
日期:2014-04-12 11:50:17处女座
日期:2014-09-01 09:25:1115-16赛季CBA联赛之吉林
日期:2015-12-22 14:01:5215-16赛季CBA联赛之广东
日期:2016-03-08 18:49:422016科比退役纪念章
日期:2016-07-06 12:19:55
7 [报告]
发表于 2014-07-30 18:50 |只看该作者
建议楼主提供一个sample文件{:3_193:}

论坛徽章:
0
8 [报告]
发表于 2014-07-31 09:31 |只看该作者
感谢回复,sample文件如图!回复 7# stanley_tam


   

论坛徽章:
0
9 [报告]
发表于 2014-07-31 09:32 |只看该作者
感谢回复!我试试这个思路!回复 6# afukada


   

论坛徽章:
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
10 [报告]
发表于 2014-07-31 09:33 |只看该作者
本帖最后由 xiumu2280 于 2014-07-31 09:33 编辑

Like this?
  1. my @f;my @b;
  2. foreach my $line (<DATA>) {
  3.         my ($a,$b) = split /\s+/,$line;
  4.         push @f,$a;
  5.         push @b,$b;
  6. }
  7. my @new = (@f,@b);
  8. foreach my $ele (0..$#new) {
  9.         next if $ele%2;
  10.         print "$new[$ele]\t$new[$ele+1]\n";
  11. }



  12. __DATA__
  13. 1    5
  14. 2    6
  15. 3    7
  16. 4    8
复制代码
  1. 1       2
  2. 3       4
  3. 5       6
  4. 7       8
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP