免费注册 查看新帖 |

Chinaunix

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

求助,写perl 对数据分组,归类 [复制链接]

论坛徽章:
2
15-16赛季CBA联赛之山西
日期:2016-03-03 17:51:32CU十四周年纪念徽章
日期:2016-03-21 18:45:39
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-07-31 18:48 |只看该作者 |倒序浏览
A        B        C       
C        A        B        D
D        F               
E        Z               
G        K               
K        M               
KK        CC               
M        P       
在一行的字母表示他们之间有联系,属于一个种类,要求是把属于一个种类的字母输出到一个大的数组中,得到的结果应该是:
A B C D F
E Z
G K M P
KK CC
求助怎么用perl脚本实现这个
   

论坛徽章:
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-07-31 19:58 |只看该作者
回复 1# 赛萌


    每一个类设个 hash,然后逐行检查其中的成员属于哪个类就是了。

论坛徽章:
2
15-16赛季CBA联赛之山西
日期:2016-03-03 17:51:32CU十四周年纪念徽章
日期:2016-03-21 18:45:39
3 [报告]
发表于 2015-07-31 20:15 |只看该作者
回复 2# MMMIX


    这只是个例子,要是遇到了很多个,会得到很多类,那怎么还给每个类设一个哈希啊??

论坛徽章:
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-07-31 20:22 |只看该作者
本帖最后由 MMMIX 于 2015-07-31 20:23 编辑

回复 3# 赛萌


    Perl 又不是只能定义一个 hash,你弄个 array 其每个成员都是个 hash (reference) 不就完了?你这个例子中就已经有好多个类了。

论坛徽章:
2
15-16赛季CBA联赛之山西
日期:2016-03-03 17:51:32CU十四周年纪念徽章
日期:2016-03-21 18:45:39
5 [报告]
发表于 2015-07-31 20:51 |只看该作者
回复 4# MMMIX


    好吧,我可能真不适合学perl 哎,女生学程序是不是都需要很聪明啊,并且本科都没有学过程序,现在工作,完全跨专业,人家比我晚来一个月的男生都会自己写perl脚本了,我都三个月了还不会写

论坛徽章:
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
6 [报告]
发表于 2015-07-31 21:14 |只看该作者
回复 5# 赛萌


    不用心,不努力,那肯定是啥也学不好,这和男女无关。

论坛徽章:
2
15-16赛季CBA联赛之山西
日期:2016-03-03 17:51:32CU十四周年纪念徽章
日期:2016-03-21 18:45:39
7 [报告]
发表于 2015-07-31 21:48 |只看该作者
回复 6# MMMIX


   

论坛徽章:
0
8 [报告]
发表于 2015-08-01 09:01 |只看该作者
你什么专业?回复 5# 赛萌


   

论坛徽章:
2
15-16赛季CBA联赛之山西
日期:2016-03-03 17:51:32CU十四周年纪念徽章
日期:2016-03-21 18:45:39
9 [报告]
发表于 2015-08-03 09:34 |只看该作者
回复 8# nanshanjin
物理学专业还是师范类的,怎么了?

   

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
10 [报告]
发表于 2015-08-03 10:49 |只看该作者
写这个程序分两步,第一步,将文本解析成一个数据结构,第二步,计算数据结构之间的联系。

写代码前要考虑清楚这个问题的实质:这个问题的实质就是路径搜索,这是一种基本的问题,好像一个迷宫,一条记录就好像连接在一起的出口,找到所有连接在一起的出口,就是问题的答案。

第一步,读入文件,将字符拆开,用适合的数据结构保存这些值。这一步通常耗费大量的代码,但逻辑比较简单,使用模块比较方便:
  1. use 5.020;
  2. use File::Slurp qw(read_file);

  3. # 把文件按行读入,保存在一个列表中
  4. my @lines = read_file('file_name');

  5. # 提前声明一个数据结构
  6. my %records;

  7. # 按照行逐行处理
  8. for my $line (@lines) {
  9.   # 剔除行末的字符
  10.   chomp $line;
  11.   # 将字符拆分成一个一个字母
  12.   my @chars = split(/\s+/, $line);
  13.   # 将这条记录起一个名字,还能查询里面的东西
  14.   # $chars[0] 是第一个字符
  15.   # @chars[ 1 .. $#chars ] 是剩下的字符数组
  16.   $records->{ $chars[0] } = @chars[1..$#chars];
  17. }

复制代码
其实这类问题早就有人解决过千万次,做成一个模块,用一个函数搞定完全可以的。

后面的步骤,尝试自己解决一下。


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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP