mirror of
https://github.com/trekhleb/javascript-algorithms.git
synced 2025-12-08 19:06:00 +00:00
58 lines
1.6 KiB
Markdown
58 lines
1.6 KiB
Markdown
# Permutations
|
|
|
|
When the order doesn't matter, it is a **Combination**.
|
|
|
|
When the order **does** matter it is a **Permutation**.
|
|
|
|
**"The combination to the safe is 472"**. We do care about the order. `724` won't work, nor will `247`.
|
|
It has to be exactly `4-7-2`.
|
|
|
|
## Permutations without repetitions
|
|
|
|
A permutation, also called an “arrangement number” or “order”, is a rearrangement of
|
|
the elements of an ordered list `S` into a one-to-one correspondence with `S` itself.
|
|
|
|
Below are the permutations of string `ABC`.
|
|
|
|
`ABC ACB BAC BCA CBA CAB`
|
|
|
|
Or for example the first three people in a running race: you can't be first and second.
|
|
|
|
**Number of combinations**
|
|
|
|
```
|
|
n * (n-1) * (n -2) * ... * 1 = n!
|
|
```
|
|
|
|
## Permutations with repetitions
|
|
|
|
When repetition is allowed we have permutations with repetitions.
|
|
For example the the lock below: it could be `333`.
|
|
|
|

|
|
|
|
**Number of combinations**
|
|
|
|
```
|
|
n * n * n ... (r times) = n^r
|
|
```
|
|
|
|
## Cheat Sheets
|
|
|
|
Permutations cheat sheet
|
|
|
|

|
|
|
|
Combinations cheat sheet
|
|
|
|

|
|
|
|
Permutations/combinations algorithm ideas.
|
|
|
|

|
|
|
|
## References
|
|
|
|
- [Math Is Fun](https://www.mathsisfun.com/combinatorics/combinations-permutations.html)
|
|
- [Permutations/combinations cheat sheets](https://medium.com/@trekhleb/permutations-combinations-algorithms-cheat-sheet-68c14879aba5)
|