diff options
Diffstat (limited to 'src/lib/UFind.rs')
| -rw-r--r-- | src/lib/UFind.rs | 37 |
1 files changed, 0 insertions, 37 deletions
diff --git a/src/lib/UFind.rs b/src/lib/UFind.rs deleted file mode 100644 index 0bb06d7c..00000000 --- a/src/lib/UFind.rs +++ /dev/null @@ -1,37 +0,0 @@ -import Option.none; -import Option.some; - -// A very naive implementation of union-find with unsigned integer nodes. - -type node = Option.t[uint]; -type ufind = rec(mutable vec[mutable node] nodes); - -fn make() -> ufind { - let vec[mutable node] v = vec(mutable none[uint]); - Vec.pop(v); // FIXME: botch - ret rec(mutable nodes=v); -} - -fn make_set(&ufind ufnd) -> uint { - auto idx = Vec.len(ufnd.nodes); - ufnd.nodes += vec(mutable none[uint]); - ret idx; -} - -fn find(&ufind ufnd, uint n) -> uint { - alt (ufnd.nodes.(n)) { - case (none[uint]) { ret n; } - case (some[uint](?m)) { - // TODO: "be" - ret find(ufnd, m); - } - } -} - -fn union(&ufind ufnd, uint m, uint n) { - auto m_root = find(ufnd, m); - auto n_root = find(ufnd, n); - auto ptr = some[uint](n_root); - ufnd.nodes.(m_root) = ptr; -} - |