Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

Re: Perl (specific) Algorithms?

by japhy (Canon)
on May 22, 2001 at 05:49 UTC ( #82149=note: print w/ replies, xml ) Need Help??


in reply to Perl (specific) Algorithms?

Shell programmers are probably the most aware of the concept of a schwartzian transform. They get the results from something like ls -l, sort it somehow, and then use awk to extract a specific field.

Thanks to Perl's built-in hash data type, many idioms (such as intersection, union, and difference computation) are a snap:

@union = union(\@a, \@b); @inter = intersection(\@a, \@b, \@c); @diff = difference(\@a, \@b); @in_a = unique_to(\@a, (\@b, \@c)); sub union { my %seen; @seen{@$_} = () for @_; return keys %seen; } sub intersection { my %seen; for (@_) { $seen{$_}++ for @$_ } return grep $seen{$_} == @_, keys %seen; } sub difference { my %seen; for (@_) { $seen{$_}++ for @$_ } return grep $seen{$_} == 1, keys %seen; } sub unique_to { my %seen; @seen{@{ shift() }} = (); delete @seen{@$_} for @_; return keys %seen; }
Finding unique elements in a list is as easy as converting the list to the keys of a hash, and then extracting the keys again.

japhy -- Perl and Regex Hacker


Comment on Re: Perl (specific) Algorithms?
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://82149]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (6)
As of 2015-08-01 01:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (285 votes), past polls