Skip to content

Instantly share code, notes, and snippets.

@shugo
Created March 5, 2021 00:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shugo/1ecf88a3d8227fa1825374522b0fa113 to your computer and use it in GitHub Desktop.
Save shugo/1ecf88a3d8227fa1825374522b0fa113 to your computer and use it in GitHub Desktop.
class Fork < Map
def balance(* in [RedFork[a, xk, xv, b], yk, yv, RedFork[c, zk, zv, d]]) =
RedFork[BlackFork[a, xk, xv, b], yk, yv, BlackFork[c, zk, zv, d]]
def balance(* in [RedFork[RedFork[a, xk, xv, b], yk, yv, c], zk, zv, d]) =
RedFork[BlackFork[a, xk, xv, b], yk, yv, BlackFork[c, zk, zv, d]]
def balance(* in [RedFork[a, xk, xv, RedFork[b, yk, yv, c]], zk, zv, d]) =
RedFork[BlackFork[a, xk, xv, b], yk, yv, BlackFork[c, zk, zv, d]]
def balance(* in [a, xk, xv, RedFork[b, yk, yv, RedFork[c, zk, zv, d]]]) =
RedFork[BlackFork[a, xk, xv, b], yk, yv, BlackFork[c, zk, zv, d]]
def balance(* in [a, xk, xv, RedFork[RedFork[b, yk, yv, c], zk, zv, d]]) =
RedFork[BlackFork[a, xk, xv, b], yk, yv, BlackFork[c, zk, zv, d]]
def balance(* in [a, xk, xv, b]) =
BlackFork[a, xk, xv, b]
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment