Perl Christmas Quiz

Paul Makepeace paulm at paulm.com
Fri Dec 12 12:56:09 GMT 2008


On Fri, Dec 12, 2008 at 12:43 PM, Fahad Khan <fahad.a.khan at hotmail.com> wrote:
>
>> Date: Fri, 12 Dec 2008 12:10:19 +0000
>> From: paulm at paulm.com
>> To: london.pm at london.pm.org
>> Subject: Re: Perl Christmas Quiz
>>
>> SPOILERS contd
>
>>
>> This isn't a set question though. Sets have unique membership,
>>
>> stix:~$ perl -MSet::Scalar -le '$s = Set::Scalar->new(1,1); print $s->elements'
>> 1
>>
>> Something like,
>>
>> sub intersect {
>>   my @s1 = sort @{$_[0]};
>>   my @s2 = sort @{$_[1]};
>>   my @s3;
>>   while (my $e = $s1[0]) {
>>     if ($e == $s2[0]) {
>>       push @s3, $e;
>>       shift @s2;
>>       shift @s1;
>>     } elsif ($e > $s2[0]) {
>>       shift @s2;
>>     } else {
>>       shift @s1;
>>     }
>>   }
>>   @s3;
>> }
>>
>> There's probably some clever answer using List::MoreUtils.
>>
>> P
>
> In my baby perl.
>
> sub intersect
>
> {
>
>    my ($a, $b) = @_;
>
>    my ($c, $d) = ({}, []);
>
>    foreach (@$a) { $c->{$_}->[0]++}
>
>    foreach (@$b) { $c->{$_}->[1]++}
>
>
>
>    while( my ($k, $v) = each %$c ) {
>
>        my ($i, $j) = @$v;
>
>        for(my $x=0; $x < ($i < $j ? $i : $j); $x++) {push @$d, $k}
>
>    }
>    return $d;
>
> }

Do not apply for a job with that code :-)


>
>
> Fahad.
>
> _________________________________________________________________
> Imagine a life without walls.  See the possibilities.
> http://clk.atdmt.com/UKM/go/122465943/direct/01/


More information about the london.pm mailing list