Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re^6: problem in for loop

by MVRS (Acolyte)
on May 16, 2013 at 08:31 UTC ( #1033788=note: print w/replies, xml ) Need Help??


in reply to Re^5: problem in for loop
in thread problem in for loop

threshold=1000

Input

link1 myco1 16 13013 color=chr1

link1 myco2 7419028 7432025 color=chr1

link2 myco1 13016 31245 color=chr1

link2 myco2 7432026 7450255 color=chr1

link3 myco1 31569 50386 color=chr1

link3 myco2 7450876 7469693 color=chr1

link4 myco1 53241 82019 color=chr1

link4 myco2 7472518 7501295 color=chr1

link5 myco1 82667 85039 color=chr1

link5 myco2 7511397 7513769 color=chr1

link6 myco1 85052 162535 color=chr1

link6 myco2 7513770 7591243 color=chr1

output

link1 myco1 16 13016

link1 myco2 7419028 7450255

link2 myco1 13016 31569

link2 myco2 7432026 7469693

link3 myco1 31569 53241

link3 myco2 7450876 7501295

link4 myco1 53241 82667

link4 myco2 7472518 7513769

link5 myco1 82667 85052

link5 myco2 7511397 7591243

link6 myco1 85052 3519888

link6 myco2 7513770 6200895

Replies are listed 'Best First'.
Re^7: problem in for loop
by hdb (Monsignor) on May 16, 2013 at 08:48 UTC

    So you want

    if (y-a)&&(z-c)< threshold print as following link1 x a # not b as you stated above? link1 w d

    Then my next proposal is

    use strict; use warnings; my $threshold = 1000; # being lazy: my @file_array = map { [ split /\s+/ ] } <DATA>; for( my $i=0; $i<@file_array-2; $i+=2 ) { if( $file_array[$i ][3]-$file_array[$i+2][2] < $threshold and $file_array[$i+1][3]-$file_array[$i+3][2] < $threshold ) { print "$file_array[$i ][0] $file_array[$i ][2] $file_array[$ +i+2][2]\n"; print "$file_array[$i+1][0] $file_array[$i+1][2] $file_array[$ +i+3][3]\n"; } else { # not sure print "$file_array[$i ][0] $file_array[$i ][2] $file_array[$ +i ][3]\n"; print "$file_array[$i+1][0] $file_array[$i+1][2] $file_array[$ +i+1][3]\n"; } } print "$file_array[-2][0] $file_array[-2][2] $file_array[-2][3]\n"; print "$file_array[-1][0] $file_array[-1][2] $file_array[-1][3]\n"; __DATA__ link1 myco1 16 13013 color=chr1 link1 myco2 7419028 7432025 color=chr1 link2 myco1 13016 31245 color=chr1 link2 myco2 7432026 7450255 color=chr1 link3 myco1 31569 50386 color=chr1 link3 myco2 7450876 7469693 color=chr1 link4 myco1 53241 82019 color=chr1 link4 myco2 7472518 7501295 color=chr1 link5 myco1 82667 85039 color=chr1 link5 myco2 7511397 7513769 color=chr1 link6 myco1 85052 162535 color=chr1 link6 myco2 7513770 7591243 color=chr1 link7 myco1 3519888 3527802 color=chr10 link7 myco2 6192981 6200895 color=chr10 link8 myco1 3531711 3535088 color=chr10 link8 myco2 6200982 6204356 color=chr10 link9 myco1 3537764 3568351 color=chr10 link9 myco2 6204393 6234981 color=chr10 link10 myco1 3585050 3670398 color=chr10 link10 myco2 6236328 6321680 color=chr10

    However, this gives wrong results for link6 but I do not understand your example as the threshold condition seems not to be met??

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1033788]
help
Chatterbox?
and the fog begins to lift...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (9)
As of 2018-05-22 20:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Notices?