나는 복수 라운드가있는 swiss tournament을 나타내는 모델을 만들려고합니다. 홀수 플레이어가있는 경우를 제외하고 각 플레이어는 모두 다른 플레이어와 페어링됩니다. 한 플레이어가 작별 인사를하게됩니다.장고에서 스위스 토너먼트 모델링
각 페어링의 결과를 추적해야합니다. 즉, 어느 플레이어가 이겼는가. 또한, 나는 주어진 플레이어를 상대로 플레이 한 모든 플레이어를 효율적으로 검색 할 수 있기를 원합니다.
확실한 물건 : 처음에는
class Tournament(models.Model):
name = models.CharField(max_length=80)
class Player(models.Model):
name = models.CharField(max_length=80)
나는 이런 식으로 뭔가 보이는 "TournamentPairing"클래스가 계획되었다
class TournamentPairing(models.Model):
tournament = models.ForeignKey(Tournament)
round = models.IntegerKey()
player1 = models.ForeignKey(Player)
player2 = models.ForeignKey(Player, null = True) # In case of a bye, this is None.
outcome = models.CharField(max_length=1) # player1 wins, loses, bye, or tie
을하지만 그건, 종류, 특히 부분의 해키 느낌 때로는 플레이어 2가 없음에 대해. 또한, 나는 우리가 찾고있는 플레이어가 player1 또는 player2 슬롯에있을 수 있기 때문에 탐색을 용이하게한다고 생각하지 않는다.
더 좋은 방법이 있습니까? 내 장고 놈이 내게 올바른 해결책을 찾지 못하게하는 것 같아.
당신이뿐만 아니라 페어링 알고리즘을 구현 하시겠습니까? – Svante
페어링에 대한 검색/작업을 나열하면 더 좋은 아이디어를 얻을 수 있습니다. – muhuk