Hi,
In the script below, I have an array @datas with its elements consisting of
numbers like this :-
my @datas = (
'1 2 3', '1 2 4', '1 2 7', '1 2 8', '1 2 9', '1 6 7',
'1 7 12', '2 6 7', '4 5 10', '4 5 15'
);
Out of the above list, I wish to generate a seperate array so that among their
elements, there should not be any 2 numbers that can match and so the output
should be :- 1 2 3
1 6 7
4 5 10
I therefore have written the script below and have tested the script to be
working. What is the easier way to write this script?
Thanks
##### start of script ##############
use strict;
use warnings;
my @datas = (
'1 2 3', '1 2 4', '1 2 7', '1 2 8', '1 2 9', '1 6 7',
'1 7 12', '2 6 7', '4 5 10', '4 5 15'
);
my $numbers_wanted = 2;
my @datawanted = ();
my $marker = scalar @datas;
my $splice_counter = 0;
my @datas_iterator = ();
while ($marker) {
$splice_counter = 0;
push @datawanted, splice @datas, 0, 1;
my @comparator1 = split / /, $datawanted[-1];
my $temp_datas_iterator = scalar @datas - 1;
foreach ( 0 .. $temp_datas_iterator ) {
my $counter = 0;
my @comparator2 = split / /, $datas[ $_ - $splice_counter ];
foreach (@comparator2) {
my $a = $_;
foreach (@comparator1) {
if ( $a == $_ ) {
$counter++;
}
}
}
if ( $counter >= $numbers_wanted ) {
splice @datas, $_ - $splice_counter, 1;
$splice_counter++;
}
}
$marker = scalar @datas;
}
foreach (@datawanted) {
print "$_\n";
}