In [17]:
# we need a system to match two people up for secret santa. 

from random import shuffle

def random_assign(data:list):
    output = {}
    shuffle(data)
    count = 1
    for item in data:            
        if count < len(data):
            output[item] = data[count]
            count += 1
        else:
            output[item] = data[0]
        
    return output
            
def pretty_print(data:dict):
    for key, value in data.items():
        print("{} gets {} a gift".format(key, value))
        
# def test():
#     from collections import Counter
#     cnt = Counter()
#     for i in range(0, 2000):
#         data = random_assign(['addi', 'chelsea/quin', 'madeleine', 'hayley/andrew', 'alex'])
#         for key, value in data.items():
#             str_val = "{} gets {} a gift".format(key, value)
#             cnt[str_val] += 1
#     print(cnt)
# test()

# for i in range(0, 150):    
#     data = random_assign(['addi', 'chelsea/quin', 'madeleine', 'hayley/andrew', 'alex'])    
#     pretty_print(data)
#     print('\n')


Counter({'chelsea/quin gets madeleine a gift': 534, 'alex gets addi a gift': 527, 'hayley/andrew gets addi a gift': 524, 'madeleine gets chelsea/quin a gift': 516, 'madeleine gets hayley/andrew a gift': 515, 'addi gets chelsea/quin a gift': 509, 'alex gets hayley/andrew a gift': 508, 'madeleine gets alex a gift': 507, 'hayley/andrew gets alex a gift': 502, 'addi gets alex a gift': 502, 'addi gets madeleine a gift': 502, 'hayley/andrew gets chelsea/quin a gift': 492, 'chelsea/quin gets hayley/andrew a gift': 490, 'chelsea/quin gets alex a gift': 489, 'chelsea/quin gets addi a gift': 487, 'addi gets hayley/andrew a gift': 487, 'alex gets chelsea/quin a gift': 483, 'alex gets madeleine a gift': 482, 'hayley/andrew gets madeleine a gift': 482, 'madeleine gets addi a gift': 462})

In [ ]:


In [ ]: