Running coffee shuffles so we can get to know a group of folks.
Group for Randy Shoup ’s directs in EEE
People Brad DVC Gary Homayoun Justin Matt Scott Vince Wyatt Zhong Nandha
Script. Press C-c C-c
to print output
# Old script. Does strictly random pairings.
from random import shuffle, choice
if len (people) % 2 != 0 :
people.append(choice(people))
shuffle(people)
pairings = list ( zip (people[:: 2 ], people[ 1 :: 2 ]))
return [[a[ 0 ],b[ 0 ]] for a,b in pairings]
So this script should shift participants each month. We start with our main list. The first person gets pair with someone $offset (aka month number) away. Both parties are removed from the list. Repeat until done. Pair anyone left over with a random person.
from itertools import cycle
import datetime
import random
dt = datetime.datetime.now()
offset = dt.month
count = len (people)
is_odd = count % 2 == 0
half_way = int (count / 2 )
result = []
remaining = people.copy()
while len (remaining) != 0 :
idx = offset % len (remaining)
if idx == 0 :
idx += 1
if len (remaining) == 1 :
result.append([remaining[ 0 ], random.choice(people)])
remaining.pop( 0 )
else :
result.append([remaining[ 0 ], remaining[idx]])
remaining.pop(idx) ;
remaining.pop( 0 )
# result = []
# for i, person in enumerate(people[:half_way]):
# # +1 here is to get the last person in the list, else it skips them.
# result.append([person, people[(i+offset+1)%count], i, half_way, offset, count])
return result