[EMAIL PROTECTED] wrote:
> 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";
> }
>
>
>
with my skillz(limited) I cannot come up w/ algorithm and what's more..
I am not understanding what you are looking for.
@array = (1,2,3) matches @arrayx=(1,2,4) in 2 numbers.. am I the only
one not understanding this correctly?
can you(or others) elaborate on this?
thanks.
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/