- Algorithms
- #first_k: the smallest k elements of an enumerable, using a Heap internally
- Heap
- addd top_priority method
- Heap
- add update_by_delta method
Support Ruby v3.2.
(Unfortunately this note was added long after the changes were made and my memory of the changes is poor.)
-
SegmentTree
- Sum version is provided
-
PrioritySearchTree
- Open regions
-
Some bug fixes
-
Some refactoring of test cases
- Releases to fix some bad gemspec data.
-
SegmentTree
- Reorganize the code into a SegmentTree submodule.
- Provide a conveniece method for getting concrete instances.
-
README.md
- Add some simple example code for the data types.
-
Disjoint Union
- C extension: use Convenient Containers rather than my janky Dynamic Array attempt.
-
Segment Tree
- Add a C implementation as CSegmentTreeTemplate.
- Fix bad directive in Rakefile for DisjointUnion C extension
-
MinPrioritySearchTree added
- it's a thin layer on top of a MaxPrioritySearchTree with negated y values.
-
MaxPrioritySearchTree
- A "dynamic" constructor option now allows deletion of the "top" (root) node. This is useful in certain algorithms.
-
DisjointUnion
- Added a proof-of-concept implementation in C, which is about twice as fast.
-
Algorithms
- Implement the Maximal Empty Rectangle algorithm of De et al. It uses a dynamic MaxPST.
- Update this file for the gem (though I forgot to add this comment first!)
- MaxPrioritySearchTree
- Duplicate y values are now allowed. Ties are broken with a preference for smaller values of x.
- Method names have changed
- Instead of "highest", "leftmost", "rightmost" we use "largest_y", "smallest_x", "largest_x"
- For example,
highest_neis nowlargest_y_in_nw
- DisjointUnion
- the size argument to initializer is optional. The default value is 0.
- elements can be added to the "universe" of known values with
make_set
- MinmaxPrioritySearchTree is no longer available
- it was only a partial implementation anyway
- Start this file
Heapcan be constructed as "non-addressable"updateis not possible but duplicates can be inserted and overall performance is a little better.
LogicErrorgets a subclassedInternalLogicErrorfor issues inside the library.Shared::PairbecomesShared::Point- this doesn't change the API of
MaxPrioritySearchTreebecause of ducktyping. But client code (of which there is none) might be using thePairname.
- this doesn't change the API of