Building a function that helps to find the total possible combinations of a set with Javascript

View this thread on: d.buzz | hive.blog | peakd.com | ecency.com
·@gotgame·
0.000 HBD
Building a function that helps to find the total possible combinations of a set with Javascript
In mathematics, the idea of combination [according to Wikipedia](https://en.wikipedia.org/wiki/Combination) can be defined as a selection of items from a set that has distinct members, such that the order of selection does not matter (unlike permutations).

A combination, basically in my own terms is a rearrangement of elements of one set randomly but with a finite number of possible rearrangements per element and a preset rule that dictates how the elements are arranged.

That's not an exactly thorough definition but you should get a basic picture of what we are trying to do now.

But for clarity sake, you can check out an example I got from [BetterExplained](https://betterexplained.com/articles/easy-permutations-and-combinations/)

Let's say we need to pick a team of three people from a group of 10 people.

Now we have a variable value `x` which represents the total number of available options to pick from and that is 10.

And we also have another constant value `y` which is equal to 3 and is the number of people to select for the team.

Take note that the value of `x` can change and will change during the selection process and that is why it is termed a variable while the value on `y` cannot change at any point in time hence, constant.

Now, we have 

```
let x = 10;
const y = 3;
```

Let's leave that for now.

In order to get all possible combinations for the 3 members of a team out of 10 possible members, we have to create a set of new sets or subsets if you'd like and each subset will contain each member of the original set and two other members of the set until we have a new set featuring each member of the set at least once.

The total number of elements in that new set is the total number of possible combinations for that selection process

Again, that's not very exact and that is because according to [MathsIsFun](https://www.mathsisfun.com/combinatorics/combinations-permutations.html) combinations are of two types

- Combination with repetition
- Combination without repetition

Now back to our function, let's name it `getAllCombinations` so that we have in our code editor

```
async function getAllCombinations (a, b) {}
```

In the function above `a` is the variable value which is subject to change while `b` is the constant value that won't change.

In the example `a` would be 10 and `b` would be 3.

Combination can be calculated using a simple mathematical formula which is

```
n!/r!(n−r)! = (n r)
```

Where,

`n!(pronounced n factorial) is simply the multiplication of a number and every other number less than that number`

So the factorial of 3 can be calculated by multiplying `3 x 2 x 1` which is equal to 6.

In order to find the combination of a selection, we just have multiply a number of factorials.

`(n r)` is a denotation for combination on `n` and `r`.

In our formula `n` is the variable while `r` is the constant

In order to find the factorial for our values we are going to use a function that I found on [Educative](https://www.educative.io/edpresso/how-to-find-the-factorial-of-a-number-in-javascript)

In our code we will add a new function `factorial` 

```
function factorial(n){
  let answer = 1;
  if (n == 0 || n == 1){
    return answer;
  }else{
    for(var i = n; i >= 1; i--){
      answer = answer * i;
    }
    return answer;
  }  
}
```

We will then utilize this function in our previously created function `getAllCombinations`.

Applying the formula our function will now look like

```
function getAllCombinations (a, b) {
	function factorial(n){
	    let answer = 1;
	    if (n == 0 || n == 1){
		return answer;
   	    }else{
		for(var i = n; i >= 1; i--){
			answer = answer * i;
		}
		return answer;
	  }  
   }

   const upper = factorial(a)
  const lower = factorial(b) * factorial(a - b)
  console.log(upper/lower)
}
```

Now, let's test our example above using our created variables

```
let x = 10;
const y = 3;
```

If we run the function `getAllCombinations(10, 3)`, in the browser console we should get the value `120` which is the correct answer for a possible combination of 10 and 3.

![3speak_snippet.png](https://images.ecency.com/DQmU525TaYFWEffyLgMVJwX8aRSp7EuED8pFFfffFBi3B26/3speak_snippet.png)
👍 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,