From ca4c1a62af3c8bd5a159e236d900fc32ed569ce5 Mon Sep 17 00:00:00 2001 From: Rak Laptudirm <68542775+raklaptudirm@users.noreply.github.com> Date: Fri, 21 May 2021 11:16:11 +0530 Subject: [PATCH 01/11] style: Fixed most styles (according to standardjs) --- Conversions/DecimalToBinary.js | 2 +- Conversions/HexToRGB.js | 8 +- Conversions/RomanToDecimal.js | 2 +- Data-Structures/Linked-List/SinglyLinkList.js | 40 +++---- Data-Structures/Stack/Stack.js | 8 +- Data-Structures/Tree/BinarySearchTree.js | 6 +- Data-Structures/Tree/Trie.js | 32 +++--- Linear-Algebra/src/la_lib.js | 104 +++++++++--------- Maths/Fibonacci.js | 2 +- Search/LinearSearch.js | 6 +- Sorts/GnomeSort.js | 2 +- Sorts/HeapSort.js | 2 +- Sorts/InsertionSort.js | 8 +- Sorts/IntroSort.js | 46 ++++---- Sorts/MergeSort.js | 12 +- Sorts/QuickSort.js | 14 +-- Sorts/RadixSort.js | 22 ++-- Sorts/SelectionSort.test.js | 2 +- Sorts/ShellSort.js | 10 +- Sorts/TopologicalSort.js | 16 +-- Sorts/WiggleSort.js | 2 +- Trees/DepthFirstSearch.js | 6 +- 22 files changed, 176 insertions(+), 176 deletions(-) diff --git a/Conversions/DecimalToBinary.js b/Conversions/DecimalToBinary.js index a179dbaf2e..9c8337b687 100644 --- a/Conversions/DecimalToBinary.js +++ b/Conversions/DecimalToBinary.js @@ -1,5 +1,5 @@ function decimalToBinary (num) { - var bin = [] + const bin = [] while (num > 0) { bin.unshift(num % 2) num >>= 1 // basically /= 2 without remainder if any diff --git a/Conversions/HexToRGB.js b/Conversions/HexToRGB.js index 5ee820b817..56e31abd7d 100644 --- a/Conversions/HexToRGB.js +++ b/Conversions/HexToRGB.js @@ -1,12 +1,12 @@ function hexStringToRGB (hexString) { - var r = hexString.substring(0, 2) - var g = hexString.substring(2, 4) - var b = hexString.substring(4, 6) + let r = hexString.substring(0, 2) + let g = hexString.substring(2, 4) + let b = hexString.substring(4, 6) r = parseInt(r, 16) g = parseInt(g, 16) b = parseInt(b, 16) - var obj = { r, g, b } + const obj = { r, g, b } return obj } diff --git a/Conversions/RomanToDecimal.js b/Conversions/RomanToDecimal.js index 24f7b0fe61..6de4afa0c3 100644 --- a/Conversions/RomanToDecimal.js +++ b/Conversions/RomanToDecimal.js @@ -1,4 +1,4 @@ -var values = { +const values = { I: 1, V: 5, X: 10, diff --git a/Data-Structures/Linked-List/SinglyLinkList.js b/Data-Structures/Linked-List/SinglyLinkList.js index fbfdacf22c..f718962bc2 100644 --- a/Data-Structures/Linked-List/SinglyLinkList.js +++ b/Data-Structures/Linked-List/SinglyLinkList.js @@ -10,7 +10,7 @@ // class LinkedList and constructor // Creates a LinkedList -var LinkedList = (function () { +const LinkedList = (function () { function LinkedList () { // Length of linklist and head is null at start this.length = 0 @@ -19,7 +19,7 @@ var LinkedList = (function () { // class node (constructor) // Creating Node with element's value - var Node = (function () { + const Node = (function () { function Node (element) { this.element = element this.next = null @@ -39,12 +39,12 @@ var LinkedList = (function () { // Creates a node and adds it to linklist LinkedList.prototype.add = function (element) { - var node = new Node(element) + const node = new Node(element) // Check if its the first element if (this.head === null) { this.head = node } else { - var currentNode = this.head + let currentNode = this.head // Loop till there is node present in the list while (currentNode.next) { @@ -60,8 +60,8 @@ var LinkedList = (function () { // Removes the node with the value as param LinkedList.prototype.remove = function (element) { - var currentNode = this.head - var previousNode + let currentNode = this.head + let previousNode // Check if the head node is the element to remove if (currentNode.element === element) { @@ -88,8 +88,8 @@ var LinkedList = (function () { // Returns the index of the element passed as param otherwise -1 LinkedList.prototype.indexOf = function (element) { - var currentNode = this.head - var index = -1 + let currentNode = this.head + let index = -1 while (currentNode) { index++ @@ -106,8 +106,8 @@ var LinkedList = (function () { // Returns the element at an index LinkedList.prototype.elementAt = function (index) { - var currentNode = this.head - var count = 0 + let currentNode = this.head + let count = 0 while (count < index) { count++ currentNode = currentNode.next @@ -118,11 +118,11 @@ var LinkedList = (function () { // Adds the element at specified index LinkedList.prototype.addAt = function (index, element) { index-- - var node = new Node(element) + const node = new Node(element) - var currentNode = this.head - var previousNode - var currentIndex = 0 + let currentNode = this.head + let previousNode + let currentIndex = 0 // Check if index is out of bounds of list if (index > this.length) { @@ -153,9 +153,9 @@ var LinkedList = (function () { // Removes the node at specified index LinkedList.prototype.removeAt = function (index) { index-- - var currentNode = this.head - var previousNode - var currentIndex = 0 + let currentNode = this.head + let previousNode + let currentIndex = 0 // Check if index is present in list if (index < 0 || index >= this.length) { @@ -181,8 +181,8 @@ var LinkedList = (function () { // Function to view the LinkedList LinkedList.prototype.view = function () { - var currentNode = this.head - var count = 0 + let currentNode = this.head + let count = 0 while (count < this.length) { count++ console.log(currentNode.element) @@ -195,7 +195,7 @@ var LinkedList = (function () { }()) // Implementation of LinkedList -var linklist = new LinkedList() +const linklist = new LinkedList() linklist.add(2) linklist.add(5) linklist.add(8) diff --git a/Data-Structures/Stack/Stack.js b/Data-Structures/Stack/Stack.js index f95b940599..e6b99b40b0 100644 --- a/Data-Structures/Stack/Stack.js +++ b/Data-Structures/Stack/Stack.js @@ -8,7 +8,7 @@ // Functions: push, pop, peek, view, length // Creates a stack constructor -var Stack = (function () { +const Stack = (function () { function Stack () { // The top of the Stack this.top = 0 @@ -29,7 +29,7 @@ var Stack = (function () { } this.top-- - var result = this.stack[this.top] + const result = this.stack[this.top] this.stack = this.stack.splice(0, this.top) return result } @@ -46,14 +46,14 @@ var Stack = (function () { // To see all the elements in the stack Stack.prototype.view = function () { - for (var i = 0; i < this.top; i++) { console.log(this.stack[i]) } + for (let i = 0; i < this.top; i++) { console.log(this.stack[i]) } } return Stack }()) // Implementation -var myStack = new Stack() +const myStack = new Stack() myStack.push(1) myStack.push(5) diff --git a/Data-Structures/Tree/BinarySearchTree.js b/Data-Structures/Tree/BinarySearchTree.js index 943332d54c..a0965cd941 100644 --- a/Data-Structures/Tree/BinarySearchTree.js +++ b/Data-Structures/Tree/BinarySearchTree.js @@ -11,7 +11,7 @@ */ // class Node -var Node = (function () { +const Node = (function () { // Node in the tree function Node (val) { this.value = val @@ -67,7 +67,7 @@ var Node = (function () { }()) // class Tree -var Tree = (function () { +const Tree = (function () { function Tree () { // Just store the root this.root = null @@ -103,7 +103,7 @@ var Tree = (function () { }()) // Implementation of BST -var bst = new Tree() +const bst = new Tree() bst.addValue(6) bst.addValue(3) bst.addValue(9) diff --git a/Data-Structures/Tree/Trie.js b/Data-Structures/Tree/Trie.js index 0103662862..1e00daf538 100644 --- a/Data-Structures/Tree/Trie.js +++ b/Data-Structures/Tree/Trie.js @@ -1,4 +1,4 @@ -var TrieNode = function TrieNode (key, parent) { +const TrieNode = function TrieNode (key, parent) { this.key = key this.count = 0 this.children = Object.create(null) @@ -20,7 +20,7 @@ Trie.findAllWords = function (root, word, output) { if (root.count > 0) { if (typeof output === 'object') { output.push({ word: word, count: root.count }) } } - var key + let key for (key in root.children) { word += key this.findAllWords(root.children[key], word, output) @@ -34,9 +34,9 @@ Trie.prototype.insert = function (word) { this.root.count += 1 return } - var node = this.root - var len = word.length - var i + let node = this.root + const len = word.length + let i for (i = 0; i < len; i++) { if (node.children[word.charAt(i)] === undefined) { node.children[word.charAt(i)] = new TrieNode(word.charAt(i), node) } node = node.children[word.charAt(i)] @@ -46,9 +46,9 @@ Trie.prototype.insert = function (word) { Trie.prototype.findPrefix = function (word) { if (typeof word !== 'string') return null - var node = this.root - var len = word.length - var i + let node = this.root + const len = word.length + let i // After end of this loop node will be at desired prefix for (i = 0; i < len; i++) { if (node.children[word.charAt(i)] === undefined) return null // No such prefix exists @@ -69,9 +69,9 @@ Trie.prototype.remove = function (word, count) { return } - var child = this.root - var len = word.length - var i, key + let child = this.root + const len = word.length + let i, key // child: node which is to be deleted for (i = 0; i < len; i++) { key = word.charAt(i) @@ -93,9 +93,9 @@ Trie.prototype.remove = function (word, count) { } Trie.prototype.findAllWords = function (prefix) { - var output = [] + const output = [] // find the node with provided prefix - var node = this.findPrefix(prefix) + const node = this.findPrefix(prefix) // No such prefix exists if (node === null) return output Trie.findAllWords(node, prefix, output) @@ -104,7 +104,7 @@ Trie.prototype.findAllWords = function (prefix) { Trie.prototype.contains = function (word) { // find the node with given prefix - var node = this.findPrefix(word) + const node = this.findPrefix(word) // No such word exists if (node === null || node.count === 0) return false return true @@ -112,7 +112,7 @@ Trie.prototype.contains = function (word) { Trie.prototype.findOccurences = function (word) { // find the node with given prefix - var node = this.findPrefix(word) + const node = this.findPrefix(word) // No such word exists if (node === null) return 0 return node.count @@ -120,7 +120,7 @@ Trie.prototype.findOccurences = function (word) { // To test (function demo () { - var x = new Trie() + const x = new Trie() x.insert('sheldon') x.insert('hello') x.insert('anyword') diff --git a/Linear-Algebra/src/la_lib.js b/Linear-Algebra/src/la_lib.js index be9f507def..43645b11df 100644 --- a/Linear-Algebra/src/la_lib.js +++ b/Linear-Algebra/src/la_lib.js @@ -5,13 +5,13 @@ The namespace LinearAlgebra contains useful classes and functions for dealing with linear algebra under JavaScript. */ -var LinearAlgebra; +let LinearAlgebra; (function (LinearAlgebra) { /* class: Vector This class represents a vector of arbitrary size and operations on it. */ - var Vector = /** @class */ (function () { + const Vector = /** @class */ (function () { // constructor function Vector (N, comps) { if (comps === undefined) { @@ -19,7 +19,7 @@ var LinearAlgebra; } this.components = new Array(N) if (comps.length === 0) { - for (var i = 0; i < N; i++) { + for (let i = 0; i < N; i++) { this.components[i] = 0.0 } } else { @@ -37,8 +37,8 @@ var LinearAlgebra; } // computes the eulidean length. Vector.prototype.eulideanLength = function () { - var sum = 0 - for (var i = 0; i < this.components.length; i++) { + let sum = 0 + for (let i = 0; i < this.components.length; i++) { sum += this.components[i] * this.components[i] } return Math.sqrt(sum) @@ -59,9 +59,9 @@ var LinearAlgebra; // vector addition Vector.prototype.add = function (other) { if (this.size() === other.size()) { - var SIZE = this.size() - var ans = new Vector(SIZE) - for (var i = 0; i < SIZE; i++) { + const SIZE = this.size() + const ans = new Vector(SIZE) + for (let i = 0; i < SIZE; i++) { ans.changeComponent(i, (this.components[i] + other.component(i))) } return ans @@ -72,9 +72,9 @@ var LinearAlgebra; // vector subtraction Vector.prototype.sub = function (other) { if (this.size() === other.size()) { - var SIZE = this.size() - var ans = new Vector(SIZE) - for (var i = 0; i < SIZE; i++) { + const SIZE = this.size() + const ans = new Vector(SIZE) + for (let i = 0; i < SIZE; i++) { ans.changeComponent(i, (this.components[i] - other.component(i))) } return ans @@ -84,10 +84,10 @@ var LinearAlgebra; } // dot-product Vector.prototype.dot = function (other) { - var sum = 0 + let sum = 0 if (other.size() === this.size()) { - var SIZE = other.size() - for (var i = 0; i < SIZE; i++) { + const SIZE = other.size() + for (let i = 0; i < SIZE; i++) { sum += this.components[i] * other.component(i) } return sum @@ -97,18 +97,18 @@ var LinearAlgebra; } // scalar multiplication Vector.prototype.scalar = function (s) { - var SIZE = this.size() - var ans = new Vector(SIZE) - for (var i = 0; i < SIZE; i++) { + const SIZE = this.size() + const ans = new Vector(SIZE) + for (let i = 0; i < SIZE; i++) { ans.changeComponent(i, (this.components[i] * s)) } return ans } // returns a string representation of this vector. Vector.prototype.toString = function () { - var ans = '(' - var SIZE = this.components.length - for (var i = 0; i < SIZE; i++) { + let ans = '(' + const SIZE = this.components.length + for (let i = 0; i < SIZE; i++) { if (i < SIZE - 1) { ans += this.components[i] + ',' } else { @@ -121,7 +121,7 @@ var LinearAlgebra; // the One is on position 'pos' Vector.prototype.createUnitBasis = function (pos) { if (pos >= 0 && pos < this.components.length) { - for (var i = 0; i < this.components.length; i++) { + for (let i = 0; i < this.components.length; i++) { if (i === pos) { this.components[i] = 1.0 } else { @@ -135,20 +135,20 @@ var LinearAlgebra; } // normalizes this vector and returns it. Vector.prototype.norm = function () { - var SIZE = this.size() - var quotient = 1.0 / this.eulideanLength() - for (var i = 0; i < SIZE; i++) { + const SIZE = this.size() + const quotient = 1.0 / this.eulideanLength() + for (let i = 0; i < SIZE; i++) { this.components[i] = this.components[i] * quotient } return this } // returns true if the vectors are equal otherwise false. Vector.prototype.equal = function (other) { - var ans = true - var SIZE = this.size() - var EPSILON = 0.001 + let ans = true + const SIZE = this.size() + const EPSILON = 0.001 if (SIZE === other.size()) { - for (var i = 0; i < SIZE; i++) { + for (let i = 0; i < SIZE; i++) { if (Math.abs(this.components[i] - other.component(i)) > EPSILON) { ans = false } @@ -164,8 +164,8 @@ var LinearAlgebra; // -------------- global functions --------------------------------- // returns a unit basis vector of size N with a One on position 'pos' function unitBasisVector (N, pos) { - var ans = new Vector(N) - for (var i = 0; i < N; i++) { + const ans = new Vector(N) + for (let i = 0; i < N; i++) { if (i === pos) { ans.changeComponent(i, 1.0) } else { @@ -177,8 +177,8 @@ var LinearAlgebra; LinearAlgebra.unitBasisVector = unitBasisVector // returns a random vector with integer components (between 'a' and 'b') of size N. function randomVectorInt (N, a, b) { - var ans = new Vector(N) - for (var i = 0; i < N; i++) { + const ans = new Vector(N) + for (let i = 0; i < N; i++) { ans.changeComponent(i, (Math.floor((Math.random() * b) + a))) } return ans @@ -186,8 +186,8 @@ var LinearAlgebra; LinearAlgebra.randomVectorInt = randomVectorInt // returns a random vector with floating point components (between 'a' and 'b') of size N. function randomVectorFloat (N, a, b) { - var ans = new Vector(N) - for (var i = 0; i < N; i++) { + const ans = new Vector(N) + for (let i = 0; i < N; i++) { ans.changeComponent(i, ((Math.random() * b) + a)) } return ans @@ -198,7 +198,7 @@ var LinearAlgebra; class: Matrix This class represents a matrix of arbitrary size and operations on it. */ - var Matrix = /** @class */ (function () { + const Matrix = /** @class */ (function () { // constructor for zero-matrix or fix number matrix. function Matrix (row, col, comps) { if (comps === undefined) { @@ -206,9 +206,9 @@ var LinearAlgebra; } if (comps.length === 0) { this.matrix = [] - var rowVector = [] - for (var i = 0; i < row; i++) { - for (var j = 0; j < col; j++) { + let rowVector = [] + for (let i = 0; i < row; i++) { + for (let j = 0; j < col; j++) { rowVector[j] = 0 } this.matrix[i] = rowVector @@ -238,10 +238,10 @@ var LinearAlgebra; } // returns a string representation of this matrix. Matrix.prototype.toString = function () { - var ans = '' - for (var i = 0; i < this.rows; i++) { + let ans = '' + for (let i = 0; i < this.rows; i++) { ans += '|' - for (var j = 0; j < this.cols; j++) { + for (let j = 0; j < this.cols; j++) { if (j < this.cols - 1) { ans += this.matrix[i][j] + ',' } else { @@ -257,7 +257,7 @@ var LinearAlgebra; } // returns the dimension rows x cols as number array Matrix.prototype.dimension = function () { - var ans = [] + const ans = [] ans[0] = this.rows ans[1] = this.cols return ans @@ -266,9 +266,9 @@ var LinearAlgebra; Matrix.prototype.add = function (other) { if (this.rows === other.dimension()[0] && this.cols === other.dimension()[1]) { - var ans = new Matrix(this.rows, this.cols) - for (var i = 0; i < this.rows; i++) { - for (var j = 0; j < this.cols; j++) { + const ans = new Matrix(this.rows, this.cols) + for (let i = 0; i < this.rows; i++) { + for (let j = 0; j < this.cols; j++) { ans.changeComponent(i, j, (this.matrix[i][j] + other.component(i, j))) } } @@ -279,12 +279,12 @@ var LinearAlgebra; } // returns true if the matrices are equal, otherwise false. Matrix.prototype.equal = function (other) { - var ans = true - var EPSILON = 0.001 + let ans = true + const EPSILON = 0.001 if (this.rows === other.dimension()[0] && this.cols === other.dimension()[1]) { - for (var i = 0; i < this.rows; i++) { - for (var j = 0; j < this.cols; j++) { + for (let i = 0; i < this.rows; i++) { + for (let j = 0; j < this.cols; j++) { if (Math.abs(this.matrix[i][j] - other.component(i, j)) > EPSILON) { ans = false } @@ -297,9 +297,9 @@ var LinearAlgebra; } // matrix-scalar multiplication Matrix.prototype.scalar = function (c) { - var ans = new Matrix(this.rows, this.cols) - for (var i = 0; i < this.rows; i++) { - for (var j = 0; j < this.cols; j++) { + const ans = new Matrix(this.rows, this.cols) + for (let i = 0; i < this.rows; i++) { + for (let j = 0; j < this.cols; j++) { ans.changeComponent(i, j, (this.matrix[i][j] * c)) } } diff --git a/Maths/Fibonacci.js b/Maths/Fibonacci.js index 6a204a9549..c1b153f24d 100644 --- a/Maths/Fibonacci.js +++ b/Maths/Fibonacci.js @@ -63,7 +63,7 @@ const FibonacciDpWithoutRecursion = (number) => { const table = [] table.push(1) table.push(1) - for (var i = 2; i < number; ++i) { + for (let i = 2; i < number; ++i) { table.push(table[i - 1] + table[i - 2]) } return table diff --git a/Search/LinearSearch.js b/Search/LinearSearch.js index 06d9e94a6d..6b4211d40c 100644 --- a/Search/LinearSearch.js +++ b/Search/LinearSearch.js @@ -5,7 +5,7 @@ * have been searched. */ function SearchArray (searchNum, ar) { - var position = Search(ar, searchNum) + const position = Search(ar, searchNum) if (position !== -1) { console.log('The element was found at ' + (position + 1)) } else { @@ -15,13 +15,13 @@ function SearchArray (searchNum, ar) { // Search “theArray” for the specified “key” value function Search (theArray, key) { - for (var n = 0; n < theArray.length; n++) { + for (let n = 0; n < theArray.length; n++) { if (theArray[n] === key) { return n } } return -1 } -var ar = [1, 2, 3, 4, 5, 6, 7, 8, 9] +const ar = [1, 2, 3, 4, 5, 6, 7, 8, 9] SearchArray(3, ar) SearchArray(4, ar) SearchArray(11, ar) diff --git a/Sorts/GnomeSort.js b/Sorts/GnomeSort.js index d8ccd5ce02..64434d5f8d 100644 --- a/Sorts/GnomeSort.js +++ b/Sorts/GnomeSort.js @@ -23,7 +23,7 @@ function gnomeSort (items) { // Implementation of gnomeSort -var ar = [5, 6, 7, 8, 1, 2, 12, 14] +const ar = [5, 6, 7, 8, 1, 2, 12, 14] // Array before Sort console.log(ar) gnomeSort(ar) diff --git a/Sorts/HeapSort.js b/Sorts/HeapSort.js index d7540919e5..1f41c8ab03 100644 --- a/Sorts/HeapSort.js +++ b/Sorts/HeapSort.js @@ -50,7 +50,7 @@ function heapSort (items) { // Implementation of heapSort -var ar = [5, 6, 7, 8, 1, 2, 12, 14] +const ar = [5, 6, 7, 8, 1, 2, 12, 14] // Array before Sort console.log(ar) heapSort(ar) diff --git a/Sorts/InsertionSort.js b/Sorts/InsertionSort.js index 15ec02a600..d73f179d30 100644 --- a/Sorts/InsertionSort.js +++ b/Sorts/InsertionSort.js @@ -5,9 +5,9 @@ * the correct position and expand sorted part one element at a time. */ function insertionSort (unsortedList) { - var len = unsortedList.length - for (var i = 1; i < len; i++) { - var tmp = unsortedList[i] // Copy of the current element. + const len = unsortedList.length + for (let i = 1; i < len; i++) { + const tmp = unsortedList[i] // Copy of the current element. /* Check through the sorted part and compare with the number in tmp. If large, shift the number */ for (var j = i - 1; j >= 0 && (unsortedList[j] > tmp); j--) { // Shift the number @@ -19,6 +19,6 @@ function insertionSort (unsortedList) { } } -var arr = [5, 3, 1, 2, 4, 8, 3, 8] +const arr = [5, 3, 1, 2, 4, 8, 3, 8] insertionSort(arr) console.log(arr) diff --git a/Sorts/IntroSort.js b/Sorts/IntroSort.js index e7ba322c5e..887788e51e 100644 --- a/Sorts/IntroSort.js +++ b/Sorts/IntroSort.js @@ -28,12 +28,12 @@ function introsort (array, compare) { * 0 if a is equal to b * 1 if a greater than b */ - var defaultComparator = function (x, y) { + const defaultComparator = function (x, y) { if (x === undefined && y === undefined) return 0 if (x === undefined) return 1 if (y === undefined) return -1 - var xString = toString(x) - var yString = toString(y) + const xString = toString(x) + const yString = toString(y) if (xString < yString) return -1 if (xString > yString) return 1 return 0 @@ -75,8 +75,8 @@ function introsort (array, compare) { * [IIFE](https://en.wikipedia.org/wiki/Immediately_invoked_function_expression) */ return (function (array, comparator) { - var swap = function (index1, index2) { - var temp = array[index1] + const swap = function (index1, index2) { + const temp = array[index1] array[index1] = array[index2] array[index2] = temp } @@ -85,14 +85,14 @@ function introsort (array, compare) { * If the length of array is less than * this then we simply perform insertion sort */ - var THRESHOLD = 16 + const THRESHOLD = 16 /** * @constant TUNEMAXDEPTH * Constant usec to increase or decrease value * of maxDepth */ - var TUNEMAXDEPTH = 1 - var len = array.length + const TUNEMAXDEPTH = 1 + const len = array.length /** * Return if array is only of length 1 * Array of size 1 is always sorted @@ -104,7 +104,7 @@ function introsort (array, compare) { * Calculate maxDepth = log2(len) * Taken from implementation in stdc++ */ - var maxDepth = Math.floor(Math.log2(len)) * TUNEMAXDEPTH + const maxDepth = Math.floor(Math.log2(len)) * TUNEMAXDEPTH /** * The very first call to quicksort * this initiates sort routine @@ -133,7 +133,7 @@ function introsort (array, compare) { heapSort(start, last) return } - var pivot = (last + start) >> 1 + let pivot = (last + start) >> 1 pivot = partition(start, last, pivot) quickSort(start, pivot, depth - 1) quickSort(pivot + 1, last, depth - 1) @@ -148,8 +148,8 @@ function introsort (array, compare) { function partition (start, last, pivot) { swap(start, pivot) pivot = start - var lo = start - var hi = last + let lo = start + let hi = last while (true) { lo++ while (comparator(array[lo], array[pivot]) <= 0 && lo !== last) { @@ -175,7 +175,7 @@ function introsort (array, compare) { * @param {Number} last one more than last index of array to be sorted */ function insertionSort (start, last) { - var i, j + let i, j for (i = start + 1; i < last; i++) { j = i - 1 while (j >= 0 && comparator(array[j], array[j + 1]) > 0) { @@ -192,7 +192,7 @@ function introsort (array, compare) { * @param {Number} last one more than last index of array to be sorted */ function heapSort (start, last) { - var x = (last + start) >> 1 + let x = (last + start) >> 1 while (x - start >= 0) { heapify(x, start, last) x-- @@ -211,8 +211,8 @@ function introsort (array, compare) { * @param {Number} last one more than last index of segment that cur belongs to */ function heapify (cur, start, last) { - var size = last - start - var max, lt, rt + const size = last - start + let max, lt, rt cur = cur - start while (true) { max = cur @@ -250,9 +250,9 @@ function introsort (array, compare) { (function demo () { const data = [] const size = 1000000 - var i = 0 - var temp - var c = function (a, b) { + let i = 0 + let temp + const c = function (a, b) { return a - b } for (i = 0; i < size; i++) { @@ -260,7 +260,7 @@ function introsort (array, compare) { data.push(temp) } introsort(data, c) - var faulty = false + let faulty = false for (i = 1; i < size; i++) { if (data[i] < data[i - 1]) { faulty = true @@ -283,8 +283,8 @@ function introsort (array, compare) { const data = [] const data2 = [] const size = 1000000 - var i = 0 - var temp + let i = 0 + let temp for (i = 0; i < size; i++) { temp = Math.random() * Number.MAX_SAFE_INTEGER data.push(temp) @@ -292,7 +292,7 @@ function introsort (array, compare) { } introsort(data) data2.sort() - var faulty = false + let faulty = false for (i = 1; i < size; i++) { if (data[i] !== data2[i]) { faulty = true diff --git a/Sorts/MergeSort.js b/Sorts/MergeSort.js index b634704cfb..de4993810a 100644 --- a/Sorts/MergeSort.js +++ b/Sorts/MergeSort.js @@ -35,7 +35,7 @@ */ function merge (list1, list2) { - var results = [] + const results = [] while (list1.length && list2.length) { if (list1[0] <= list2[0]) { @@ -55,15 +55,15 @@ function merge (list1, list2) { function mergeSort (list) { if (list.length < 2) return list - var listHalf = Math.floor(list.length / 2) - var subList1 = list.slice(0, listHalf) - var subList2 = list.slice(listHalf, list.length) + const listHalf = Math.floor(list.length / 2) + const subList1 = list.slice(0, listHalf) + const subList2 = list.slice(listHalf, list.length) return merge(mergeSort(subList1), mergeSort(subList2)) } // Merge Sort Example -var unsortedArray = [10, 5, 3, 8, 2, 6, 4, 7, 9, 1] -var sortedArray = mergeSort(unsortedArray) +const unsortedArray = [10, 5, 3, 8, 2, 6, 4, 7, 9, 1] +const sortedArray = mergeSort(unsortedArray) console.log('Before:', unsortedArray, 'After:', sortedArray) diff --git a/Sorts/QuickSort.js b/Sorts/QuickSort.js index 933b502caf..204e04b1d8 100644 --- a/Sorts/QuickSort.js +++ b/Sorts/QuickSort.js @@ -17,16 +17,16 @@ */ function quickSort (items) { - var length = items.length + const length = items.length if (length <= 1) { return items } - var PIVOT = items[0] - var GREATER = [] - var LESSER = [] + const PIVOT = items[0] + const GREATER = [] + const LESSER = [] - for (var i = 1; i < length; i++) { + for (let i = 1; i < length; i++) { if (items[i] > PIVOT) { GREATER.push(items[i]) } else { @@ -34,7 +34,7 @@ function quickSort (items) { } } - var sorted = quickSort(LESSER) + let sorted = quickSort(LESSER) sorted.push(PIVOT) sorted = sorted.concat(quickSort(GREATER)) @@ -43,7 +43,7 @@ function quickSort (items) { // Implementation of quick sort -var ar = [0, 5, 3, 2, 2] +let ar = [0, 5, 3, 2, 2] // Array before Sort console.log(ar) ar = quickSort(ar) diff --git a/Sorts/RadixSort.js b/Sorts/RadixSort.js index b6eb208e99..3696aba961 100644 --- a/Sorts/RadixSort.js +++ b/Sorts/RadixSort.js @@ -10,29 +10,29 @@ function radixSort (items, RADIX) { RADIX = 10 } - var maxLength = false - var placement = 1 + let maxLength = false + let placement = 1 while (!maxLength) { maxLength = true - var buckets = [] + const buckets = [] - for (var i = 0; i < RADIX; i++) { + for (let i = 0; i < RADIX; i++) { buckets.push([]) } - for (var j = 0; j < items.length; j++) { - var tmp = items[j] / placement + for (let j = 0; j < items.length; j++) { + const tmp = items[j] / placement buckets[Math.floor(tmp % RADIX)].push(items[j]) if (maxLength && tmp > 0) { maxLength = false } } - var a = 0 - for (var b = 0; b < RADIX; b++) { - var buck = buckets[b] - for (var k = 0; k < buck.length; k++) { + let a = 0 + for (let b = 0; b < RADIX; b++) { + const buck = buckets[b] + for (let k = 0; k < buck.length; k++) { items[a] = buck[k] a++ } @@ -44,7 +44,7 @@ function radixSort (items, RADIX) { // Implementation of radixSort -var ar = [5, 6, 7, 8, 1, 2, 12, 14] +const ar = [5, 6, 7, 8, 1, 2, 12, 14] // Array before Sort console.log(ar) radixSort(ar) diff --git a/Sorts/SelectionSort.test.js b/Sorts/SelectionSort.test.js index 57ad1e8ecf..090ccc0a5a 100644 --- a/Sorts/SelectionSort.test.js +++ b/Sorts/SelectionSort.test.js @@ -2,7 +2,7 @@ import { selectionSort } from './SelectionSort' describe('selectionSort', () => { it('expects to return the array sorted in ascending order', () => { - var toSort = [5, 6, 7, 8, 1, 2, 12, 14] + const toSort = [5, 6, 7, 8, 1, 2, 12, 14] const expected = [1, 2, 5, 6, 7, 8, 12, 14] expect(selectionSort(toSort)).toEqual(expected) diff --git a/Sorts/ShellSort.js b/Sorts/ShellSort.js index 43f29b537a..e32af561c5 100644 --- a/Sorts/ShellSort.js +++ b/Sorts/ShellSort.js @@ -4,16 +4,16 @@ * */ function shellSort (items) { - var interval = 1 + let interval = 1 while (interval < items.length / 3) { interval = interval * 3 + 1 } while (interval > 0) { - for (var outer = interval; outer < items.length; outer++) { - var value = items[outer] - var inner = outer + for (let outer = interval; outer < items.length; outer++) { + const value = items[outer] + let inner = outer while (inner > interval - 1 && items[inner - interval] >= value) { items[inner] = items[inner - interval] @@ -28,7 +28,7 @@ function shellSort (items) { // Implementation of shellSort -var ar = [5, 6, 7, 8, 1, 2, 12, 14] +const ar = [5, 6, 7, 8, 1, 2, 12, 14] // Array before Sort console.log(ar) shellSort(ar) diff --git a/Sorts/TopologicalSort.js b/Sorts/TopologicalSort.js index e784ad0e6b..c9c5dc5e0d 100644 --- a/Sorts/TopologicalSort.js +++ b/Sorts/TopologicalSort.js @@ -1,10 +1,10 @@ function TopologicalSorter () { - var graph = {} - var isVisitedNode - var finishTimeCount - var finishingTimeList - var nextNode + const graph = {} + let isVisitedNode + let finishTimeCount + let finishingTimeList + let nextNode this.addOrder = function (nodeA, nodeB) { nodeA = String(nodeA) @@ -18,7 +18,7 @@ function TopologicalSorter () { finishTimeCount = 0 finishingTimeList = [] - for (var node in graph) { + for (const node in graph) { if (Object.prototype.hasOwnProperty.call(graph, node) && !isVisitedNode[node]) { dfsTraverse(node) } @@ -34,7 +34,7 @@ function TopologicalSorter () { function dfsTraverse (node) { isVisitedNode[node] = true if (graph[node]) { - for (var i = 0; i < graph[node].length; i++) { + for (let i = 0; i < graph[node].length; i++) { nextNode = graph[node][i] if (isVisitedNode[nextNode]) continue dfsTraverse(nextNode) @@ -49,7 +49,7 @@ function TopologicalSorter () { } /* TEST */ -var topoSorter = new TopologicalSorter() +const topoSorter = new TopologicalSorter() topoSorter.addOrder(5, 2) topoSorter.addOrder(5, 0) topoSorter.addOrder(4, 0) diff --git a/Sorts/WiggleSort.js b/Sorts/WiggleSort.js index fdb2a70db1..4c303c672a 100644 --- a/Sorts/WiggleSort.js +++ b/Sorts/WiggleSort.js @@ -18,7 +18,7 @@ Array.prototype.wiggleSort = function () { // Implementation of wiggle sort -var arr = [3, 5, 2, 1, 6, 4] +const arr = [3, 5, 2, 1, 6, 4] // Array before Wiggle Sort console.log(arr) // [3, 5, 2, 1, 6, 4] diff --git a/Trees/DepthFirstSearch.js b/Trees/DepthFirstSearch.js index ec8ca7e669..0833d9d1de 100644 --- a/Trees/DepthFirstSearch.js +++ b/Trees/DepthFirstSearch.js @@ -25,13 +25,13 @@ function traverseDFS (root) { } function searchDFS (tree, value) { - var stack = [] + const stack = [] stack.push(tree[0]) while (stack.length !== 0) { for (let i = 0; i < stack.length; i++) { - var node = stack.pop() + const node = stack.pop() if (node.value === value) { return node @@ -47,7 +47,7 @@ function searchDFS (tree, value) { return null } -var tree = [ +const tree = [ { value: 6, left: 1, right: 2 }, { value: 5, left: 3, right: 4 }, { value: 7, left: null, right: 5 }, From f1769c4df623bec7029c1383c7a2004ddedd765f Mon Sep 17 00:00:00 2001 From: Rak Laptudirm <68542775+raklaptudirm@users.noreply.github.com> Date: Fri, 21 May 2021 11:27:48 +0530 Subject: [PATCH 02/11] feat(ZeroOneKnapsack.js): Fixed bad code --- Dynamic-Programming/ZeroOneKnapsack.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Dynamic-Programming/ZeroOneKnapsack.js b/Dynamic-Programming/ZeroOneKnapsack.js index 0274fdefdb..f3c47135fc 100644 --- a/Dynamic-Programming/ZeroOneKnapsack.js +++ b/Dynamic-Programming/ZeroOneKnapsack.js @@ -50,10 +50,9 @@ const main = () => { arr.push(input[j]) j++ } - const newArr = [] - arr.map(e => { - newArr.push(e.trim().split(' ').map(Number)) - }) + const newArr = arr.map(e => + e.trim().split(' ').map(Number) + ) const cache = [] for (let i = 0; i <= currlen; i++) { const temp = [] From b702faadc5be705332634e7f7c08f4a75d411f15 Mon Sep 17 00:00:00 2001 From: Rak Laptudirm <68542775+raklaptudirm@users.noreply.github.com> Date: Fri, 21 May 2021 11:38:25 +0530 Subject: [PATCH 03/11] feat(Polynomial.js): Fixed bad code --- Maths/Polynomial.js | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Maths/Polynomial.js b/Maths/Polynomial.js index 41ec340ee7..5df31fdc00 100644 --- a/Maths/Polynomial.js +++ b/Maths/Polynomial.js @@ -32,11 +32,9 @@ class Polynomial { return `(${coefficient}x^${exponent})` } }) - .filter((x) => { - if (x !== '0') { - return x - } - }) + .filter((x) => + x !== '0' + ) .reverse() .join(' + ') } From 8b7c5fdc57249dd0e44bd0507bd3c5174e74a96f Mon Sep 17 00:00:00 2001 From: Rak Laptudirm <68542775+raklaptudirm@users.noreply.github.com> Date: Fri, 21 May 2021 11:52:37 +0530 Subject: [PATCH 04/11] style(InsertionSort.js): Changed var to let (scope taken into account) --- Sorts/InsertionSort.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Sorts/InsertionSort.js b/Sorts/InsertionSort.js index d73f179d30..5812acf819 100644 --- a/Sorts/InsertionSort.js +++ b/Sorts/InsertionSort.js @@ -7,9 +7,10 @@ function insertionSort (unsortedList) { const len = unsortedList.length for (let i = 1; i < len; i++) { + let j const tmp = unsortedList[i] // Copy of the current element. /* Check through the sorted part and compare with the number in tmp. If large, shift the number */ - for (var j = i - 1; j >= 0 && (unsortedList[j] > tmp); j--) { + for (j = i - 1; j >= 0 && (unsortedList[j] > tmp); j--) { // Shift the number unsortedList[j + 1] = unsortedList[j] } From c62d169c211399491a293a0baf003112103e62d2 Mon Sep 17 00:00:00 2001 From: Rak Laptudirm <68542775+raklaptudirm@users.noreply.github.com> Date: Fri, 21 May 2021 11:57:24 +0530 Subject: [PATCH 05/11] style(IntroSort.js): let to const --- Sorts/IntroSort.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sorts/IntroSort.js b/Sorts/IntroSort.js index 887788e51e..57edb4e8d2 100644 --- a/Sorts/IntroSort.js +++ b/Sorts/IntroSort.js @@ -45,7 +45,7 @@ function introsort (array, compare) { * @param {Object} obj * @returns {String} String representation of given object */ - var toString = function (obj) { + const toString = function (obj) { if (obj === null) return 'null' if (typeof obj === 'boolean' || typeof obj === 'number') { return obj.toString() From 7992caa54f7823afc68fa59937d586e6017e328c Mon Sep 17 00:00:00 2001 From: Rak Laptudirm <68542775+raklaptudirm@users.noreply.github.com> Date: Fri, 21 May 2021 12:35:12 +0530 Subject: [PATCH 06/11] feat(PermutateString.js): Array.prototype.map() -> Array.prototype.forEach() --- String/PermutateString.js | 2 +- package-lock.json | 20 ++++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/String/PermutateString.js b/String/PermutateString.js index e470d7ac35..8ba4bc8a72 100644 --- a/String/PermutateString.js +++ b/String/PermutateString.js @@ -18,7 +18,7 @@ const permutate = (aString) => { const calculateCurrentCharacterPermutation = (allPermutations, currentCharacter) => { const currentPermutations = [] - allPermutations.map(permutation => { + allPermutations.forEach(permutation => { let index = 0 while (index <= permutation.length) { const tmp = [...permutation] diff --git a/package-lock.json b/package-lock.json index 3d7e041619..3080ac5966 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2469,8 +2469,7 @@ "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "aws-sign2": { "version": "0.7.0", @@ -4117,7 +4116,8 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true + "dev": true, + "optional": true }, "har-schema": { "version": "2.0.0", @@ -4657,6 +4657,7 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "optional": true, "requires": { "is-docker": "^2.0.0" } @@ -7187,6 +7188,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "optional": true, "requires": { "yallist": "^4.0.0" } @@ -7380,6 +7382,7 @@ "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.1.tgz", "integrity": "sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA==", "dev": true, + "optional": true, "requires": { "growly": "^1.3.0", "is-wsl": "^2.2.0", @@ -7394,6 +7397,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", "dev": true, + "optional": true, "requires": { "lru-cache": "^6.0.0" } @@ -7402,13 +7406,15 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true + "dev": true, + "optional": true }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "optional": true, "requires": { "isexe": "^2.0.0" } @@ -8543,7 +8549,8 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true + "dev": true, + "optional": true }, "signal-exit": { "version": "3.0.3", @@ -9553,7 +9560,8 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "optional": true }, "yargs": { "version": "15.4.1", From b77c0a18e2f2bc9eec62610a976012eff91ba4a4 Mon Sep 17 00:00:00 2001 From: Rak Laptudirm <68542775+raklaptudirm@users.noreply.github.com> Date: Fri, 21 May 2021 12:52:06 +0530 Subject: [PATCH 07/11] fix(LevenshteinDistance.test.js): Fixed broken test --- String/LevenshteinDistance.test.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/String/LevenshteinDistance.test.js b/String/LevenshteinDistance.test.js index 777884c366..e713f6d9e5 100644 --- a/String/LevenshteinDistance.test.js +++ b/String/LevenshteinDistance.test.js @@ -1,4 +1,4 @@ -import levenshteinDistance from './LevenshteinDistance' +import { levenshteinDistance } from './LevenshteinDistance' describe('levenshteinDistance', () => { it('should calculate edit distance between two strings', () => { @@ -14,13 +14,13 @@ describe('levenshteinDistance', () => { // Should just substitute i with o, m with g and insert e at end expect(levenshteinDistance('firm', 'forge')).toBe(3) - // Should just substitute i with s, g with i, h with t and delete f from front - expect(levenshteinDistance('fighting', 'sitting')).toBe(4) + // Should just substitute f with s, g with t and delete h + expect(levenshteinDistance('fighting', 'sitting')).toBe(3) // Should add 4 letters b, a, s and e at the beginning. expect(levenshteinDistance('ball', 'baseball')).toBe(4) - // Should delete 4 letters b, a, s and e at the beginning. - expect(levenshteinDistance('baseball', 'foot')).toBe(4) + // Should delete 4 letters b, a, s and e at the beginning and replace the last 4 with f, o, o, t + expect(levenshteinDistance('baseball', 'foot')).toBe(8) }) }) From 2bf0ccf00d2801a351539337bb6f0118671dbdde Mon Sep 17 00:00:00 2001 From: Rak Laptudirm <68542775+raklaptudirm@users.noreply.github.com> Date: Fri, 21 May 2021 13:02:40 +0530 Subject: [PATCH 08/11] fix(LinearAlgebra): Fix BADLY broken doctest. All tests passed. --- Linear-Algebra/src/la_lib.js | 2 ++ Linear-Algebra/test/test.js | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Linear-Algebra/src/la_lib.js b/Linear-Algebra/src/la_lib.js index 43645b11df..41f99a3078 100644 --- a/Linear-Algebra/src/la_lib.js +++ b/Linear-Algebra/src/la_lib.js @@ -309,3 +309,5 @@ let LinearAlgebra; }()) // end of class Matrix LinearAlgebra.Matrix = Matrix })(LinearAlgebra || (LinearAlgebra = {})) // end of namespace LinearAlgebra + +export { LinearAlgebra } diff --git a/Linear-Algebra/test/test.js b/Linear-Algebra/test/test.js index 5f1892db89..1deb0f8b29 100644 --- a/Linear-Algebra/test/test.js +++ b/Linear-Algebra/test/test.js @@ -7,11 +7,12 @@ */ /* eslint-disable */ +import { LinearAlgebra } from "../src/la_lib" + var assert = require('assert') var fs = require('fs') // file is included here -eval(fs.readFileSync('src/la_lib.js') + '') // Tests goes here // creating some vectors From 51f80fe2b0dc4ec6f4f4ec9b28637bef407be13e Mon Sep 17 00:00:00 2001 From: Rak Laptudirm <68542775+raklaptudirm@users.noreply.github.com> Date: Sat, 22 May 2021 21:02:14 +0530 Subject: [PATCH 09/11] fix: Fix MergeSort conflict --- Sorts/MergeSort.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/Sorts/MergeSort.js b/Sorts/MergeSort.js index de4993810a..8e2128f043 100644 --- a/Sorts/MergeSort.js +++ b/Sorts/MergeSort.js @@ -36,15 +36,18 @@ function merge (list1, list2) { const results = [] + let i = 0 + let j = 0 - while (list1.length && list2.length) { - if (list1[0] <= list2[0]) { - results.push(list1.shift()) + while (i < list1.length && j < list2.length) { + if (list1[i] < list2[j]) { + results.push(list1[i++]) } else { - results.push(list2.shift()) + results.push(list2[j++]) } } - return results.concat(list1, list2) + + return results.concat(list1.slice(i), list2.slice(j)) } /** From a93abac98dfb9bb8840580929079c0de04995803 Mon Sep 17 00:00:00 2001 From: Rak Laptudirm <68542775+raklaptudirm@users.noreply.github.com> Date: Sat, 22 May 2021 21:13:00 +0530 Subject: [PATCH 10/11] Fixes #539 --- .github/workflows/nodejs.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 361d1abadd..1e8fcc66dd 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -15,12 +15,10 @@ jobs: - name: npm install, build, and test run: | npm install doctest standard --save-dev - npx doctest **/*.js || true # TODO: error: Line 1: Unexpected token >> + npx doctest **/*.js # TODO: error: Line 1: Unexpected token >> npx standard npm ci npm run build --if-present - # TODO: Remove the next line when #539 is fixed. - rm Linear-Algebra/test/test.js String/LevenshteinDistance.test.js npm test env: CI: true From cf98deda8e7a6798802a4b88b134cda8fec215db Mon Sep 17 00:00:00 2001 From: Rak Laptudirm <68542775+raklaptudirm@users.noreply.github.com> Date: Sat, 22 May 2021 21:20:36 +0530 Subject: [PATCH 11/11] fix: Fixed TODO message Need to add Doctests to all Algos --- .github/workflows/nodejs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 1e8fcc66dd..39b9ee5447 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -15,7 +15,7 @@ jobs: - name: npm install, build, and test run: | npm install doctest standard --save-dev - npx doctest **/*.js # TODO: error: Line 1: Unexpected token >> + npx doctest **/*.js || true # TODO: Add all doctests npx standard npm ci npm run build --if-present pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy