Skip to content

Instantly share code, notes, and snippets.

@swannodette
Created August 29, 2011 00:11
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save swannodette/1177437 to your computer and use it in GitHub Desktop.
Save swannodette/1177437 to your computer and use it in GitHub Desktop.
redblack.js
/*
(ns play.a
(:require-macros [match.core :as m]))
(defn balanced? [x]
(m/match [x]
[([:black [:red [:red _ _ _] _ _] _ _] |
[:black [:red _ _ [:red _ _ _]] _ _] |
[:black _ _ [:red [:red _ _ _] _ _]])] true
:else false))
(balanced? [:black [:red [:red nil nil nil] nil nil] nil nil])
;; true
*/
(function(a) {
if(s(function() {
var c = N.call(e, V, a);
return s(c) ? z.call(e, J.call(e, a), 4) : c
}())) {
var c = K.call(e, a, P.call(e, 0, 0));
if(s(z.call(e, c, "\ufdd0'black"))) {
var d = K.call(e, a, P.call(e, 1, 0));
if(s(function() {
var a = N.call(e, V, d);
return s(a) ? z.call(e, J.call(e, d), 4) : a
}())) {
if(c = K.call(e, d, P.call(e, 0, 0)), s(z.call(e, c, "\ufdd0'red"))) {
var f = K.call(e, d, P.call(e, 1, 0));
if(s(function() {
var a = N.call(e, V, f);
return s(a) ? z.call(e, J.call(e, f), 4) : a
}())) {
if(c = K.call(e, f, P.call(e, 0, 0)), s(z.call(e, c, "\ufdd0'red"))) {
return!0
}else {
if(s("\ufdd0'else")) {
var g = K.call(e, d, P.call(e, 3, 0));
if(s(function() {
var a = N.call(e, V, g);
return s(a) ? z.call(e, J.call(e, g), 4) : a
}())) {
if(c = K.call(e, g, P.call(e, 0, 0)), s(z.call(e, c, "\ufdd0'red"))) {
return!0
}else {
if(s("\ufdd0'else")) {
var i = K.call(e, a, P.call(e, 3, 0));
if(s(function() {
var a = N.call(e, V, i);
return s(a) ? z.call(e, J.call(e, i), 4) : a
}())) {
if(c = K.call(e, i, P.call(e, 0, 0)), s(z.call(e, c, "\ufdd0'red"))) {
var k = K.call(e, i, P.call(e, 1, 0));
return s(function() {
var a = N.call(e, V, k);
return s(a) ? z.call(e, J.call(e, k), 4) : a
}()) ? (c = K.call(e, k, P.call(e, 0, 0)), s(z.call(e, c, "\ufdd0'red")) ? !0 : s("\ufdd0'else") ? !1 : e) : s("\ufdd0'else") ? !1 : e
}else {
return s("\ufdd0'else") ? !1 : e
}
}else {
return s("\ufdd0'else") ? !1 : e
}
}else {
return e
}
}
}else {
if(s("\ufdd0'else")) {
var m = K.call(e, a, P.call(e, 3, 0));
if(s(function() {
var a = N.call(e, V, m);
return s(a) ? z.call(e, J.call(e, m), 4) : a
}())) {
if(c = K.call(e, m, P.call(e, 0, 0)), s(z.call(e, c, "\ufdd0'red"))) {
var o = K.call(e, m, P.call(e, 1, 0));
return s(function() {
var a = N.call(e, V, o);
return s(a) ? z.call(e, J.call(e, o), 4) : a
}()) ? (c = K.call(e, o, P.call(e, 0, 0)), s(z.call(e, c, "\ufdd0'red")) ? !0 : s("\ufdd0'else") ? !1 : e) : s("\ufdd0'else") ? !1 : e
}else {
return s("\ufdd0'else") ? !1 : e
}
}else {
return s("\ufdd0'else") ? !1 : e
}
}else {
return e
}
}
}else {
return e
}
}
}else {
if(s("\ufdd0'else")) {
var q = K.call(e, d, P.call(e, 3, 0));
if(s(function() {
var a = N.call(e, V, q);
return s(a) ? z.call(e, J.call(e, q), 4) : a
}())) {
if(c = K.call(e, q, P.call(e, 0, 0)), s(z.call(e, c, "\ufdd0'red"))) {
return!0
}else {
if(s("\ufdd0'else")) {
var x = K.call(e, a, P.call(e, 3, 0));
if(s(function() {
var a = N.call(e, V, x);
return s(a) ? z.call(e, J.call(e, x), 4) : a
}())) {
if(c = K.call(e, x, P.call(e, 0, 0)), s(z.call(e, c, "\ufdd0'red"))) {
var M = K.call(e, x, P.call(e, 1, 0));
return s(function() {
var a = N.call(e, V, M);
return s(a) ? z.call(e, J.call(e, M), 4) : a
}()) ? (c = K.call(e, M, P.call(e, 0, 0)), s(z.call(e, c, "\ufdd0'red")) ? !0 : s("\ufdd0'else") ? !1 : e) : s("\ufdd0'else") ? !1 : e
}else {
return s("\ufdd0'else") ? !1 : e
}
}else {
return s("\ufdd0'else") ? !1 : e
}
}else {
return e
}
}
}else {
if(s("\ufdd0'else")) {
var da = K.call(e, a, P.call(e, 3, 0));
if(s(function() {
var a = N.call(e, V, da);
return s(a) ? z.call(e, J.call(e, da), 4) : a
}())) {
if(c = K.call(e, da, P.call(e, 0, 0)), s(z.call(e, c, "\ufdd0'red"))) {
var ya = K.call(e, da, P.call(e, 1, 0));
return s(function() {
var a = N.call(e, V, ya);
return s(a) ? z.call(e, J.call(e, ya), 4) : a
}()) ? (c = K.call(e, ya, P.call(e, 0, 0)), s(z.call(e, c, "\ufdd0'red")) ? !0 : s("\ufdd0'else") ? !1 : e) : s("\ufdd0'else") ? !1 : e
}else {
return s("\ufdd0'else") ? !1 : e
}
}else {
return s("\ufdd0'else") ? !1 : e
}
}else {
return e
}
}
}else {
return e
}
}
}else {
if(s("\ufdd0'else")) {
var Ja = K.call(e, a, P.call(e, 3, 0));
if(s(function() {
var a = N.call(e, V, Ja);
return s(a) ? z.call(e, J.call(e, Ja), 4) : a
}())) {
if(c = K.call(e, Ja, P.call(e, 0, 0)), s(z.call(e, c, "\ufdd0'red"))) {
var Za = K.call(e, Ja, P.call(e, 1, 0));
return s(function() {
var a = N.call(e, V, Za);
return s(a) ? z.call(e, J.call(e, Za), 4) : a
}()) ? (c = K.call(e, Za, P.call(e, 0, 0)), s(z.call(e, c, "\ufdd0'red")) ? !0 : s("\ufdd0'else") ? !1 : e) : s("\ufdd0'else") ? !1 : e
}else {
return s("\ufdd0'else") ? !1 : e
}
}else {
return s("\ufdd0'else") ? !1 : e
}
}else {
return e
}
}
}else {
if(s("\ufdd0'else")) {
var Ma = K.call(e, a, P.call(e, 3, 0));
if(s(function() {
var a = N.call(e, V, Ma);
return s(a) ? z.call(e, J.call(e, Ma), 4) : a
}())) {
if(c = K.call(e, Ma, P.call(e, 0, 0)), s(z.call(e, c, "\ufdd0'red"))) {
var cb = K.call(e, Ma, P.call(e, 1, 0));
return s(function() {
var a = N.call(e, V, cb);
return s(a) ? z.call(e, J.call(e, cb), 4) : a
}()) ? (c = K.call(e, cb, P.call(e, 0, 0)), s(z.call(e, c, "\ufdd0'red")) ? !0 : s("\ufdd0'else") ? !1 : e) : s("\ufdd0'else") ? !1 : e
}else {
return s("\ufdd0'else") ? !1 : e
}
}else {
return s("\ufdd0'else") ? !1 : e
}
}else {
return e
}
}
}else {
return s("\ufdd0'else") ? !1 : e
}
}else {
return s("\ufdd0'else") ? !1 : e
}
}).call(e, W(["\ufdd0'black", W(["\ufdd0'red", W(["\ufdd0'red", e, e, e]), e, e]), e, e]));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment