mirror of
https://github.com/urbit/shrub.git
synced 2024-12-12 10:29:01 +03:00
treap algorithms stuff
This commit is contained in:
parent
d0cd580653
commit
65dd7cdc10
@ -1871,12 +1871,13 @@
|
|||||||
|= a=(tree)
|
|= a=(tree)
|
||||||
?~ a
|
?~ a
|
||||||
&
|
&
|
||||||
?& ?~(l.a & ?&((vor n.a n.l.a) (hor n.l.a n.a)))
|
?& ?~(l.a & ?&((vor n.a n.l.a) (hor n.l.a n.a) $(a l.a)))
|
||||||
?~(r.a & ?&((vor n.a n.r.a) (hor n.a n.r.a)))
|
?~(r.a & ?&((vor n.a n.r.a) (hor n.a n.r.a) $(a r.a)))
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ in :: set engine
|
++ in :: set engine
|
||||||
~/ %in
|
~/ %in
|
||||||
|
!:
|
||||||
|/ a=(set)
|
|/ a=(set)
|
||||||
+- all :: logical AND
|
+- all :: logical AND
|
||||||
~/ %all
|
~/ %all
|
||||||
@ -1977,6 +1978,22 @@
|
|||||||
[n.a l.a c]
|
[n.a l.a c]
|
||||||
[n.c [n.a l.a l.c] r.c]
|
[n.c [n.a l.a l.c] r.c]
|
||||||
::
|
::
|
||||||
|
+- pux :: puts b in a as root
|
||||||
|
~/ %pux :: nb: loses invariant
|
||||||
|
|* b=*
|
||||||
|
|- ^+ a
|
||||||
|
?~ a
|
||||||
|
[b ~ ~]
|
||||||
|
?: =(b n.a)
|
||||||
|
a
|
||||||
|
?: (hor b n.a)
|
||||||
|
=+ c=$(a l.a)
|
||||||
|
?> ?=(^ c)
|
||||||
|
[n.c l.c [n.a r.c r.a]]
|
||||||
|
=+ c=$(a r.a)
|
||||||
|
?> ?=(^ c)
|
||||||
|
[n.c [n.a l.a l.c] r.c]
|
||||||
|
::
|
||||||
+- rep :: replace by product
|
+- rep :: replace by product
|
||||||
|* b=_|=([* *] +<+)
|
|* b=_|=([* *] +<+)
|
||||||
|-
|
|-
|
||||||
@ -2023,8 +2040,8 @@
|
|||||||
|= a=(tree ,[p=* q=*])
|
|= a=(tree ,[p=* q=*])
|
||||||
?~ a
|
?~ a
|
||||||
&
|
&
|
||||||
?& ?~(l.a & ?&((vor p.n.a p.n.l.a) (gor p.n.l.a p.n.a)))
|
?& ?~(l.a & ?&((vor p.n.a p.n.l.a) (gor p.n.l.a p.n.a) $(a l.a)))
|
||||||
?~(r.a & ?&((vor p.n.a p.n.r.a) (gor p.n.a p.n.r.a)))
|
?~(r.a & ?&((vor p.n.a p.n.r.a) (gor p.n.a p.n.r.a) $(a l.a)))
|
||||||
==
|
==
|
||||||
::
|
::
|
||||||
++ ja :: jar engine
|
++ ja :: jar engine
|
||||||
@ -2201,6 +2218,28 @@
|
|||||||
[n.a l.a d]
|
[n.a l.a d]
|
||||||
[n.d [n.a l.a l.d] r.d]
|
[n.d [n.a l.a l.d] r.d]
|
||||||
::
|
::
|
||||||
|
+- pux :: adds k-v at root
|
||||||
|
~/ %pux :: nb: loses invariant
|
||||||
|
|* [b=* c=*]
|
||||||
|
|- ^+ a
|
||||||
|
?~ a
|
||||||
|
[[b c] ~ ~]
|
||||||
|
?: =(b p.n.a)
|
||||||
|
?: =(c q.n.a)
|
||||||
|
a
|
||||||
|
[[b c] l.a r.a]
|
||||||
|
?: (gor b p.n.a)
|
||||||
|
=+ d=$(a l.a)
|
||||||
|
?> ?=(^ d)
|
||||||
|
?: (vor p.n.a p.n.d)
|
||||||
|
[n.a d r.a]
|
||||||
|
[n.d l.d [n.a r.d r.a]]
|
||||||
|
=+ d=$(a r.a)
|
||||||
|
?> ?=(^ d)
|
||||||
|
?: (vor p.n.a p.n.d)
|
||||||
|
[n.a l.a d]
|
||||||
|
[n.d [n.a l.a l.d] r.d]
|
||||||
|
::
|
||||||
+- rep :: replace by product
|
+- rep :: replace by product
|
||||||
|* b=_|=([* *] +<+)
|
|* b=_|=([* *] +<+)
|
||||||
|-
|
|-
|
||||||
|
Loading…
Reference in New Issue
Block a user