Нахождение чисел в заданном диапазоне? - PullRequest
1 голос
/ 25 февраля 2011

, пожалуйста, расскажите мне о концепции написания Perl-программы?

167 GATCAAAATACTTGCTGGA 185
192 TAGTAGATAGATAGATAGTAGTAG 228

в файле A В диапазоне от 167 to 185, как указано выше, а также 192 to 228

в другом файлеB У меня есть набор чисел

2 3 4 5 6 7 8 168 169 179 185 193 1000

Теперь из вышеуказанного набора чисел в файле B мне нужно выяснить, какие числа присутствуют в диапазоне от 167 до 185 и выведите эти числа в вывод.

Итак, вывод будет 168,169,179,185, 193

Какой будет концепция написания этой программы?

Ответы [ 3 ]

2 голосов
/ 25 февраля 2011

Если у вас Perl-версия 5.010 или выше, вы можете попробовать это:

#!/usr/bin/env perl
use warnings;
use 5.010;

my @arr1 = (167..185);
my @arr2 = qw/2 3 4 5 6 7 8 168 169 179 185 1000/;

for my $num (@arr2){
    say"$num is present in the list" if $num ~~ @arr1;
}
1 голос
/ 25 февраля 2011
use strict;
use warnings;

open my $fh, '<', $file1  or die "unable to open '$file1' for reading :$!";
my @arr1 = ();
while(my $line = <$fh>){
 while($line =~ /(\d+).*?(\d+)/gs){
    push (@arr1, $1..$2);
 }
}
close($fh);
my @arr2 = qw/2 3 4 5 6 7 8 168 169 179 185 193 1000/;
my %hash;
@hash{@arr1} = ();
for my $num (@arr2){
print"$num is present in the list\n" if(exists $hash{$num});
}

Выход:

168 is present in the list
169 is present in the list
179 is present in the list
185 is present in the list
193 is present in the list
0 голосов
/ 25 февраля 2011

, если вы можете использовать Ruby (1.9 +)

#!/usr/bin/env ruby
fileA=File.read("fileA").split
s,e =  fileA[0] , fileA[-1]
fileB=File.read("fileB").split
puts fileB.select {|x| x >= s and x<=e }

выход:

$ ruby myRange.rb
168
169
179
185
...