Skip to content

Instantly share code, notes, and snippets.

@theothermattm
Created September 7, 2023 20:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save theothermattm/b0942a64dd013461dcbb9b44e5fd6530 to your computer and use it in GitHub Desktop.
Save theothermattm/b0942a64dd013461dcbb9b44e5fd6530 to your computer and use it in GitHub Desktop.
Randomized name pairing in python
"""Console script for python_boilerplate."""
import argparse
import random
import sys
import math
def main():
"""Console script for python_boilerplate."""
parser = argparse.ArgumentParser()
parser.add_argument('_', nargs='*')
args = parser.parse_args()
print("Arguments: " + str(args._))
names = []
with open('names.txt') as f:
while True:
line = f.readline()
if not line:
break
line = '@' + line
line = line.replace('\n','')
names.append(line)
print('names before half: ', len(names))
half_point = math.floor((len(names) / 2))
print('half point: ' + str(half_point))
first_set = names[:(half_point)]
second_set = names[half_point:]
pairs = []
for idx, i in enumerate(first_set):
if( len(second_set) > 0 ):
random_range = random.randrange(len(second_set))
while ( random_range < 0) :
random_range = random.randrange(len(second_set))
partner = second_set.pop(random_range)
pairs.append((i, partner))
for p in pairs:
print('* ' + p[0] + ' <--> ' + p[1])
print('Remainders to slot:')
print(second_set)
if __name__ == "__main__":
sys.exit(main()) # pragma: no cover
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment