Algoritme voor het bepalen van een poule-volgorde

Pagina: 1
Acties:
  • 180 views sinds 30-01-2008
  • Reageer

  • nljuggler
  • Registratie: Juni 2002
  • Laatst online: 09-11-2021
Ik probeer de volgorde in een poule te bepalen voor een toernooi applicatie (badminton).

Het algoritme moet voldoen aan de volgende specs:
- Deelnemers worden gesorteerd op saldo
- Bij gelijk saldo wordt eerst gekeken naar het onderlinge resultaat
- De deelnemer die heeft gewonnen in de onderlinge wedstrijd komt hoger in de volgorde
- Bij meer dan 2 deelnemers met hetzelfde saldo kan een oneindige loop ontstaan
in dat geval wordt de volgorde bepaald op basis van het aantal gewonnen sets en punten.

Het probleem waar ik tegenaan loop is bij het onderlinge resultaat bij meer dan 2 deelnemers met hetzelfde saldo.

Hoe kan ik op een handige manier achterhalen wat de volgorde hierbinnen moet zijn?

If Newton was a juggler, he would have caught the apple...


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Zonder relevante stukken code of meer duidelijkheid kunnen we je hier echt niet mee helpen. Kijk eens in onze Programming Beleid Quickstart en probeer dan je topicstart aan te passen ( Afbeeldingslocatie: http://gathering.tweakers.net/global/templates/tweakers/images/icons/edit.gif ) zodat je topic voldoet aan deze quickstart; dit is feitelijk een scriptrequest en daar doen we hier niet aan.
nljuggler schreef op vrijdag 11 mei 2007 @ 00:01:
Hoe kan ik op een handige manier achterhalen wat de volgorde hierbinnen moet zijn?
Ik ben zowieso niet bekend met badminton (en sterker: ik heb al moeite met voetbal poules :X ), maar wat is gangbaar dan? En waarom kun je dat niet opschrijven en omgieten in een algoritme? En als er geen 'regels' voor zijn; waarom pick je er geen random uit?

Daarnaast is het wel interessant om te weten hoe je uberhaupt werkt; werk je met arrays, matrices of...whatever?

[ Voor 34% gewijzigd door RobIII op 11-05-2007 00:35 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Cavalera125
  • Registratie: December 2003
  • Laatst online: 26-11 07:25
Lijkt me niet zo lastig. Schrijf een comparator die in de juiste volgorde de checks voor je afhandelt. Vervolgens sorteer je een Collection met die comparator.

  • mr.inno
  • Registratie: April 2003
  • Laatst online: 26-11 13:17
je weet van een wedstrijd :
  • wie gewonnen heeft.
  • Hoeveel sets wie heeft behaalt.
  • en hoeveel tegen.
sorteer order =
score, set gewonnen, sets verloren alfabeties op achter naam, voornaam, leeftijd.

en anders gewoon de gene die je het eerste tegen komt.

Sorteer functie van elke programeer taal kan dat sorteren.

[ Voor 3% gewijzigd door mr.inno op 11-05-2007 09:28 ]

inno


  • BestTested!
  • Registratie: Oktober 2003
  • Laatst online: 01-12 17:31
mr.inno schreef op vrijdag 11 mei 2007 @ 09:28:
je weet van een wedstrijd :
  • wie gewonnen heeft.
  • Hoeveel sets wie heeft behaalt.
  • en hoeveel tegen.
sorteer order =
score, set gewonnen, sets verloren alfabeties op achter naam, voornaam, leeftijd.

en anders gewoon de gene die je het eerste tegen komt.

Sorteer functie van elke programeer taal kan dat sorteren.
Precies... alleen sorteren op naam vind ik oneerlijk, dan ga ik mij inschrijven als AA :9
dus eerst sorteren op
  1. Score (+3 voor elke gewonnen wedstrijd, +1 voor gelijkspel, of iets dergelijks)
  2. Onderling resultaat
  3. Set-saldo (totaal gewonnen sets - totaal verloren sets)
  4. Gewonnen sets (gewonnen sets zwaarder laten tellen bij gelijk set-saldo)
  5. Adversary Points (van wie heb je gewonnen)
  6. Sonnenborn-Berger punten
  7. Random (indien alle bovenstaande punten gelijk zijn)
Het sorteren op deze manier werkt eigenlijk zoals het sorteren van de clubs in de voetbal competitie. Bij schaak competities, worden de punten 3,4 (en 7) vaak buiten beschouwing gelaten. Punt 7 heb je eigenlijk nooit nodig, omdat in de praktijk gelijke Sonnenborn-Berger punten bijna nooit dubbel voorkomen.

Je kan dan inderdaag een comperator schrijven, of je object een .compareTo(Player other) meegeven voor implementatie.

  • mr.inno
  • Registratie: April 2003
  • Laatst online: 26-11 13:17
ja dat is idd beter.

denk wel dat makkelijker zou zijn als je van al die sores 1 score kan bouwen.

[025][0131][22]

of zo?. eerste [ ] is de set. max te winnen sets is dus 999 enz.
hoef je vervolgens alleen maar kijken wie de hoogste punten score heeft.

inno

Pagina: 1