Skip to content
Snippets Groups Projects
Commit ab178829 authored by atm2g19's avatar atm2g19
Browse files

Added to sorting-visualiser

Added TS sources and maps
parent 008b6a7c
No related branches found
No related tags found
No related merge requests found
Showing
with 617 additions and 4 deletions
...@@ -5,9 +5,9 @@ launch.json ...@@ -5,9 +5,9 @@ launch.json
log/ log/
**/*.d.ts **/*.d.ts
**/*.zip **/*.zip
public/**/*.ts # public/**/*.ts
public/**/tsconfig.json public/**/tsconfig.json
**/*.map # **/*.map
.jsbeautifyrc .jsbeautifyrc
nodemon.json nodemon.json
public/js/p5/.DS_Store public/js/p5/.DS_Store
......
{"version":3,"file":"qtree.js","sourceRoot":"","sources":["qtree.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
/// <reference path="../../../../p5.global-mode.d.ts"/>
interface Boundary {
type: 'boundary' | 'circle';
x: number;
y: number;
w ? : number;
h ? : number;
r ? : number;
}
interface QTreeElem {
x: number;
y: number;
obj ? : any;
boundary ? : Boundary;
}
class QuadTree {
bounds: Boundary;
maxElems: number = 4;
elems: QTreeElem[] = [];
children: QuadTree[];
constructor(bounds: Boundary, maxElems ? : number) {
this.bounds = bounds;
if (maxElems) this.maxElems = maxElems;
}
insert(elem: QTreeElem) {
if (!this.children) {
if (this.elems.length >= this.maxElems) {
//generate children
this.children = [];
for (let i = 0; i < 2; i++) {
for (let j = 0; j < 2; j++) {
this.children.push(new QuadTree({
type: 'boundary',
x: this.bounds.x + i * this.bounds.w / 2,
y: this.bounds.y + j * this.bounds.h / 2,
w: this.bounds.w / 2,
h: this.bounds.h / 2
}, this.maxElems));
}
}
for (let i = 0; i < this.elems.length; i++) {
this.insert(this.elems[i]);
}
this.insert(elem);
this.elems = [];
} else {
this.elems.push(elem);
}
} else {
//find which child
for (let child of this.children) {
if (child.bounds.x <= elem.x && child.bounds.y <= elem.y &&
child.bounds.x + child.bounds.w > elem.x && child.bounds.y + child.bounds.h > elem.y) {
child.insert(elem);
}
}
}
}
draw() {
noFill();
stroke(100, 100, 100);
strokeWeight((this.bounds.w + this.bounds.h) / 200);
rect(this.bounds.x, this.bounds.y, this.bounds.w, this.bounds.h);
if (this.children) {
for (let c of this.children) {
c.draw();
}
}
}
query(b: Boundary): QTreeElem[] {
let elems: QTreeElem[] = [];
if (b.type == 'circle') {
let nb: Boundary = {
type: 'boundary',
x: b.x - b.r,
y: b.y - b.r,
w: b.r * 2,
h: b.r * 2,
}
return this.query(nb);
} else if (b.type == 'boundary') {
if (this.children) {
for (let c of this.children) {
//AABB
if (b.x < c.bounds.x + c.bounds.w &&
b.x + b.w > c.bounds.x &&
b.y < c.bounds.y + c.bounds.h &&
b.y + b.h > c.bounds.y) {
elems.push(...c.query(b));
}
}
} else {
for (let e of this.elems) {
if (e.x > b.x && e.y > b.y &&
e.x < b.x + b.w && e.y < b.y + b.h) {
elems.push(e);
}
}
}
}
return elems;
}
}
\ No newline at end of file
{"version":3,"file":"sketch.js","sourceRoot":"","sources":["sketch.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
/// <reference path="./qtree.ts" />
/// <reference path="../../../../p5.global-mode.d.ts"/>
let count: number;
let countSlider: p5.Element;
let slider_label: p5.Element;
let frCounter: p5.Element;
let fr: number = 0;
let circles: Circle[] = [];
let b: Boundary = {
type: 'boundary',
x: 0,
y: 0,
w: 500,
h: 500,
}
function setup() {
let params = getURLParams();
if (params["count"]) {
count = params["count"];
} else {
count = 100;
}
//@ts-ignore
countSlider = createSlider(0, 80, Math.log10(count) * 20, 0.1);
countSlider.id("CountSlider");
// createElement("br");
//@ts-ignore
slider_label = createElement("label");
slider_label.attribute("for", "CountSlider");
//@ts-ignore
frCounter = createElement("label");
createElement("br");
createCanvas(500, 500);
frameRate(30);
}
function draw() {
let qtree = new QuadTree(b);
//@ts-ignore
count = Math.floor(Math.pow(10, countSlider.value() / 20));
slider_label.elt.innerText = (count);
fr = fr + (frameRate() - fr) / 8
frCounter.elt.innerText = `, FrameRate: ${Math.floor(fr)}`;
// console.log(count);
while (circles.length > count) {
circles.pop();
}
while (circles.length < count) {
circles.push(new Circle(Math.random() * width, Math.random() * height, 10));
}
for (let c of circles) {
qtree.insert({
x: c.getX(),
y: c.getY(),
obj: c,
})
}
// console.log(qtree);
background(0);
for (let c of circles) {
let poss =
qtree.query({
type: 'circle',
x: c.getX(),
y: c.getY(),
r: c.getRadius() * 2,
});
for (let {
obj
} of poss) {
if (obj != c && c.intersects(obj)) {
c.setHiglight(true);
obj.setHiglight(true);
}
}
}
for (let c of circles) {
c.draw();
c.move();
c.setHiglight(false);
}
qtree.draw();
// noLoop();
}
class Circle {
private x: number;
private y: number;
private r: number;
private highlight: boolean;
constructor(x: number, y: number, r: number) {
this.x = x;
this.y = y;
this.r = r;
this.highlight = false;
}
getRadius(): number {
return this.r;
}
getX(): number {
return this.x;
}
getY(): number {
return this.y;
}
setHiglight(b: boolean) {
this.highlight = b;
}
move() {
this.x += Math.random() * 5 - 2.5;
this.y += Math.random() * 5 - 2.5;
}
draw() {
fill(100, 100, 100);
if (this.highlight) {
fill(180, 180, 180)
}
noStroke();
ellipse(this.x, this.y, this.r * 2);
}
intersects(c: Circle): boolean {
let minD = c.getRadius() + this.r;
minD *= minD;
let dX = c.getX() - this.x;
dX *= dX;
let dY = c.getY() - this.y;
dY *= dY;
if (dX + dY < minD) {
return true;
}
return false;
}
}
\ No newline at end of file
{"version":3,"file":"test-every-optim.js","sourceRoot":"","sources":["test-every-optim.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
/// <reference path="../../../../p5.global-mode.d.ts"/>
let count: number;
let countSlider: p5.Element;
let circles: Circle[] = [];
function setup() {
createCanvas(500, 500);
let params = getURLParams();
if (params["count"]) {
count = params["count"];
} else {
count = 100;
}
//@ts-ignore
countSlider = createSlider(1, 100, Math.log10(count) * 20, 1);
}
function draw() {
//@ts-ignore
count = Math.pow(10, countSlider.value() / 20);
console.log(count);
while (circles.length > count) {
circles.pop();
}
while (circles.length < count) {
circles.push(new Circle(Math.random() * width, Math.random() * height, width * height / (1500 * Math.sqrt(count))));
}
background(0);
for (let i = 0; i < circles.length; i++) {
for (let j = i + 1; j < circles.length; j++) {
if (circles[i] != circles[j] && circles[i].intersects(circles[j])) {
circles[i].setHiglight(true);
circles[j].setHiglight(true);
}
}
}
for (let c of circles) {
c.draw();
c.move();
c.setHiglight(false);
}
}
class Circle {
private x: number;
private y: number;
private r: number;
private highlight: boolean;
constructor(x: number, y: number, r: number) {
this.x = x;
this.y = y;
this.r = r;
this.highlight = false;
}
getRadius(): number {
return this.r;
}
getX(): number {
return this.x;
}
getY(): number {
return this.y;
}
setHiglight(b: boolean) {
this.highlight = b;
}
move() {
this.x += Math.random() * 5 - 2.5;
this.y += Math.random() * 5 - 2.5;
}
draw() {
fill(100, 100, 100);
if (this.highlight) {
fill(180, 180, 180)
}
noStroke();
ellipse(this.x, this.y, this.r * 2);
}
intersects(c: Circle): boolean {
let minD = c.getRadius() + this.r;
minD *= minD;
let dX = c.getX() - this.x;
dX *= dX;
let dY = c.getY() - this.y;
dY *= dY;
if (dX + dY < minD) {
return true;
}
return false;
}
}
new p5(null, document.getElementById("container"));
\ No newline at end of file
{"version":3,"file":"test-every.js","sourceRoot":"","sources":["test-every.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
/// <reference path="../../../../p5.global-mode.d.ts"/>
let count: number;
let countSlider: p5.Element;
let slider_label: p5.Element;
let frCounter: p5.Element;
let fr: number = 0;
let circles: Circle[] = [];
function setup() {
let params = getURLParams();
if (params["count"]) {
count = params["count"];
} else {
count = 100;
}
//@ts-ignore
countSlider = createSlider(0, 80, Math.log10(count) * 20, 0.1);
countSlider.id("CountSlider");
// createElement("br");
//@ts-ignore
slider_label = createElement("label");
slider_label.attribute("for", "CountSlider");
//@ts-ignore
frCounter = createElement("label");
createElement("br");
createCanvas(500, 500);
}
function draw() {
//@ts-ignore
count = Math.floor(Math.pow(10, countSlider.value() / 20));
console.log(count);
slider_label.elt.innerText = (count);
fr = fr + (frameRate() - fr) / 8;
frCounter.elt.innerText = `, FrameRate: ${Math.floor(fr)}`;
while (circles.length > count) {
circles.pop();
}
while (circles.length < count) {
circles.push(new Circle(Math.random() * width, Math.random() * height, width * height / (1500 * Math.sqrt(count))));
}
background(0);
for (let i = 0; i < circles.length; i++) {
for (let j = 0; j < circles.length; j++) {
if (circles[i] != circles[j] && circles[i].intersects(circles[j])) {
circles[i].setHiglight(true);
circles[j].setHiglight(true);
}
}
}
for (let c of circles) {
c.draw();
c.move();
c.setHiglight(false);
}
}
class Circle {
private x: number;
private y: number;
private r: number;
private highlight: boolean;
constructor(x: number, y: number, r: number) {
this.x = x;
this.y = y;
this.r = r;
this.highlight = false;
}
getRadius(): number {
return this.r;
}
getX(): number {
return this.x;
}
getY(): number {
return this.y;
}
setHiglight(b: boolean) {
this.highlight = b;
}
move() {
this.x += Math.random() * 5 - 2.5;
this.y += Math.random() * 5 - 2.5;
}
draw() {
fill(100, 100, 100);
if (this.highlight) {
fill(180, 180, 180)
}
noStroke();
ellipse(this.x, this.y, this.r * 2);
}
intersects(c: Circle): boolean {
let minD = c.getRadius() + this.r;
minD *= minD;
let dX = c.getX() - this.x;
dX *= dX;
let dY = c.getY() - this.y;
dY *= dY;
if (dX + dY < minD) {
return true;
}
return false;
}
}
new p5(null, document.getElementById("container"));
\ No newline at end of file
...@@ -9,4 +9,5 @@ class Algorithm { ...@@ -9,4 +9,5 @@ class Algorithm {
} }
} }
let Algorithms = []; let Algorithms = [];
let Shuffles = [];
//# sourceMappingURL=algo.js.map //# sourceMappingURL=algo.js.map
\ No newline at end of file
{"version":3,"file":"algo.js","sourceRoot":"","sources":["algo.ts"],"names":[],"mappings":"AAAA,sCAAsC;AAQtC,MAAe,SAAS;IAEvB,YAAY,GAAiB;QAC5B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;IAClB,CAAC;IAED,IAAI;QACH,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE;YAAE,IAAI,CAAC,aAAa,EAAE,CAAC;IAClD,CAAC;CAID;AAYD,IAAI,UAAU,GAAW,EAAE,CAAC;AAC5B,IAAI,QAAQ,GAAW,EAAE,CAAC"}
\ No newline at end of file
/// <reference path="visualiser.ts" />
interface AlgorithmConstructor {
new(arr: WatchedArray): Algorithm;
}
abstract class Algorithm {
protected elems: WatchedArray;
constructor(arr: WatchedArray) {
this.elems = arr;
}
sort() {
while (!this.getComplete()) this.sortIteration();
}
abstract sortIteration();
abstract getComplete(): boolean;
abstract setOpt(key: string, value: any);
}
// type AlgoConstructor
interface Algo {
name: string,
constructor: AlgorithmConstructor,
opts ? : {
[opt_name: string]: [string, any][],
}
}
let Algorithms: Algo[] = [];
let Shuffles: Algo[] = [];
\ No newline at end of file
{"version":3,"file":"bubble-sort.js","sourceRoot":"","sources":["bubble-sort.ts"],"names":[],"mappings":"AAAA,MAAM,UAAW,SAAQ,SAAS;IAAlC;;QACC,YAAO,GAAW,CAAC,CAAC;QACpB,aAAQ,GAAW,CAAC,CAAC;IA0BtB,CAAC;IAvBA,aAAa;QACZ,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,EAAE;YACV,wCAAwC;YACxC,oCAAoC;YACpC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;SAClD;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,2CAA2C;QAC3C,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE;YAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;SAClB;IAEF,CAAC;IAED,WAAW;QAEV,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,CAAC,GAAW,EAAE,GAAQ,IAAG,CAAC;CAChC;AAED,UAAU,CAAC,IAAI,CAAC;IACf,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,UAAU;CACvB,CAAC,CAAA"}
\ No newline at end of file
class BubbleSort extends Algorithm {
noIters: number = 0;
position: number = 0;
sortIteration() {
let a = this.elems.get(this.position);
let b = this.elems.get(this.position + 1);
if (a > b) {
// this.elems.set(this.position + 1, a);
// this.elems.set(this.position, b);
this.elems.swap(this.position, this.position + 1);
}
this.position++;
// console.log(this.position, this.noIters)
if (this.position >= (this.elems.length - this.noIters - 1)) {
this.noIters++;
this.position = 0;
}
}
getComplete() {
return this.noIters >= (this.elems.length - 1);
}
setOpt(key: string, val: any) {}
}
Algorithms.push({
name: "bubble",
constructor: BubbleSort,
})
\ No newline at end of file
{"version":3,"file":"cocktail-shaker-sort.js","sourceRoot":"","sources":["cocktail-shaker-sort.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAmB,SAAQ,SAAS;IAA1C;;QACC,YAAO,GAAW,CAAC,CAAC;QACpB,aAAQ,GAAW,CAAC,CAAC;IA6BtB,CAAC;IA3BA,aAAa;QACZ,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,EAAE;YACV,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;SACjC;QACD,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC;YACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;;YAEhB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjB,2CAA2C;QAC3C,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;YACjI,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC;gBACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;;gBAEhB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;IAEF,CAAC;IAED,WAAW;QAEV,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC1C,CAAC;IACD,MAAM,CAAC,GAAW,EAAE,GAAQ,IAAG,CAAC;CAChC;AAED,UAAU,CAAC,IAAI,CAAC;IACf,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,kBAAkB;CAC/B,CAAC,CAAA"}
\ No newline at end of file
class CocktailShakerSort extends Algorithm {
noIters: number = 0;
position: number = 0;
sortIteration() {
let a = this.elems.get(this.position);
let b = this.elems.get(this.position + 1);
if (a > b) {
this.elems.set(this.position + 1, a);
this.elems.set(this.position, b);
}
if (this.noIters % 2 == 0)
this.position++;
else
this.position--;
// console.log(this.position, this.noIters)
if ((this.position >= (this.elems.length - Math.ceil(this.noIters / 2) - 1)) || (this.position < (Math.floor(this.noIters / 2)))) {
this.noIters++;
if (this.noIters % 2 == 0)
this.position++;
else
this.position--;
}
}
getComplete() {
return this.noIters >= this.elems.length;
}
setOpt(key: string, val: any) {}
}
Algorithms.push({
name: "cocktailshaker",
constructor: CocktailShakerSort,
})
\ No newline at end of file
...@@ -17,4 +17,8 @@ class FisherYates extends Algorithm { ...@@ -17,4 +17,8 @@ class FisherYates extends Algorithm {
} }
setOpt(key, val) { } setOpt(key, val) { }
} }
Shuffles.push({
name: "Fisher Yeates Shuffle",
constructor: FisherYates,
});
//# sourceMappingURL=fisher-yates.js.map //# sourceMappingURL=fisher-yates.js.map
\ No newline at end of file
{"version":3,"file":"fisher-yates.js","sourceRoot":"","sources":["fisher-yates.ts"],"names":[],"mappings":"AAAA,MAAM,WAAY,SAAQ,SAAS;IAAnC;;QACC,gBAAW,GAAW,CAAC,CAAC;IAgBzB,CAAC;IAbA,aAAa;QACZ,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO;QAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,EAAE,CAAC;IACpB,CAAC;IAED,WAAW;QACV,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW;YACxC,OAAO,IAAI,CAAC;QACb,OAAO,KAAK,CAAA;IACb,CAAC;IACD,MAAM,CAAC,GAAW,EAAE,GAAQ,IAAG,CAAC;CAChC;AAED,QAAQ,CAAC,IAAI,CAAC;IACb,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,WAAW;CACxB,CAAC,CAAA"}
\ No newline at end of file
...@@ -79,7 +79,7 @@ class HeapSort extends Algorithm { ...@@ -79,7 +79,7 @@ class HeapSort extends Algorithm {
filtered = true; filtered = true;
} }
//check //check
let a = this.elems.getArr(); let a = this.elems.arr;
if (((fp * 2 + 1) < this.heapSize && a[fp] < a[fp * 2 + 1]) || ((fp * 2 + 2) < this.heapSize && a[fp] < a[fp * 2 + 2])) { if (((fp * 2 + 1) < this.heapSize && a[fp] < a[fp * 2 + 1]) || ((fp * 2 + 2) < this.heapSize && a[fp] < a[fp * 2 + 2])) {
console.error(`INVALID HEAP index ${fp} : ${a[fp]} => ${a[fp * 2 + 1]}, ${a[fp * 2 + 2]}`); console.error(`INVALID HEAP index ${fp} : ${a[fp]} => ${a[fp * 2 + 1]}, ${a[fp * 2 + 2]}`);
console.log({ console.log({
...@@ -97,7 +97,7 @@ class HeapSort extends Algorithm { ...@@ -97,7 +97,7 @@ class HeapSort extends Algorithm {
return this.heapSize <= 0; return this.heapSize <= 0;
} }
verifyMaxHeap() { verifyMaxHeap() {
let a = this.elems.getArr(); let a = this.elems.arr;
for (let i = 0; i < this.heapSize; i++) { for (let i = 0; i < this.heapSize; i++) {
let p = a[i]; let p = a[i];
let childIdx = i * 2 + 1; let childIdx = i * 2 + 1;
......
{"version":3,"file":"heap-sort.js","sourceRoot":"","sources":["heap-sort.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment