Skip to content

Commit 4a5d534

Browse files
committed
Break method chains pt.2
1 parent 351120c commit 4a5d534

File tree

75 files changed

+515
-501
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+515
-501
lines changed

.bin/batchFix.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,11 @@ listDirectories(rootPath).forEach(category => {
3535
}
3636

3737
const newContent = lines.join('\n');
38-
console.log(newContent);
39-
console.log('------------------------------------------------------------');
40-
fs.writeFileSync(filePath, newContent, 'utf8');
38+
if (newContent !== content) {
39+
console.log(newContent);
40+
console.log('------------------------------------------------------------');
41+
fs.writeFileSync(filePath, newContent, 'utf8');
42+
}
4143
});
4244
});
4345
});

Backtracking/Knight's Tour Problem/code.js

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { Array1DTracer, Array2DTracer, LogTracer, Layout, VerticalLayout } = require('algorithm-visualizer');
1+
const { Tracer, Array1DTracer, Array2DTracer, LogTracer, Layout, VerticalLayout } = require('algorithm-visualizer');
22

33
/*
44
For N>3 the time taken by this algorithm is sufficiently high
@@ -41,9 +41,9 @@ function knightTour(x, y, moveNum) {
4141
const nextY = y + Y[i];
4242

4343
posTracer.patch(0, nextX);
44-
posTracer.delay();
44+
Tracer.delay();
4545
posTracer.patch(1, nextY);
46-
posTracer.delay();
46+
Tracer.delay();
4747
posTracer.depatch(0);
4848
posTracer.depatch(1);
4949
/*
@@ -55,7 +55,7 @@ function knightTour(x, y, moveNum) {
5555

5656
logTracer.println(`Move to ${nextX},${nextY}`);
5757
boardTracer.patch(nextX, nextY, moveNum);
58-
boardTracer.delay();
58+
Tracer.delay();
5959
boardTracer.depatch(nextX, nextY);
6060
boardTracer.select(nextX, nextY);
6161

@@ -66,7 +66,7 @@ function knightTour(x, y, moveNum) {
6666
logTracer.println(`No place to move from ${nextX},${nextY}: Backtrack`);
6767
board[nextX][nextY] = -1; // backtrack
6868
boardTracer.patch(nextX, nextY, -1);
69-
boardTracer.delay();
69+
Tracer.delay();
7070
boardTracer.depatch(nextX, nextY);
7171
boardTracer.deselect(nextX, nextY);
7272
} else {
@@ -81,11 +81,11 @@ pos[0] = 0;
8181
pos[0] = 0;
8282

8383
boardTracer.patch(0, 0, 0);
84-
boardTracer.delay();
84+
Tracer.delay();
8585
posTracer.patch(0, 0);
86-
posTracer.delay();
86+
Tracer.delay();
8787
posTracer.patch(1, 0);
88-
posTracer.delay();
88+
Tracer.delay();
8989
boardTracer.depatch(0, 0);
9090
boardTracer.depatch(0, 0);
9191
posTracer.depatch(0);

Backtracking/N-Queens Problem/code.js

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { Array2DTracer, LogTracer, Layout, VerticalLayout } = require('algorithm-visualizer');
1+
const { Tracer, Array2DTracer, LogTracer, Layout, VerticalLayout } = require('algorithm-visualizer');
22

33
const N = 4; // just change the value of N and the visuals will reflect the configuration!
44
const board = (function createArray(N) {
@@ -24,7 +24,7 @@ Layout.setRoot(new VerticalLayout([boardTracer, queenTracer, logger]));
2424
boardTracer.set(board);
2525
queenTracer.set(queens);
2626
logger.println(`N Queens: ${N}X${N}matrix, ${N} queens`);
27-
logger.delay();
27+
Tracer.delay();
2828

2929
function validState(row, col, currentQueen) {
3030
for (let q = 0; q < currentQueen; q++) {
@@ -48,28 +48,28 @@ function nQ(currentQueen, currentCol) {
4848
let row = 0;
4949
while ((row < N) && (!found)) {
5050
boardTracer.select(row, currentCol);
51-
boardTracer.delay();
51+
Tracer.delay();
5252
logger.println(`Trying queen ${currentQueen} at row ${row} & col ${currentCol}`);
5353

5454
if (validState(row, currentCol, currentQueen)) {
5555
queens[currentQueen][0] = row;
5656
queens[currentQueen][1] = currentCol;
5757

5858
queenTracer.patch(currentQueen, 0, row);
59-
queenTracer.delay();
59+
Tracer.delay();
6060
queenTracer.patch(currentQueen, 1, currentCol);
61-
queenTracer.delay();
61+
Tracer.delay();
6262
queenTracer.depatch(currentQueen, 0);
63-
queenTracer.delay();
63+
Tracer.delay();
6464
queenTracer.depatch(currentQueen, 1);
65-
queenTracer.delay();
65+
Tracer.delay();
6666

6767
found = nQ(currentQueen + 1, currentCol + 1);
6868
}
6969

7070
if (!found) {
7171
boardTracer.deselect(row, currentCol);
72-
boardTracer.delay();
72+
Tracer.delay();
7373
logger.println(`row ${row} & col ${currentCol} didn't work out. Going down`);
7474
}
7575
row++;

Branch and Bound/Binary Search Tree/insertion.js

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { Array1DTracer, GraphTracer, LogTracer, Layout, VerticalLayout } = require('algorithm-visualizer');
1+
const { Tracer, Array1DTracer, GraphTracer, LogTracer, Layout, VerticalLayout } = require('algorithm-visualizer');
22

33
const T = {};
44

@@ -8,11 +8,11 @@ const elemTracer = new Array1DTracer(' Elements ').set(elements);
88
const logger = new LogTracer(' Log ');
99
Layout.setRoot(new VerticalLayout([graphTracer, elemTracer, logger]));
1010
graphTracer.log(logger);
11-
graphTracer.delay();
11+
Tracer.delay();
1212

1313
function bstInsert(root, element, parent) { // root = current node , parent = previous node
1414
graphTracer.visit(root, parent);
15-
graphTracer.delay();
15+
Tracer.delay();
1616
const treeNode = T[root];
1717
let propName = '';
1818
if (element < root) {
@@ -27,15 +27,15 @@ function bstInsert(root, element, parent) { // root = current node , parent = pr
2727
graphTracer.addNode(element);
2828
graphTracer.addEdge(root, element);
2929
graphTracer.select(element, root);
30-
graphTracer.delay();
30+
Tracer.delay();
3131
graphTracer.deselect(element, root);
3232
logger.println(`${element} Inserted`);
3333
} else {
3434
bstInsert(treeNode[propName], element, root);
3535
}
3636
}
3737
graphTracer.leave(root, parent);
38-
graphTracer.delay();
38+
Tracer.delay();
3939
}
4040

4141
const Root = elements[0]; // take first element as root
@@ -46,8 +46,8 @@ logger.println(`${Root} Inserted as root of tree `);
4646

4747
for (let i = 1; i < elements.length; i++) {
4848
elemTracer.select(i);
49-
elemTracer.delay();
49+
Tracer.delay();
5050
bstInsert(Root, elements[i]); // insert ith element
5151
elemTracer.deselect(i);
52-
elemTracer.delay();
52+
Tracer.delay();
5353
}

Branch and Bound/Binary Search Tree/search.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { GraphTracer, LogTracer, Randomize, Layout, VerticalLayout } = require('algorithm-visualizer');
1+
const { Tracer, GraphTracer, LogTracer, Randomize, Layout, VerticalLayout } = require('algorithm-visualizer');
22

33
const G = [ // G[i][j] indicates whether the path from the i-th node to the j-th node exists or not
44
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
@@ -33,11 +33,11 @@ const tracer = new GraphTracer(' Binary Search Tree ').set(G).layoutTree(5);
3333
const logger = new LogTracer(' Log ');
3434
Layout.setRoot(new VerticalLayout([tracer, logger]));
3535
tracer.log(logger);
36-
tracer.delay();
36+
Tracer.delay();
3737

3838
function bst(item, node, parent) { // node = current node , parent = previous node
3939
tracer.visit(node, parent);
40-
tracer.delay();
40+
Tracer.delay();
4141
if (item === node) { // key found
4242
logger.println(' Match Found ');
4343
} else if (item < node) { // key less than value of current node

Branch and Bound/Binary Search/iterative.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
const { Array1DTracer, ChartTracer, LogTracer, Randomize, Layout, VerticalLayout } = require('algorithm-visualizer');
1+
const { Tracer, Array1DTracer, ChartTracer, LogTracer, Randomize, Layout, VerticalLayout } = require('algorithm-visualizer');
22

33
const chart = new ChartTracer();
44
const tracer = new Array1DTracer().chart(chart);
55
const logger = new LogTracer();
66
Layout.setRoot(new VerticalLayout([chart, tracer, logger]));
77
const D = new Randomize.Array1D(15, new Randomize.Integer(0, 50)).sorted().create();
88
tracer.set(D);
9-
tracer.delay();
9+
Tracer.delay();
1010

1111
function BinarySearch(array, element) { // array = sorted array, element = element to be found
1212
let minIndex = 0;
@@ -18,10 +18,10 @@ function BinarySearch(array, element) { // array = sorted array, element = eleme
1818
testElement = array[middleIndex];
1919

2020
tracer.select(minIndex, maxIndex);
21-
tracer.delay();
21+
Tracer.delay();
2222
tracer.patch(middleIndex);
2323
logger.println(`Searching at index: ${middleIndex}`);
24-
logger.delay();
24+
Tracer.delay();
2525
tracer.depatch(middleIndex);
2626
tracer.deselect(minIndex, maxIndex);
2727

Branch and Bound/Binary Search/recursive.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
const { Array1DTracer, ChartTracer, LogTracer, Randomize, Layout, VerticalLayout } = require('algorithm-visualizer');
1+
const { Tracer, Array1DTracer, ChartTracer, LogTracer, Randomize, Layout, VerticalLayout } = require('algorithm-visualizer');
22

33
const chart = new ChartTracer();
44
const tracer = new Array1DTracer().chart(chart);
55
const logger = new LogTracer();
66
Layout.setRoot(new VerticalLayout([chart, tracer, logger]));
77
const D = new Randomize.Array1D(15, new Randomize.Integer(0, 50)).sorted().create();
88
tracer.set(D);
9-
tracer.delay();
9+
Tracer.delay();
1010

1111
function BinarySearch(array, element, minIndex, maxIndex) { // array = sorted array, element = element to be found, minIndex = low index, maxIndex = high index
1212
if (minIndex > maxIndex) {
@@ -18,10 +18,10 @@ function BinarySearch(array, element, minIndex, maxIndex) { // array = sorted ar
1818
const testElement = array[middleIndex];
1919

2020
tracer.select(minIndex, maxIndex);
21-
tracer.delay();
21+
Tracer.delay();
2222
tracer.patch(middleIndex);
2323
logger.println(`Searching at index: ${middleIndex}`);
24-
logger.delay();
24+
Tracer.delay();
2525
tracer.depatch(middleIndex);
2626
tracer.deselect(minIndex, maxIndex);
2727

Branch and Bound/Depth-Limited Search/code.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { GraphTracer, LogTracer, Layout, VerticalLayout } = require('algorithm-visualizer');
1+
const { Tracer, GraphTracer, LogTracer, Layout, VerticalLayout } = require('algorithm-visualizer');
22

33
const tracer = new GraphTracer();
44
const logger = new LogTracer();
@@ -19,13 +19,13 @@ const G = [ // G[i][j] indicates whether the path from the i-th node to the j-th
1919
];
2020
tracer.set(G);
2121
tracer.layoutTree(0);
22-
tracer.delay();
22+
Tracer.delay();
2323

2424
// This is a sample DLS applications where
2525
// we try to find number of descendant of root within some depth
2626
function DLSCount(limit, node, parent) { // node = current node, parent = previous node
2727
tracer.visit(node, parent);
28-
tracer.delay();
28+
Tracer.delay();
2929
let child = 0;
3030
if (limit > 0) { // cut off the search
3131
for (let i = 0; i < G[node].length; i++) {

Branch and Bound/Topological Sort/code.js

+10-10
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { GraphTracer, LogTracer, Layout, VerticalLayout } = require('algorithm-visualizer');
1+
const { Tracer, GraphTracer, LogTracer, Layout, VerticalLayout } = require('algorithm-visualizer');
22

33
const tracer = new GraphTracer();
44
const logger = new LogTracer();
@@ -14,7 +14,7 @@ const G = [
1414
[1, 1, 0, 0, 0, 0],
1515
];
1616
tracer.set(G);
17-
tracer.delay();
17+
Tracer.delay();
1818

1919
const inDegrees = Array(...Array(G.length)).map(Number.prototype.valueOf, 0); // create an Array of G.length number of 0s
2020
const Q = [];
@@ -27,10 +27,10 @@ for (let currNode = 0; currNode < G.length; currNode++) {
2727
if (G[currNode][currNodeNeighbor]) {
2828
logger.println(`${currNodeNeighbor} has an incoming edge from ${currNode}`);
2929
tracer.visit(currNodeNeighbor, currNode);
30-
tracer.delay();
30+
Tracer.delay();
3131
inDegrees[currNodeNeighbor]++;
3232
tracer.leave(currNodeNeighbor, currNode);
33-
tracer.delay();
33+
Tracer.delay();
3434
}
3535
}
3636
}
@@ -40,13 +40,13 @@ logger.println('');
4040
logger.println('Initializing queue with all the sources (nodes with no incoming edges)');
4141
inDegrees.map((indegrees, node) => {
4242
tracer.visit(node);
43-
tracer.delay();
43+
Tracer.delay();
4444
if (!indegrees) {
4545
logger.println(`${node} is a source`);
4646
Q.push(node);
4747
}
4848
tracer.leave(node);
49-
tracer.delay();
49+
Tracer.delay();
5050
});
5151
logger.println(`Done. Initial State of Queue: [ ${String(Q)} ]`);
5252
logger.println('');
@@ -56,16 +56,16 @@ while (Q.length > 0) {
5656
logger.println(`Iteration #${iter}. Queue state: [ ${String(Q)} ]`);
5757
const currNode = Q.shift();
5858
tracer.visit(currNode);
59-
tracer.delay();
59+
Tracer.delay();
6060

6161
for (i = 0; i < G.length; i++) {
6262
if (G[currNode][i]) {
6363
logger.println(`${i} has an incoming edge from ${currNode}. Decrementing ${i}'s in-degree by 1.`);
6464
tracer.visit(i, currNode);
65-
tracer.delay();
65+
Tracer.delay();
6666
inDegrees[i]--;
6767
tracer.leave(i, currNode);
68-
tracer.delay();
68+
Tracer.delay();
6969

7070
if (!inDegrees[i]) {
7171
logger.println(`${i}'s in-degree is now 0. Enqueuing ${i}`);
@@ -74,7 +74,7 @@ while (Q.length > 0) {
7474
}
7575
}
7676
tracer.leave(currNode);
77-
tracer.delay();
77+
Tracer.delay();
7878
logger.println(`In-degrees are: [${String(inDegrees)} ]`);
7979
logger.println('-------------------------------------------------------------------');
8080

Brute Force/Binary Tree Traversal/inOrder.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const { Array1DTracer, GraphTracer, LogTracer, Layout, VerticalLayout } = require('algorithm-visualizer');
1+
const { Tracer, Array1DTracer, GraphTracer, LogTracer, Layout, VerticalLayout } = require('algorithm-visualizer');
22

33
const G = [ // G[i][j] indicates whether the path from the i-th node to the j-th node exists or not
44
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
@@ -38,25 +38,25 @@ let index = 0;
3838
function inOrder(root, parent) {
3939
if (root === -1) {
4040
logger.println('No more nodes. Backtracking.');
41-
logger.delay();
41+
Tracer.delay();
4242
return;
4343
}
4444

4545
logger.println(`Reached ${root}`);
4646
treeTracer.visit(root, parent);
47-
treeTracer.delay();
47+
Tracer.delay();
4848

4949
logger.println(` Going left from ${root}`);
50-
logger.delay();
50+
Tracer.delay();
5151
inOrder(T[root][0], root);
5252

5353
logger.println(`Printing ${root}`);
5454
treeTracer.leave(root);
5555
arrayTracer.patch(index++, root);
56-
arrayTracer.delay();
56+
Tracer.delay();
5757

5858
logger.println(` Going right from ${root}`);
59-
logger.delay();
59+
Tracer.delay();
6060
inOrder(T[root][1], root);
6161
}
6262

0 commit comments

Comments
 (0)