03 Permutation formula#

%%html
<iframe width="700" height="400" src="https://www.youtube.com/embed/DROZVHObeko/" frameborder="0" allowfullscreen></iframe>
import itertools
import numpy as np
import pandas as pd
from pandas import Series, DataFrame
import matplotlib.pyplot as plt
import seaborn as sns
from scipy import stats, special

khanacademy

Permutation formula fig 1

def factorial(n):
    if n == 1:
        return 1
    else: 
        return n * factorial(n - 1)
def permutation_without_repetation(n, r):
    if n != r:
        return factorial(n) / factorial(n-r)
    else: # zero factorial
        return factorial(n) / factorial(1)
persons = ['A', 'B', 'C', 'D', 'E']
seats1 = [1, 2, 3, 4, 5]
seats2 = [1, 2, 3]
persons_len, seats1_len, seats2_len = len(persons), len(seats1), len(seats2)
factorial(seats1_len)
120
special.perm(persons_len, seats1_len)
120.0
special.perm(persons_len, seats2_len)
60.0
permutation_1 = list(itertools.permutations(persons, seats1_len))
permutation_2 = list(itertools.permutations(persons, seats2_len))
permutation_1
[('A', 'B', 'C', 'D', 'E'),
 ('A', 'B', 'C', 'E', 'D'),
 ('A', 'B', 'D', 'C', 'E'),
 ('A', 'B', 'D', 'E', 'C'),
 ('A', 'B', 'E', 'C', 'D'),
 ('A', 'B', 'E', 'D', 'C'),
 ('A', 'C', 'B', 'D', 'E'),
 ('A', 'C', 'B', 'E', 'D'),
 ('A', 'C', 'D', 'B', 'E'),
 ('A', 'C', 'D', 'E', 'B'),
 ('A', 'C', 'E', 'B', 'D'),
 ('A', 'C', 'E', 'D', 'B'),
 ('A', 'D', 'B', 'C', 'E'),
 ('A', 'D', 'B', 'E', 'C'),
 ('A', 'D', 'C', 'B', 'E'),
 ('A', 'D', 'C', 'E', 'B'),
 ('A', 'D', 'E', 'B', 'C'),
 ('A', 'D', 'E', 'C', 'B'),
 ('A', 'E', 'B', 'C', 'D'),
 ('A', 'E', 'B', 'D', 'C'),
 ('A', 'E', 'C', 'B', 'D'),
 ('A', 'E', 'C', 'D', 'B'),
 ('A', 'E', 'D', 'B', 'C'),
 ('A', 'E', 'D', 'C', 'B'),
 ('B', 'A', 'C', 'D', 'E'),
 ('B', 'A', 'C', 'E', 'D'),
 ('B', 'A', 'D', 'C', 'E'),
 ('B', 'A', 'D', 'E', 'C'),
 ('B', 'A', 'E', 'C', 'D'),
 ('B', 'A', 'E', 'D', 'C'),
 ('B', 'C', 'A', 'D', 'E'),
 ('B', 'C', 'A', 'E', 'D'),
 ('B', 'C', 'D', 'A', 'E'),
 ('B', 'C', 'D', 'E', 'A'),
 ('B', 'C', 'E', 'A', 'D'),
 ('B', 'C', 'E', 'D', 'A'),
 ('B', 'D', 'A', 'C', 'E'),
 ('B', 'D', 'A', 'E', 'C'),
 ('B', 'D', 'C', 'A', 'E'),
 ('B', 'D', 'C', 'E', 'A'),
 ('B', 'D', 'E', 'A', 'C'),
 ('B', 'D', 'E', 'C', 'A'),
 ('B', 'E', 'A', 'C', 'D'),
 ('B', 'E', 'A', 'D', 'C'),
 ('B', 'E', 'C', 'A', 'D'),
 ('B', 'E', 'C', 'D', 'A'),
 ('B', 'E', 'D', 'A', 'C'),
 ('B', 'E', 'D', 'C', 'A'),
 ('C', 'A', 'B', 'D', 'E'),
 ('C', 'A', 'B', 'E', 'D'),
 ('C', 'A', 'D', 'B', 'E'),
 ('C', 'A', 'D', 'E', 'B'),
 ('C', 'A', 'E', 'B', 'D'),
 ('C', 'A', 'E', 'D', 'B'),
 ('C', 'B', 'A', 'D', 'E'),
 ('C', 'B', 'A', 'E', 'D'),
 ('C', 'B', 'D', 'A', 'E'),
 ('C', 'B', 'D', 'E', 'A'),
 ('C', 'B', 'E', 'A', 'D'),
 ('C', 'B', 'E', 'D', 'A'),
 ('C', 'D', 'A', 'B', 'E'),
 ('C', 'D', 'A', 'E', 'B'),
 ('C', 'D', 'B', 'A', 'E'),
 ('C', 'D', 'B', 'E', 'A'),
 ('C', 'D', 'E', 'A', 'B'),
 ('C', 'D', 'E', 'B', 'A'),
 ('C', 'E', 'A', 'B', 'D'),
 ('C', 'E', 'A', 'D', 'B'),
 ('C', 'E', 'B', 'A', 'D'),
 ('C', 'E', 'B', 'D', 'A'),
 ('C', 'E', 'D', 'A', 'B'),
 ('C', 'E', 'D', 'B', 'A'),
 ('D', 'A', 'B', 'C', 'E'),
 ('D', 'A', 'B', 'E', 'C'),
 ('D', 'A', 'C', 'B', 'E'),
 ('D', 'A', 'C', 'E', 'B'),
 ('D', 'A', 'E', 'B', 'C'),
 ('D', 'A', 'E', 'C', 'B'),
 ('D', 'B', 'A', 'C', 'E'),
 ('D', 'B', 'A', 'E', 'C'),
 ('D', 'B', 'C', 'A', 'E'),
 ('D', 'B', 'C', 'E', 'A'),
 ('D', 'B', 'E', 'A', 'C'),
 ('D', 'B', 'E', 'C', 'A'),
 ('D', 'C', 'A', 'B', 'E'),
 ('D', 'C', 'A', 'E', 'B'),
 ('D', 'C', 'B', 'A', 'E'),
 ('D', 'C', 'B', 'E', 'A'),
 ('D', 'C', 'E', 'A', 'B'),
 ('D', 'C', 'E', 'B', 'A'),
 ('D', 'E', 'A', 'B', 'C'),
 ('D', 'E', 'A', 'C', 'B'),
 ('D', 'E', 'B', 'A', 'C'),
 ('D', 'E', 'B', 'C', 'A'),
 ('D', 'E', 'C', 'A', 'B'),
 ('D', 'E', 'C', 'B', 'A'),
 ('E', 'A', 'B', 'C', 'D'),
 ('E', 'A', 'B', 'D', 'C'),
 ('E', 'A', 'C', 'B', 'D'),
 ('E', 'A', 'C', 'D', 'B'),
 ('E', 'A', 'D', 'B', 'C'),
 ('E', 'A', 'D', 'C', 'B'),
 ('E', 'B', 'A', 'C', 'D'),
 ('E', 'B', 'A', 'D', 'C'),
 ('E', 'B', 'C', 'A', 'D'),
 ('E', 'B', 'C', 'D', 'A'),
 ('E', 'B', 'D', 'A', 'C'),
 ('E', 'B', 'D', 'C', 'A'),
 ('E', 'C', 'A', 'B', 'D'),
 ('E', 'C', 'A', 'D', 'B'),
 ('E', 'C', 'B', 'A', 'D'),
 ('E', 'C', 'B', 'D', 'A'),
 ('E', 'C', 'D', 'A', 'B'),
 ('E', 'C', 'D', 'B', 'A'),
 ('E', 'D', 'A', 'B', 'C'),
 ('E', 'D', 'A', 'C', 'B'),
 ('E', 'D', 'B', 'A', 'C'),
 ('E', 'D', 'B', 'C', 'A'),
 ('E', 'D', 'C', 'A', 'B'),
 ('E', 'D', 'C', 'B', 'A')]
permutation_2
[('A', 'B', 'C'),
 ('A', 'B', 'D'),
 ('A', 'B', 'E'),
 ('A', 'C', 'B'),
 ('A', 'C', 'D'),
 ('A', 'C', 'E'),
 ('A', 'D', 'B'),
 ('A', 'D', 'C'),
 ('A', 'D', 'E'),
 ('A', 'E', 'B'),
 ('A', 'E', 'C'),
 ('A', 'E', 'D'),
 ('B', 'A', 'C'),
 ('B', 'A', 'D'),
 ('B', 'A', 'E'),
 ('B', 'C', 'A'),
 ('B', 'C', 'D'),
 ('B', 'C', 'E'),
 ('B', 'D', 'A'),
 ('B', 'D', 'C'),
 ('B', 'D', 'E'),
 ('B', 'E', 'A'),
 ('B', 'E', 'C'),
 ('B', 'E', 'D'),
 ('C', 'A', 'B'),
 ('C', 'A', 'D'),
 ('C', 'A', 'E'),
 ('C', 'B', 'A'),
 ('C', 'B', 'D'),
 ('C', 'B', 'E'),
 ('C', 'D', 'A'),
 ('C', 'D', 'B'),
 ('C', 'D', 'E'),
 ('C', 'E', 'A'),
 ('C', 'E', 'B'),
 ('C', 'E', 'D'),
 ('D', 'A', 'B'),
 ('D', 'A', 'C'),
 ('D', 'A', 'E'),
 ('D', 'B', 'A'),
 ('D', 'B', 'C'),
 ('D', 'B', 'E'),
 ('D', 'C', 'A'),
 ('D', 'C', 'B'),
 ('D', 'C', 'E'),
 ('D', 'E', 'A'),
 ('D', 'E', 'B'),
 ('D', 'E', 'C'),
 ('E', 'A', 'B'),
 ('E', 'A', 'C'),
 ('E', 'A', 'D'),
 ('E', 'B', 'A'),
 ('E', 'B', 'C'),
 ('E', 'B', 'D'),
 ('E', 'C', 'A'),
 ('E', 'C', 'B'),
 ('E', 'C', 'D'),
 ('E', 'D', 'A'),
 ('E', 'D', 'B'),
 ('E', 'D', 'C')]
len(permutation_1)
120
len(permutation_2)
60