itshardtogetone@[EMAIL PROTECTED]
wrote:
> Hi,
> In the script below, I have an array @[EMAIL PROTECTED]
with its elements consisting
of numbers like this :-
>
> my @[EMAIL PROTECTED]
= (
> '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 @[EMAIL PROTECTED]
= (
> '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 @[EMAIL PROTECTED]
= ();
> my $marker = scalar @[EMAIL PROTECTED]
> my $splice_counter = 0;
> my @[EMAIL PROTECTED]
= ();
>
> while ($marker) {
> $splice_counter = 0;
> push @[EMAIL PROTECTED]
splice @[EMAIL PROTECTED]
0, 1;
> my @[EMAIL PROTECTED]
= split / /, $datawanted[-1];
> my $temp_datas_iterator = scalar @[EMAIL PROTECTED]
- 1;
>
> foreach ( 0 .. $temp_datas_iterator ) {
> my $counter = 0;
> my @[EMAIL PROTECTED]
= split / /, $datas[ $_ - $splice_counter ];
>
> foreach (@[EMAIL PROTECTED]
) {
> my $a = $_;
> foreach (@[EMAIL PROTECTED]
) {
> if ( $a == $_ ) {
> $counter++;
> }
> }
> }
> if ( $counter >= $numbers_wanted ) {
> splice @[EMAIL PROTECTED]
$_ - $splice_counter, 1;
> $splice_counter++;
> }
> }
> $marker = scalar @[EMAIL PROTECTED]
> }
>
> foreach (@[EMAIL PROTECTED]
) {
> print "$_\n";
> }
>
>
>
I don't have the solution yet but shouldn't the answer be
1 6 7
and
4 5 10 only ?
it's printing out 1 2 3 as well which is wrong?


|