免费注册 查看新帖 |

Chinaunix

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

去除子集 [复制链接]

论坛徽章:
1
羊年新春福章
日期:2015-04-28 20:40:58
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-10-06 21:06 |只看该作者 |倒序浏览
各位大神,
由数组 @a = ([1,5],[2,4],[6,12],[8,10]); 怎样得到 @b=([1,5],[6,12])呢?
即数组中某匿名数组元素 如果是 其中另外某元素匿名数组的子集,则去掉。
感谢大神的帮忙!

论坛徽章:
1
羊年新春福章
日期:2015-04-28 20:40:58
2 [报告]
发表于 2014-10-07 11:05 |只看该作者
自己顶一下~回复 1# 清泉一边


   

论坛徽章:
0
3 [报告]
发表于 2014-10-07 13:40 |只看该作者
你的意思是
[2,4]是[1,5]的子集
所以去掉
[8,10]是[6,12]的子集
所以去掉

是這樣嗎?

论坛徽章:
1
羊年新春福章
日期:2015-04-28 20:40:58
4 [报告]
发表于 2014-10-07 14:41 |只看该作者
是的~回复 3# afukada


   

论坛徽章:
0
5 [报告]
发表于 2014-10-07 22:56 |只看该作者
  1. #! /usr/bin/perl -w
  2. use strict;
  3. use Data::Dumper;
  4. my @a = ([1,5],[2,4],[6,12],[8,10]);
  5. @a = map{$_->[0]}
  6.         sort{$a->[1] <=> $b->[1] || $a->[2] <=> $b->[2]}
  7.                 map{[$_,@$_]}@a;
  8. for(my $i=0;$i<$#a;$i++){
  9.         if($a[$i]->[0] <= $a[$i+1]->[0] && $a[$i]->[1] >= $a[$i+1]->[1]){
  10.                 $a[$i+1] = $a[$i];
  11.                 $a[$i] = "";
  12.         }
  13. }
  14. my @new = grep {!/^$/}@a;
  15. print Dumper @new;
复制代码

论坛徽章:
0
6 [报告]
发表于 2014-10-08 10:06 |只看该作者
  1. use 5.020;
  2. use warnings;
  3. use List::Util qw(pairgrep none);
  4. use Data::Dumper;

  5. my @a = ([1,5],[2,4],[6,12],[8,10]);
  6. my %h;
  7. for (0..(@a - 1)) {
  8.         $h{$_} = $a[$_];
  9. }
  10. my %p = pairgrep {
  11.         none { $b->[0] >= $h{$_}->[0] &&
  12.                          $b->[1] <= $h{$_}->[1]  }
  13.           grep { $_ != $a } keys %h;
  14. } %h;
  15. my @b = @a[sort keys %p];
  16. say Dumper(@b);
复制代码

论坛徽章:
0
7 [报告]
发表于 2014-10-08 10:06 |只看该作者
本帖最后由 ljqican 于 2014-10-08 10:08 编辑

不小心發多一次,用好map、grep和List::Util,可以解決很多問題啦

论坛徽章:
26
2015亚冠之胡齐斯坦钢铁
日期:2015-06-25 21:40:202015亚冠之柏斯波利斯
日期:2015-08-31 17:03:192015亚冠之柏斯波利斯
日期:2015-11-07 13:10:00程序设计版块每日发帖之星
日期:2015-11-10 06:20:00每日论坛发贴之星
日期:2015-11-10 06:20:00程序设计版块每日发帖之星
日期:2015-11-26 06:20:00程序设计版块每日发帖之星
日期:2015-12-02 06:20:00黄金圣斗士
日期:2015-12-07 17:57:4615-16赛季CBA联赛之天津
日期:2015-12-23 18:34:14程序设计版块每日发帖之星
日期:2016-01-02 06:20:00程序设计版块每日发帖之星
日期:2016-01-06 06:20:00每日论坛发贴之星
日期:2016-01-06 06:20:00
8 [报告]
发表于 2014-10-08 16:08 |只看该作者
原来如此,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP