亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 5464 | 回復(fù): 11
打印 上一主題 下一主題

perl區(qū)間交集問題(急。 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-12-25 11:11 |只看該作者 |倒序瀏覽
第2列三列沒用,那么用每一行的第5列和第6列與下面各列的進(jìn)行比較,5列為起始坐標(biāo),6列為終止坐標(biāo)。輸出他們的最大交集(即如果坐標(biāo)區(qū)間有重疊,則合并之并取其最小的起始坐標(biāo)和最大的終止坐標(biāo))
a.1        1        3        b        2        8
a.2        2        5        b        5        9
a.3        3        6        b        4        7
a.4        2        4        b        12        15
c.1        3        8        d        1        7
c.2        4        8        d        6        8
理想輸出
a        b=1        2        9
a        b=2        12        15
c        d        1        8
"="代表b出現(xiàn)的次數(shù)
另外還需要輸出另一個文件,即最小交集(如果坐標(biāo)區(qū)間有重疊,則合并之并取其最大的起始坐標(biāo)和最小的終止坐標(biāo))
理想結(jié)果是
a        b=1        5        7
a        b=2        12        15
c        d        6        7
求大神幫忙。!

論壇徽章:
0
2 [報告]
發(fā)表于 2013-12-25 13:38 |只看該作者
且不另你年少無知,當(dāng)你得不到答案的時候多了,你才能知道其實提問是有提問的智慧的,問題最終都是自己解決,如果要別人幫你解決,請花錢。

論壇徽章:
0
3 [報告]
發(fā)表于 2013-12-25 13:40 |只看該作者
回復(fù) 2# jjboy110
一個腳本哦。。。。

   

論壇徽章:
8
技術(shù)圖書徽章
日期:2013-09-30 08:51:28技術(shù)圖書徽章
日期: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聯(lián)賽之八一
日期:2017-08-14 23:24:57
4 [報告]
發(fā)表于 2013-12-25 13:40 |只看該作者
本帖最后由 xiumu2280 于 2013-12-25 13:50 編輯
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. my %hash_data;
  5. map {chomp;$_=~/([a-z]+)./;push @{$hash_data{$1}},[split,1,0,0]} <DATA>;

  6. foreach my $k (sort {$a cmp $b}keys %hash_data) {       
  7.         my @ori = shift@{$hash_data{$k}};
  8.         $ori[0][7]=$ori[0][4];
  9.         $ori[0][8]=$ori[0][5];
  10.         foreach my $line (@{$hash_data{$k}}) {
  11.                 $line->[7]=$line->[4];
  12.                 $line->[8]=$line->[5];
  13.                 if ($line->[4] <= $ori[-1][5]) {
  14.                          if ($ori[-1][5] <= $line->[5]) {
  15.                                 $ori[-1][5] = $line->[5];
  16.                                 $ori[-1][6]++;
  17.                                 if ($ori[-1][7] <= $line->[7]) {
  18.                                         $ori[-1][7] = $line->[7];
  19.                                 }
  20.                                 if ($ori[-1][8] >= $line->[8]) {
  21.                                         $ori[-1][8] = $line->[8];
  22.                                 }
  23.                         }else{
  24.                                 if ($ori[-1][7] <= $line->[7]) {
  25.                                         $ori[-1][7] = $line->[7];
  26.                                 }
  27.                                 if ($ori[-1][8] >= $line->[8]) {
  28.                                         $ori[-1][8] = $line->[8];
  29.                                 }
  30.                                 $ori[-1][6]++;
  31.                         }
  32.                 }else{
  33.                         push @ori,$line;
  34.                 }
  35.         }
  36.         foreach my $li (@ori) {
  37.                 print "$k\t$li->[3]=$li->[6]\t$li->[4]\t$li->[5]\n";
  38.         }
  39.         foreach my $li (@ori) {
  40.                 print "$k\t$li->[3]=$li->[6]\t$li->[7]\t$li->[8]\n";
  41.         }
  42. }

  43. __DATA__
  44. a.1        1        3        b        2        8
  45. a.2        2        5        b        5        9
  46. a.3        3        6        b        4        7
  47. a.4        2        4        b        12        15
  48. c.1        3        8        d        1        7
  49. c.2        4        8        d        6        8
復(fù)制代碼
  1. a       b=3     2       9
  2. a       b=1     12      15
  3. a       b=3     5       7
  4. a       b=1     12      15
  5. c       d=2     1       8
  6. c       d=2     6       7
復(fù)制代碼
結(jié)果和你的有些出入,不清楚你說的b出現(xiàn)的次數(shù)具體指什么,而且格式你需要自己調(diào)整下。

論壇徽章:
0
5 [報告]
發(fā)表于 2013-12-25 13:56 |只看該作者
太感謝了。!回復(fù) 4# xiumu2280


   

論壇徽章:
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程序設(shè)計版塊每日發(fā)帖之星
日期:2015-06-16 22:20:002015亞冠之塔什干火車頭
日期:2015-06-20 23:28:22
6 [報告]
發(fā)表于 2013-12-25 15:12 |只看該作者
稍微長了點~
  1. #!/usr/bin/perl
  2. use 5.010;
  3. my ( %hash, %max, %min );
  4. while (<DATA>) {
  5.         @_ = split;
  6.         my ($head) = /([^.]+)/;
  7.         if ( ! $hash{$head} ) {
  8.                 $hash{$head} = $_[-3];
  9.                 $n=1;
  10.                 $max{$head}{$n} = $_[-1];
  11.                 $min{$head}{$n} = $_[-2];
  12.         } else {
  13.                 if ( $_[-2] >= $min{$head}{$n} && $_[-2] <= $max{$head}{$n} && $_[-1] > $max{$head}{$n} ) {
  14.                         $max{$head}{$n} = $_[-1];
  15.                 } elsif ( $_[-2] < $min{$head}{$n} && $_[-1] >= $min{$head}{$n} && $_[-1] <= $max{$head}{$n} ) {
  16.                         $min{$head}{$n} = $_[-2];
  17.                 } elsif ( $_[-2] >= $min{$head}{$n} && $_[-1] <= $max{$head}{$n} ) {
  18.                 } else {
  19.                         ++$n;
  20.                         $max{$head}{$n} = $_[-1];
  21.                         $min{$head}{$n} = $_[-2];
  22.                 }

  23.         }
  24. }
  25. for my $key ( sort keys %hash ) {
  26.         for ( keys %{$max{$key}} ) {
  27.                 say join "\t", $key, "$hash{$key}=$_", $min{$key}{$_}, $max{$key}{$_};
  28.         }
  29. }
  30. __DATA__
  31. a.1        1        3        b        2        8
  32. a.2        2        5        b        5        9
  33. a.3        3        6        b        4        7
  34. a.4        2        4        b        12        15
  35. c.1        3        8        d        1        7
  36. c.2        4        8        d        6        8
復(fù)制代碼
  1. [root@localhost ~]# ./p
  2. a       b=1     2       9
  3. a       b=2     12      15
  4. c       d=1     1       8
  5. [root@localhost ~]#
復(fù)制代碼

論壇徽章:
0
7 [報告]
發(fā)表于 2013-12-25 15:32 |只看該作者
能改成這種形式嗎?
本人菜鳥,看不太懂啊
理想輸出
a        1_b        2-9_12-15
c        1_d        1        8
另外還需要輸出另一個文件,即最小交集(如果坐標(biāo)區(qū)間有重疊,則合并之并取其最大的起始坐標(biāo)和最小的終止坐標(biāo))
理想結(jié)果是
a        1_b        5-7_12-15
c        1_d        6        7回復(fù) 6# yestreenstars


   

論壇徽章:
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
8 [報告]
發(fā)表于 2013-12-25 15:37 |只看該作者
{:2_172:}小伙伴們, 這個文件有沒有?

a.1        1        3        b        2        8
a.2        2        5        b        5        9
a.3        3        6        b        4        7
a.4        2        4        b        12        15
a.5        3        6        c        4        7
a.6        2        4        c        10        13

c.1        3        8        d        1        7
c.2        4        8        d        6        8
c.3        4        8        e        8        18
c.4        4        8        f        9        14

論壇徽章:
0
9 [報告]
發(fā)表于 2013-12-25 15:38 |只看該作者
這是我做的一個簡單模型,實際數(shù)據(jù)比這個復(fù)雜些。回復(fù) 8# pitonas


   

論壇徽章:
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
10 [報告]
發(fā)表于 2013-12-25 15:41 |只看該作者
小伙伴們, 有沒有? {:2_171:}
回復(fù) 9# 清泉一邊1


   
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP