What about using this double sapply? l <- list(a,b,c,d) sapply(seq_len(length(l)), function(x) sapply(seq_len(length(l)), function(y) length(intersect(unlist(l[x]), unlist(l[y]))))) [,1] [,2] [,3] [,4] [1,] 4 0 0 0 [2,] 0 4 1 0 [3,] 0 1 3 0 [4,] 0 0 0 2 Interpretation: e.g. the element [1,2] of the matrix shows you how...

python,python-2.7,set,set-intersection

No, it's not. CPython's set intersection implementation works by parallel iteration over the two sets, in hash order. Matching hashes are further tested for equality. If you have a set of small contiguous ints, they'll all hash to themselves, so everything will work out fine. But if the sets are...

javascript,arrays,algorithm,intersection,set-intersection

The first challenge is to make the function correct. Once it's correct, we can worry about the speed. There are a few things which could trip-up a function like this: NaN Bad limits Repeated numbers Only 1 input array (or none at all) Your original function can handle repeated numbers,...

python,list,python-2.7,set,set-intersection

Use a Counter to count how many times each word appears and pick the ones that appear enough: import collections import itertools counts = collections.Counter(itertools.chain.from_iterable(words)) threshold = len(words) - allowed_number_of_times_missing results = {word for word in counts if counts[word] >= threshold} If words can appear repeatedly in a list, you...

java,set,set-intersection,set-union

this works :) SetInt Class public class SetInt { int[] setArray = new int[52]; public void add(int a) { if (a < setArray.length - 2) { setArray[a] = a; } } /* * add a to the set in the correct position * * @param a the value to be...

algorithm,data-structures,time-complexity,set-intersection

Take one of the sets and convert it to a hash map. Iterate the other set, and for each member try to look up the element in the hash map. If you find it, add the result to a heap; if the size of the heap grows to one greater...

java,set,set-intersection,set-theory

What would be the best way to do this in Java? The first part you are describing is a powerset (as I edited your question to include last week). You would then get the intersection for each set of sets in the powerset. Because you are doing a powerset...

First of all, when you are programming in C++, you can just use: struct Face { uint a,b,c; }; Here's a simple strategy for implementing operator< that works for the algorithms and containers in the standard library. struct Face { uint a,b,c; bool operator<(Face const& rhs) const { if (...

c++,vector,iterator,containers,set-intersection

The important requirement for an output iterator is that it be valid and write-able for the range [out, out+size of output). Passing c.begin() will lead to the values being overwritten which only works if the container c holds enough elements to overwrite. Imagine that c.begin() returns a pointer to an...

python,dictionary,set,iteration,set-intersection

You are making it way too complicated for yourself. You appear to be creating default values for missing keys, so the following is far simpler: for key in dict_A.viewkeys() | dict_A.viewkeys(): some_function(dict_A.get(key, 0), dict_B.get(key, 0)) using the dict.get() function to substitute a default for a missing key. Note that I...

this ought to do what you want import random as RND import string import itertools as IT mock some data fnx = lambda: set(RND.sample(string.ascii_uppercase, 7)) S = [fnx() for c in range(5)] generate an index list of the sets in S so the sets can be referenced more concisely below...

arrays,fortran,fortran90,fortran95,set-intersection

I am not quite sure what you mean. If you want to compare two arrays index by index, you can do that by just using ==, like so: INTEGER :: a(4), b(4) LOGICAL :: inter(4) a = (/ 1, 2, 3, 4 /) b = (/ 4, 2, 3, 1...