http://www.perlmonks.org?node_id=196537


in reply to (OT) Interview questions -- your response?

I'm coming late to this here thread...

But I think the point is being missed by the responses to:

  foreach a_item in a_array
    foreach b_item in b_array
      if a_item equals b_item
        put a_item in c_array
      end if
    end for
  end for

What does this code do? 

@a = ( a c f r f z t  );
@b = ( e c s f r f) ;

      @a   a c f r f z t 
@b  @c = ( 
e          _ _ _ _ _ _ _          
c          _ c _ _ _ _ _        
s          _ _ _ _ _ _ _
f          _ _ f _ f _ _
r          _ _ _ r _ _ _ 
f          _ _ f _ f _ _
         ) 
where an underscore is ignored - read left-right-top-bottom
  c f f r f f 

If we hash either, a or b, we always will lose something-
the r will be out of place, values repeated in both the a
and b will overrepresented or overrepresented.

What do you do about your performance problems? Cry, cus 
it's not going to get much better than as it's presented in 
the initial question. (removing items from a that aren't in 
b and vice versa might do some good, depending on the data.)


surfing the net and other cliches....

Replies are listed 'Best First'.
Re2: (OT) Interview questions -- your response?
by blakem (Monsignor) on Sep 10, 2002 at 08:50 UTC
    If we hash either, a or b, we always will lose something
    Take another look at Abigail-II's solution and note that the question specifically states that the order of the results is unimportant.
    #!/usr/bin/perl -wT use strict; my @a_array = qw( a c f r f z t ); my @b_array = qw( e c s f r f) ; my %b_hash; $b_hash {$_} ++ for @b_array; my @c_array = map {($_) x ($b_hash {$_} || 0)} @a_array; print "@c_array\n"; __END__ c f f r f f

    -Blake

      Well if there was one thing I should have learned in school, it was to read the danged question all the way through.

      surfing the net and other cliches....