Merge branch 'kadanes' of https://github.com/thisabhijeet/Javascript into kadanes

This commit is contained in:
Abhijeet Tiwari
2021-10-06 14:45:56 +05:30
5 changed files with 12489 additions and 10 deletions

View File

@ -0,0 +1,44 @@
/*
Problem: Given two numbers, n and k, make all unique combinations of k numbers from 1 to n and in sorted order
What is combinations?
- Combinations is selecting items froms a collections without considering order of selection
Example:
- We have an apple, a banana, and a jackfruit
- We have three objects, and need to choose two items, then combinations will be
1. Apple & Banana
2. Apple & Jackfruit
3. Banana & Jackfruit
To read more about combinations, you can visit the following link:
- https://betterexplained.com/articles/easy-permutations-and-combinations/
Solution:
- We will be using backtracking to solve this questions
- Take one element, and make all them combinations for k-1 elements
- Once we get all combinations of that element, pop it and do same for next element
*/
class Combinations {
constructor (n, k) {
this.n = n
this.k = k
this.combinationArray = [] // will be used for storing current combination
}
findCombinations (high = this.n, total = this.k, low = 1) {
if (total === 0) {
console.log(this.combinationArray)
return
}
for (let i = low; i <= high; i++) {
this.combinationArray.push(i)
this.findCombinations(high, total - 1, i + 1)
this.combinationArray.pop()
}
}
}
export { Combinations }

View File

@ -0,0 +1,13 @@
import { Combinations } from '../AllCombinationsOfSizeK'
describe('AllCombinationsOfSizeK', () => {
it('should return 3x2 matrix solution for n = 3 and k = 2', () => {
const test1 = new Combinations(3, 2)
expect(test1.findCombinations).toEqual([[1, 2], [1, 3], [2, 3]])
})
it('should return 6x2 matrix solution for n = 3 and k = 2', () => {
const test2 = new Combinations(4, 2)
expect(test2.findCombinations).toEqual([[1, 2], [1, 3], [1, 4], [2, 3], [2, 4], [3, 4]])
})
})

View File

@ -1,5 +1,6 @@
## Backtracking
* [AllCombinationsOfSizeK](https://github.com/TheAlgorithms/Javascript/blob/master/Backtracking/AllCombinationsOfSizeK.js)
* [GeneratePermutations](https://github.com/TheAlgorithms/Javascript/blob/master/Backtracking/GeneratePermutations.js)
* [KnightTour](https://github.com/TheAlgorithms/Javascript/blob/master/Backtracking/KnightTour.js)
* [NQueen](https://github.com/TheAlgorithms/Javascript/blob/master/Backtracking/NQueen.js)

12437
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -14,10 +14,10 @@
"@babel/core": "^7.11.6",
"@babel/plugin-transform-runtime": "^7.11.5",
"@babel/preset-env": "^7.11.5",
"atob": "2.1.2",
"jsdom": "^16.3.0",
"node": "^14.13.1",
"node-fetch": "2.6.1",
"atob": "2.1.2"
"node-fetch": "2.6.1"
},
"standard": {
"env": [