Skip to content

Instantly share code, notes, and snippets.

@Makistos
Created October 28, 2013 07:40
Show Gist options
  • Save Makistos/7192777 to your computer and use it in GitHub Desktop.
Save Makistos/7192777 to your computer and use it in GitHub Desktop.
A round-robin algorithm implementation written in Python. #round-robin #scheduling #algorithm #python
#!/usr/bin/python
div1 = ["Lions", "Tigers", "Jaguars", "Cougars"]
div2 = ["Whales", "Sharks", "Piranhas", "Alligators"]
div3 = ["Cubs", "Kittens", "Puppies", "Calfs"]
def create_schedule(list):
""" Create a schedule for the teams in the list and return it"""
s = []
if len(list) % 2 == 1: list = list + ["BYE"]
for i in range(len(list)-1):
mid = len(list) / 2
l1 = list[:mid]
l2 = list[mid:]
l2.reverse()
# Switch sides after each round
if(i % 2 == 1):
s = s + [ zip(l1, l2) ]
else:
s = s + [ zip(l2, l1) ]
list.insert(1, list.pop())
return s
def main():
for round in create_schedule(div1):
for match in round:
print match[0] + " - " + match[1]
print
for round in create_schedule(div2):
for match in round:
print match[0] + " - " + match[1]
print
for round in create_schedule(div3):
for match in round:
print match[0] + " - " + match[1]
print
for round in create_schedule(div1+div2+div3):
for match in round:
print match[0] + " - " + match[1]
print
if __name__ == "__main__":
main()
@mandres2015
Copy link

Un mes entero buscando la forma de desarrollar un algoritmo que permita realizar emparejamientos y no encontraba, hasta que me dí cuenta que ya existían.
Gracias por el método

@ukirdeankush
Copy link

ukirdeankush commented May 29, 2019

from itertools import cycle
A = [[1,2,3],[4,5,6],[7]]
B = [[8],[9,10,11],[12,13]]
i = len(A)
j = 0
C = [ ] #for results
list_num = cycle(k for k in range ( i ))
for x in list_num:
j += 1
if j == i*3:
break

if A[x]:
    C.append(A[x].pop(0))
    
if B[x]:
    C.append(B[x].pop(0))        

Output=========>[1, 8, 4, 9, 7, 12, 2, 5, 10, 13, 3, 6, 11]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment