Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Answer: set theory w/hashes? arrays? done quickly?

by fundflow (Chaplain)
on Oct 04, 2000 at 03:02 UTC ( #35202=categorized answer: print w/replies, xml ) Need Help??

Q&A > Data Structures > set theory w/hashes? arrays? done quickly? - Answer contributed by fundflow

There has to be a better way using array slices...... got it

Here is an example for union:
%s1=('a'=>1, 'b'=>1, 'c'=>1); %s2=('a'=>1, 'c'=>1, 'd'=>1); print "Set 1 has: ", join(",",keys %s1), " Set 2 has: ", join(",", k +eys %s2),"\n"; %j=%s1; @j{keys %s2}=1; print "Union is ", join(",", keys %j), "\n";
I don't really know how to remove elements from the hash.

In the above example, the hash keys are the elements of the set. If you let the set be the elements in the hash that also have a nonzero value, then the same technique can be used for intersection:
%inter=%s1; @inter{%s2}=0;


Also, to answer the original poster: if "REALLY large" is really large, and doesnt fit in the main memory then you might want to store the sets in sorted files and merge them smartly to compute the union/intersection.

Replies are listed 'Best First'.
(tye)RE: Answer: set theory w/hashes? arrays? done quickly?
by tye (Sage) on Oct 04, 2000 at 04:11 UTC

    I don't really know how to remove elements from the hash.

    That reminded me that you can subtract %h2 from %h1 via:

    delete @h1{ keys %h2 };

            - tye (but my friends call me "Tye")
Log In?
Username:
Password:

What's my password?
Create A New User
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (3)
As of 2020-10-31 05:30 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My favourite web site is:












    Results (286 votes). Check out past polls.

    Notices?