@cosmicmind/algojs
Version:
A TypeScript library featuring algorithms and data structures.
2 lines (1 loc) • 9.48 kB
JavaScript
;var e=Object.defineProperty,t=(t,r)=>e(t,"name",{value:r,configurable:!0});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("@cosmicmind/foundationjs"),s=t(((e,t)=>e===t?0:e>t?1:-1),"stringCompare"),o=t(((e,t)=>e===t?0:e>t?1:-1),"numericCompare"),n=t(((e,t)=>e.key===t.key?0:e.key>t.key?1:-1),"stringKeyCompare"),i=t(((e,t)=>e.key===t.key?0:e.key>t.key?1:-1),"numericKeyCompare"),a=void 0,p=t(((e,t)=>{for(let r=1,s=e.length;r<s;++r){const s=e[r];let o=r-1;for(;0<=o&&0<t(e[o],s);)e[o+1]=e[o],--o;e[o+1]=s}}),"insertionSort"),u=t(((e,t,r,s,o)=>{const n=r-t+1,i=s-r;let a,p,u;const c=[],f=[];for(a=0;a<n;++a)c[a]=e[t+a];for(p=0;p<i;++p)f[p]=e[r+p+1];for(a=0,p=0,u=t;a<n&&p<i;)1>o(c[a],f[p])?(e[u]=c[a],++a):(e[u]=f[p],++p),++u;for(;a<n;)e[u]=c[a],++a,++u;for(;p<i;)e[u]=f[p],++p,++u}),"merge"),c=t(((e,t,r,s)=>{if(t<r){const o=Math.floor(t+(r-t)/2);c(e,t,o,s),c(e,o+1,r,s),u(e,t,o,r,s)}}),"sort"),f=t(((e,t)=>c(e,0,e.length-1,t)),"mergeSort"),l=t(((e,t)=>{let r=0;for(let s=0,o=e.length;s<o;++s){r=s;for(let i=s+1;i<o;++i)0<t(e[r],e[i])&&(r=i);const n=e[r];e[r]=e[s],e[s]=n}}),"selectionSort"),d=t((e=>(r.assert(0<=e,"index must be 0 or greater"),Math.floor((e-1)/2))),"heapParent"),x=t((e=>(r.assert(0<=e,"index must be 0 or greater"),2*e+1)),"heapLeft"),h=t((e=>(r.assert(0<=e,"index must be 0 or greater"),2*e+2)),"heapRight"),g=t(((e,t,s)=>{r.assert(0<=t,"first index must be 0 or greater"),r.assert(0<=s,"second index must be 0 or greater");const o=e[t];e[t]=e[s],e[s]=o}),"heapSwapAt"),m=t(((e,t,s=0)=>{r.assert(0<=t,"size must be 0 or greater"),r.assert(0<=s,"index must be 0 or greater");const o=x(s),n=h(s);let i=o<t&&e[o]>e[s]?o:s;n<t&&e[n]>e[i]&&(i=n),s!==i&&(g(e,s,i),m(e,t,i))}),"heapMaxHeapify"),I=t(((e,t,s=0)=>{r.assert(0<=t,"size must be 0 or greater"),r.assert(0<=s,"index must be 0 or greater");const o=x(s),n=h(s);let i=o<t&&e[o]>e[s]?o:s;n<t&&e[n]>e[i]&&(i=n),s!==i&&(g(e,s,i),m(e,t,i))}),"heapMinHeapify"),C=t((e=>{const t=e.length;for(let r=Math.floor(t/2)-1;0<=r;--r)m(e,t,r)}),"buildMaxHeap"),v=t((e=>{const t=e.length;for(let r=Math.floor(t/2);0<=r;--r)I(e,t,r)}),"buildMinHeap"),k=t((e=>{C(e);for(let t=e.length-1;0<t;--t)g(e,0,t),m(e,t)}),"heapSort"),y=t(((e,t)=>e===t?0:e>t?1:-1),"ListCompareFn"),F=t((e=>({...e,next:a,previous:a})),"listNodeCreate"),S=t((()=>({first:a,last:a,count:0})),"listCreate");function b(e,t){r.guard(e.first)?(e.first.previous=t,t.next=e.first,t.previous=a):(e.last=t,t.previous=a,t.next=a),e.first=t,++e.count}function z(e){const t=e.first;if(r.guard(t)){const s=t.next;r.guard(s)?(e.first=s,s.previous=a):(e.first=a,e.last=a),t.previous=a,t.next=a,--e.count}return t}function R(e,t){r.guard(e.last)?(e.last.next=t,t.previous=e.last,t.next=a):(e.first=t,t.previous=a,t.next=a),e.last=t,++e.count}function L(e){const t=e.last;if(r.guard(t)){const s=t.previous;r.guard(s)?(e.last=s,s.next=a):(e.first=a,e.last=a),t.previous=a,t.next=a,--e.count}return t}function P(e,t,s,o=y){if(r.guard(e.first)&&0===o(e.first,s))b(e,t);else{const o=s.previous;r.guard(o)&&(o.next=t,t.previous=o,t.next=s,s.previous=t,++e.count)}}function M(e,t,s=y){const o=t.previous;if(r.guard(e.first)&&r.guard(o)&&0===s(e.first,o))z(e);else if(r.guard(o)){const s=o.previous;r.guard(s)&&(t.previous=s,s.next=t,o.previous=a,o.next=a,--e.count)}return o}function A(e,t,s,o=y){if(r.guard(e.last)&&0===o(e.last,s))R(e,t);else{const o=s.next;r.guard(o)&&(o.previous=t,t.next=o,t.previous=s,s.next=t,++e.count)}}function H(e,t,s=y){const o=t.next;if(r.guard(e.last)&&r.guard(o)&&0===s(e.last,o))L(e);else if(r.guard(o)){const s=o.next;r.guard(s)&&(s.previous=t,t.next=s,o.previous=a,o.next=a,--e.count)}return o}function T(e,t,s=y){if(r.guard(e.first)&&0===s(e.first,t))z(e);else if(r.guard(e.last)&&0===s(e.last,t))L(e);else{const s=t.previous,o=t.next;r.guard(s)&&r.guard(o)&&(s.next=o,o.previous=s,t.previous=a,t.next=a,--e.count)}}function*D(e){let t=e.first;for(;r.guard(t);)yield t,t=t.next}function*N(e){let t=e.last;for(;r.guard(t);)yield t,t=t.previous}function*B(e){let t=e;for(;r.guard(t);)yield t,t=t.next}function*Q(e){let t=e;for(;r.guard(t);)yield t,t=t.previous}function w(e){for(;r.guard(e.first);)z(e)}function K(e,t,s=y){return r.guard(e.first)&&0===s(e.first,t)}function O(e,t,s=y){return r.guard(e.last)&&0===s(e.last,t)}function j(e,t){for(const r of D(e))if(r===t)return!0;return!1}function q(e,...t){const r=new Set;e:for(const s of D(e)){for(const e of t)if(!e(s))continue e;r.add(s)}return r}t(b,"listInsert"),t(z,"listRemoveFirst"),t(R,"listAppend"),t(L,"listRemoveLast"),t(P,"listInsertBefore"),t(M,"listRemoveBefore"),t(A,"listInsertAfter"),t(H,"listRemoveAfter"),t(T,"listRemove"),t(D,"listIterateFromFirst"),t(N,"listIterateFromLast"),t(B,"listIterateToNext"),t(Q,"listIterateToPrevious"),t(w,"listClear"),t(K,"listIsFirst"),t(O,"listIsLast"),t(j,"listHas"),t(q,"listQuery");const E=t(((e,t)=>e===t?0:-1),"StackCompareFn"),G=t((e=>({...e??{},parent:a})),"stackNodeCreate"),J=t((()=>({top:a,count:0})),"stackCreate");function U(e){return e.top}function V(e,t){t.parent=e.top,e.top=t,++e.count}function W(e){const t=e.top;return r.guard(t)&&(e.top=t.parent,t.parent=a,--e.count),t}function*X(e){let t=e.top;for(;r.guard(t);)yield t,t=t.parent}function*Y(e){let t=e;for(;r.guard(t);)yield t,t=t.parent}function*Z(e){let t=e.parent;for(;r.guard(t);)yield t,t=t.parent}function $(e){for(;r.guard(e.top);)W(e)}function _(e){let t=e.parent,s=0;for(;r.guard(t);)++s,t=t.parent;return s}function ee(e,t,s=E){return r.guard(e.top)&&0===s(e.top,t)}function te(e,t,r=E){for(const s of X(e))if(0===r(s,t))return!0;return!1}function re(e,...t){const r=new Set;e:for(const s of X(e)){for(const e of t)if(!e(s))continue e;r.add(s)}return r}t(U,"stackPeek"),t(V,"stackPush"),t(W,"stackPop"),t(X,"stackIterator"),t(Y,"stackIterateFrom"),t(Z,"stackIterateToParent"),t($,"stackClear"),t(_,"stackDepth"),t(ee,"stackIsTop"),t(te,"stackHas"),t(re,"stackQuery");const se=t(((e,t)=>e===t?0:e>t?1:-1),"TreeCompareFn"),oe=t((e=>({...e??{},parent:a,next:a,previous:a,children:S(),size:1})),"treeCreate");function ne(e,t){t.parent=e,b(e.children,t),Ie(e,t.size)}function ie(e,t,r,s=se){t.parent=e,P(e.children,t,r,s),Ie(e,t.size)}function ae(e,t,r,s=se){t.parent=e,A(e.children,t,r,s),Ie(e,t.size)}function pe(e,t){t.parent=e,R(e.children,t),Ie(e,t.size)}function ue(e,t=se){const s=e.parent;r.guard(s)&&(T(s.children,e,t),Ce(s,e.size),e.parent=a)}t(ne,"treeInsertChild"),t(ie,"treeInsertChildBefore"),t(ae,"treeInsertChildAfter"),t(pe,"treeAppendChild"),t(ue,"treeRemove");const ce=t((e=>_(e)),"treeDepth");function fe(e){return a===e.parent}function le(e){return 0===e.children.count}function de(e,t,s=se){return r.guard(t.parent)&&0===s(t.parent,e)}function xe(e,t,r=se){return K(e.children,t,r)}function he(e,t,r=se){return O(e.children,t,r)}function ge(e,t,r=se){return K(e.children,t,r)&&O(e.children,t,r)}function me(e,t,s=se){let o=t.parent;for(;r.guard(o);){if(0===s(o,e))return!0;o=o.parent}return!1}function Ie(e,t){r.assert(0<t,"size must be greater than 0");for(const r of Y(e))r.size+=t}function Ce(e,t){r.assert(0<t,"size must be greater than 0");for(const r of Y(e))r.size-=t}function*ve(e){yield e;for(const t of D(e.children))yield*ve(t)}function*ke(e){const t=S();for(R(t,{...e});0<t.count;){const e=z(t);yield e;for(const r of D(e.children))R(t,{...r})}}function ye(e,...t){const r=new Set;e:for(const s of ve(e)){for(const e of t)if(!e(s))continue e;r.add(s)}return r}t(fe,"treeIsRoot"),t(le,"treeIsLeaf"),t(de,"treeIsChild"),t(xe,"treeIsFirstChild"),t(he,"treeIsLastChild"),t(ge,"treeIsOnlyChild"),t(me,"treeIsChildDeep"),t(Ie,"treeIncreaseSize"),t(Ce,"treeDecreaseSize"),t(ve,"depthFirstIterator"),t(ke,"breadthFirstIterator"),t(ye,"treeQuery"),exports.ListCompareFn=y,exports.SentinelNode=a,exports.StackCompareFn=E,exports.TreeCompareFn=se,exports.breadthFirstIterator=ke,exports.buildMaxHeap=C,exports.buildMinHeap=v,exports.depthFirstIterator=ve,exports.heapLeft=x,exports.heapMaxHeapify=m,exports.heapMinHeapify=I,exports.heapParent=d,exports.heapRight=h,exports.heapSort=k,exports.heapSwapAt=g,exports.insertionSort=p,exports.listAppend=R,exports.listClear=w,exports.listCreate=S,exports.listHas=j,exports.listInsert=b,exports.listInsertAfter=A,exports.listInsertBefore=P,exports.listIsFirst=K,exports.listIsLast=O,exports.listIterateFromFirst=D,exports.listIterateFromLast=N,exports.listIterateToNext=B,exports.listIterateToPrevious=Q,exports.listNodeCreate=F,exports.listQuery=q,exports.listRemove=T,exports.listRemoveAfter=H,exports.listRemoveBefore=M,exports.listRemoveFirst=z,exports.listRemoveLast=L,exports.mergeSort=f,exports.numericCompare=o,exports.numericKeyCompare=i,exports.selectionSort=l,exports.stackClear=$,exports.stackCreate=J,exports.stackDepth=_,exports.stackHas=te,exports.stackIsTop=ee,exports.stackIterateFrom=Y,exports.stackIterateToParent=Z,exports.stackIterator=X,exports.stackNodeCreate=G,exports.stackPeek=U,exports.stackPop=W,exports.stackPush=V,exports.stackQuery=re,exports.stringCompare=s,exports.stringKeyCompare=n,exports.treeAppendChild=pe,exports.treeCreate=oe,exports.treeDecreaseSize=Ce,exports.treeDepth=ce,exports.treeIncreaseSize=Ie,exports.treeInsertChild=ne,exports.treeInsertChildAfter=ae,exports.treeInsertChildBefore=ie,exports.treeIsChild=de,exports.treeIsChildDeep=me,exports.treeIsFirstChild=xe,exports.treeIsLastChild=he,exports.treeIsLeaf=le,exports.treeIsOnlyChild=ge,exports.treeIsRoot=fe,exports.treeQuery=ye,exports.treeRemove=ue;