feat: implement and document participant matching
This commit is contained in:
commit
6066a150ea
1 changed files with 37 additions and 0 deletions
37
wichteln.py
Normal file
37
wichteln.py
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
import json
|
||||||
|
import random
|
||||||
|
|
||||||
|
# load and prepare a list containing all participants
|
||||||
|
with open('participants.json', 'r') as pFile:
|
||||||
|
participants = json.load(pFile)
|
||||||
|
|
||||||
|
# create a copy of the list to make choosing a partner easier
|
||||||
|
copy = list(enumerate(participants[:]))
|
||||||
|
|
||||||
|
# choose a partner for each participant
|
||||||
|
for i in range(len(participants)):
|
||||||
|
|
||||||
|
# if the last participant has only themselves left to choose, make them
|
||||||
|
# switch partners with another random participant
|
||||||
|
if len(copy) == 1 and participants[i] == copy[0][1]:
|
||||||
|
|
||||||
|
current = participants[i]
|
||||||
|
participants.remove(current)
|
||||||
|
partner = random.choice(participants)
|
||||||
|
|
||||||
|
current['partner'] = partner['partner']
|
||||||
|
partner['partner'] = current['name'] + ' — ' + current['mail']
|
||||||
|
participants.append(current)
|
||||||
|
break
|
||||||
|
|
||||||
|
# otherwise choose a random partner for each participant
|
||||||
|
else:
|
||||||
|
partner = random.choice(copy)
|
||||||
|
while partner[0] == i:
|
||||||
|
partner = random.choice(copy)
|
||||||
|
|
||||||
|
participants[i]['partner'] = partner[1]['name']+' — '+partner[1]['mail']
|
||||||
|
copy.remove(partner)
|
||||||
|
|
||||||
|
print(participants)
|
||||||
|
|
Loading…
Reference in a new issue