From cabf733df248501f0910753cfdf2466ada5cf319 Mon Sep 17 00:00:00 2001 From: itsvinayak Date: Mon, 4 May 2020 17:56:00 +0530 Subject: [PATCH 1/2] search/ --- Search/linearSearch.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Search/linearSearch.js b/Search/linearSearch.js index b7a7662d1..06d9e94a6 100644 --- a/Search/linearSearch.js +++ b/Search/linearSearch.js @@ -6,7 +6,7 @@ */ function SearchArray (searchNum, ar) { var position = Search(ar, searchNum) - if (position != -1) { + if (position !== -1) { console.log('The element was found at ' + (position + 1)) } else { console.log('The element not found') @@ -16,7 +16,7 @@ function SearchArray (searchNum, ar) { // Search “theArray” for the specified “key” value function Search (theArray, key) { for (var n = 0; n < theArray.length; n++) { - if (theArray[n] == key) { return n } + if (theArray[n] === key) { return n } } return -1 } From fc0aba01ace4b3e23e95d2439a185d89e2ec15f9 Mon Sep 17 00:00:00 2001 From: itsvinayak Date: Tue, 5 May 2020 16:58:57 +0530 Subject: [PATCH 2/2] math/ --- maths/DijkstraSmallestPath.js | 141 +++++++++++++-------------- maths/abs.js | 6 +- maths/factorial.js | 10 +- maths/find_lcm.js | 28 +++--- maths/graph.js | 177 ++++++++++++++++------------------ 5 files changed, 174 insertions(+), 188 deletions(-) diff --git a/maths/DijkstraSmallestPath.js b/maths/DijkstraSmallestPath.js index 059b59461..25571ed72 100644 --- a/maths/DijkstraSmallestPath.js +++ b/maths/DijkstraSmallestPath.js @@ -1,71 +1,66 @@ // starting at s -function solve(graph, s) { - var solutions = {}; - solutions[s] = []; - solutions[s].dist = 0; - - while(true) { - var p = null; - var neighbor = null; - var dist = Infinity; - - - for(var n in solutions) { - if(!solutions[n]) - continue - var ndist = solutions[n].dist; - var adj = graph[n]; - - for(var a in adj) { +function solve (graph, s) { + var solutions = {} + solutions[s] = [] + solutions[s].dist = 0 - if(solutions[a]) - continue; - - var d = adj[a] + ndist; - if(d < dist) { - - p = solutions[n]; - neighbor = a; - dist = d; + while (true) { + var p = null + var neighbor = null + var dist = Infinity + + for (var n in solutions) { + if (!solutions[n]) { continue } + var ndist = solutions[n].dist + var adj = graph[n] + + for (var a in adj) { + if (solutions[a]) { continue } + + var d = adj[a] + ndist + if (d < dist) { + p = solutions[n] + neighbor = a + dist = d } } } - - //no more solutions - if(dist === Infinity) { - break; + + // no more solutions + if (dist === Infinity) { + break } - - //extend parent's solution path - solutions[neighbor] = p.concat(neighbor); - //extend parent's cost - solutions[neighbor].dist = dist; + + // extend parent's solution path + solutions[neighbor] = p.concat(neighbor) + // extend parent's cost + solutions[neighbor].dist = dist } - - return solutions; + + return solutions } -//create graph -var graph = {}; +// create graph +var graph = {} var layout = { - 'R': ['2'], - '2': ['3','4'], - '3': ['4','6','13'], - '4': ['5','8'], - '5': ['7','11'], - '6': ['13','15'], - '7': ['10'], - '8': ['11','13'], - '9': ['14'], - '10': [], - '11': ['12'], - '12': [], - '13': ['14'], - '14': [], - '15': [] + R: ['2'], + 2: ['3', '4'], + 3: ['4', '6', '13'], + 4: ['5', '8'], + 5: ['7', '11'], + 6: ['13', '15'], + 7: ['10'], + 8: ['11', '13'], + 9: ['14'], + 10: [], + 11: ['12'], + 12: [], + 13: ['14'], + 14: [], + 15: [] } -//convert uni-directional to bi-directional graph +// convert uni-directional to bi-directional graph // var graph = { // a: {e:1, b:1, g:3}, // b: {a:1, c:1}, @@ -77,27 +72,25 @@ var layout = { // h: {f:1} // }; -for(var id in layout) { - if(!graph[id]) - graph[id] = {}; - layout[id].forEach(function(aid) { - graph[id][aid] = 1; - if(!graph[aid]) - graph[aid] = {}; - graph[aid][id] = 1; - }); +for (var id in layout) { + if (!graph[id]) { graph[id] = {} } + layout[id].forEach(function (aid) { + graph[id][aid] = 1 + if (!graph[aid]) { graph[aid] = {} } + graph[aid][id] = 1 + }) } -//choose start node -var start = '10'; -//get all solutions -var solutions = solve(graph, start); +// choose start node +var start = '10' +// get all solutions +var solutions = solve(graph, start) -console.log("From '"+start+"' to"); -//display solutions -for(var s in solutions) { - if(!solutions[s]) continue; - console.log(" -> " + s + ": [" + solutions[s].join(", ") + "] (dist:" + solutions[s].dist + ")"); +console.log("From '" + start + "' to") +// display solutions +for (var s in solutions) { + if (!solutions[s]) continue + console.log(' -> ' + s + ': [' + solutions[s].join(', ') + '] (dist:' + solutions[s].dist + ')') } // From '10' to diff --git a/maths/abs.js b/maths/abs.js index 1ff71e8ee..454e4073a 100644 --- a/maths/abs.js +++ b/maths/abs.js @@ -11,7 +11,7 @@ https://en.wikipedia.org/wiki/Absolute_value */ -function abs_val (num) { +function absVal (num) { // Find absolute value of `num`. 'use strict' if (num < 0) { @@ -22,5 +22,5 @@ function abs_val (num) { } // Run `abs` function to find absolute value of two numbers. -console.log('The absolute value of -34 is ' + abs_val(-34)) -console.log('The absolute value of 34 is ' + abs_val(34)) +console.log('The absolute value of -34 is ' + absVal(-34)) +console.log('The absolute value of 34 is ' + absVal(34)) diff --git a/maths/factorial.js b/maths/factorial.js index 3cdc1cc2f..bbbe7f7df 100644 --- a/maths/factorial.js +++ b/maths/factorial.js @@ -13,7 +13,7 @@ 'use strict' -function calc_range (num) { +function calcRange (num) { // Generate a range of numbers from 1 to `num`. var i = 1 var range = [] @@ -24,9 +24,9 @@ function calc_range (num) { return range } -function calc_factorial (num) { +function calcFactorial (num) { var factorial - var range = calc_range(num) + var range = calcRange(num) // Check if the number is negative, positive, null, undefined, or zero if (num < 0) { @@ -48,5 +48,5 @@ function calc_factorial (num) { } // Run `factorial` Function to find average of a list of numbers. -var num = prompt('Enter a number: ') -alert(calc_factorial(num)) +var num = console.log('Enter a number: ') +console.log(calcFactorial(num)) diff --git a/maths/find_lcm.js b/maths/find_lcm.js index 31746f2b7..60470e37e 100644 --- a/maths/find_lcm.js +++ b/maths/find_lcm.js @@ -3,7 +3,7 @@ license: GPL-3.0 or later Modified from: - https://github.com/TheAlgorithms/Python/blob/master/maths/find_lcm.py + https://github.com/TheAlgorithms/Python/blob/master/maths/findLcm.py More about LCM: https://en.wikipedia.org/wiki/Least_common_multiple @@ -12,27 +12,27 @@ 'use strict' // Find the LCM of two numbers. -function find_lcm (num_1, num_2) { - var max_num +function findLcm (num1, num2) { + var maxNum var lcm - // Check to see whether num_1 or num_2 is larger. - if (num_1 > num_2) { - max_num = num_1 + // Check to see whether num1 or num2 is larger. + if (num1 > num2) { + maxNum = num1 } else { - max_num = num_2 + maxNum = num2 } - lcm = max_num + lcm = maxNum while (true) { - if ((lcm % num_1 === 0) && (lcm % num_2 === 0)) { + if ((lcm % num1 === 0) && (lcm % num2 === 0)) { break } - lcm += max_num + lcm += maxNum } return lcm } -// Run `find_lcm` Function -var num_1 = 12 -var num_2 = 76 -console.log(find_lcm(num_1, num_2)) +// Run `findLcm` Function +var num1 = 12 +var num2 = 76 +console.log(findLcm(num1, num2)) diff --git a/maths/graph.js b/maths/graph.js index f97fc3cf0..3d9873759 100644 --- a/maths/graph.js +++ b/maths/graph.js @@ -1,95 +1,88 @@ -// create a graph class -class Graph { - // defining vertex array and - // adjacent list - constructor(noOfVertices) - { - this.noOfVertices = noOfVertices; - this.AdjList = new Map(); - } - - // functions to be implemented - - // addVertex(v) - // addEdge(v, w) - // printGraph() - - // bfs(v) - // dfs(v) +// create a graph class +class Graph { + // defining vertex array and + // adjacent list + constructor (noOfVertices) { + this.noOfVertices = noOfVertices + this.AdjList = new Map() + } + + // functions to be implemented + + // addVertex(v) + // addEdge(v, w) + // printGraph() + + // bfs(v) + // dfs(v) + + // add vertex to the graph + addVertex (v) { + // initialize the adjacent list with a + // null array + + this.AdjList.set(v, []) + } + + // add edge to the graph + addEdge (v, w) { + // get the list for vertex v and put the + // vertex w denoting edge between v and w + this.AdjList.get(v).push(w) + + // Since graph is undirected, + // add an edge from w to v also + this.AdjList.get(w).push(v) + } + + // Prints the vertex and adjacency list + printGraph () { + // get all the vertices + const getKeys = this.AdjList.keys() + + // iterate over the vertices + for (const i of getKeys) { + // great the corresponding adjacency list + // for the vertex + const getValues = this.AdjList.get(i) + let conc = '' + + // iterate over the adjacency list + // concatenate the values into a string + for (const j of getValues) { + conc += j + ' ' + } + + // print the vertex and its adjacency list + console.log(i + ' -> ' + conc) + } + } } - -// add vertex to the graph -addVertex(v) -{ - // initialize the adjacent list with a - // null array - this.AdjList.set(v, []); -} - -// add edge to the graph -addEdge(v, w) -{ - // get the list for vertex v and put the - // vertex w denoting edge between v and w - this.AdjList.get(v).push(w); - - // Since graph is undirected, - // add an edge from w to v also - this.AdjList.get(w).push(v); -} - - -// Prints the vertex and adjacency list -printGraph() -{ - // get all the vertices - var get_keys = this.AdjList.keys(); - - // iterate over the vertices - for (var i of get_keys) -{ - // great the corresponding adjacency list - // for the vertex - var get_values = this.AdjList.get(i); - var conc = ""; - - // iterate over the adjacency list - // concatenate the values into a string - for (var j of get_values) - conc += j + " "; - - // print the vertex and its adjacency list - console.log(i + " -> " + conc); - } -} - - // Example -var graph = new Graph(6); -var vertices = [ 'A', 'B', 'C', 'D', 'E', 'F' ]; - -// adding vertices -for (var i = 0; i < vertices.length; i++) { - g.addVertex(vertices[i]); -} - -// adding edges -g.addEdge('A', 'B'); -g.addEdge('A', 'D'); -g.addEdge('A', 'E'); -g.addEdge('B', 'C'); -g.addEdge('D', 'E'); -g.addEdge('E', 'F'); -g.addEdge('E', 'C'); -g.addEdge('C', 'F'); - -// prints all vertex and -// its adjacency list -// A -> B D E -// B -> A C -// C -> B E F -// D -> A E -// E -> A D F C -// F -> E C -g.printGraph(); +const graph = new Graph(6) +const vertices = ['A', 'B', 'C', 'D', 'E', 'F'] +// adding vertices +for (let i = 0; i < vertices.length; i++) { + graph.addVertex(vertices[i]) +} + +// adding edges +graph.addEdge('A', 'B') +graph.addEdge('A', 'D') +graph.addEdge('A', 'E') +graph.addEdge('B', 'C') +graph.addEdge('D', 'E') +graph.addEdge('E', 'F') +graph.addEdge('E', 'C') +graph.addEdge('C', 'F') + +// prints all vertex and +// its adjacency list +// A -> B D E +// B -> A C +// C -> B E F +// D -> A E +// E -> A D F C +// F -> E C +graph.printGraph()