Add ES6 Examples to all chapters (#38)
* add ES6 example for binary search * add ES6 example for selection sort * add ES6 example for countdown * add ES6 example for greet * add ES6 example for factorial * edit ES6 example for quicksort * add ES6 example for loop sum * add ES6 example for recursive sum * add ES6 example for recursive count * add ES6 example for recursive max * add ES6 example for price of groceries * add ES6 example for check voter * add ES6 example for breadth-first search * add ES6 example for dijkstras algorithm * edit ES6 example for dijkstras algorithm * edit ES6 example for set covering * add ES6 example for longest common subsequence
This commit is contained in:
committed by
Aditya Bhargava
parent
1a81d3e6b2
commit
ec2890a93d
29
08_greedy_algorithms/ES6/01_set_covering.js
Normal file
29
08_greedy_algorithms/ES6/01_set_covering.js
Normal file
@@ -0,0 +1,29 @@
|
||||
// You pass an array in, and it gets converted to a set.
|
||||
let statesNeeded = new Set(['mt', 'wa', 'or', 'id', 'nv', 'ut', 'ca', 'az']);
|
||||
|
||||
const stations = {};
|
||||
stations.kone = new Set(['id', 'nv', 'ut']);
|
||||
stations.ktwo = new Set(['wa', 'id', 'mt']);
|
||||
stations.kthree = new Set(['or', 'nv', 'ca']);
|
||||
stations.kfour = new Set(['nv', 'ut']);
|
||||
stations.kfive = new Set(['ca', 'az']);
|
||||
|
||||
const finalStations = new Set();
|
||||
|
||||
|
||||
while (statesNeeded.size) {
|
||||
let bestStation = null;
|
||||
let statesCovered = new Set();
|
||||
Object.keys(stations).forEach((station) => {
|
||||
const states = stations[station];
|
||||
const covered = new Set([...statesNeeded].filter(x => states.has(x)));
|
||||
if (covered.size > statesCovered.size) {
|
||||
bestStation = station;
|
||||
statesCovered = covered;
|
||||
}
|
||||
});
|
||||
statesNeeded = new Set([...statesNeeded].filter(x => !statesCovered.has(x)));
|
||||
finalStations.add(bestStation);
|
||||
}
|
||||
|
||||
console.log(finalStations); // Set { 'kone', 'ktwo', 'kthree', 'kfive' }
|
||||
Reference in New Issue
Block a user