C – How to implement Set data structure?

There are multiple ways of implementing set (and map) functionality, for example: tree-based approach (ordered traversal) hash-based approach (unordered traversal) Since you mentioned value-indexed arrays, let’s try the hash-based approach which builds naturally on top of the value-indexed array technique. Beware of the advantages and disadvantages of hash-based vs. tree-based approaches. You can design a …

Read more

String similarity score/hash

I believe what you’re looking for is called a Locality Sensitive Hash. Whereas most hash algorithms are designed such that small variations in input cause large changes in output, these hashes attempt the opposite: small changes in input generate proportionally small changes in output. As others have mentioned, there are inherent issues with forcing a …

Read more

How does Python’s cmp_to_key function work?

The cmp_to_key method returns a special object that acts as a surrogate key: class K(object): __slots__ = [‘obj’] def __init__(self, obj, *args): self.obj = obj def __lt__(self, other): return mycmp(self.obj, other.obj) < 0 def __gt__(self, other): return mycmp(self.obj, other.obj) > 0 def __eq__(self, other): return mycmp(self.obj, other.obj) == 0 def __le__(self, other): return mycmp(self.obj, other.obj) …

Read more