I’m going to write about a software system, ChallengeList, that I’ll develop. The system is for something called a challenge list, hence the name ChallengeList (tada! ).
A challenge list has been used in my local pool club, together with the other pool players from the club, and the basic principle, should be applicable to just about any sport. I’ll go over the rules later.
My friend Brian also made a challenge list application. Since Brian’s challenge list hasn’t been used in quite a while, he stopped maintaining it, so I’ll not provide a link. Brian’s challenge list was a webapplication with facebook login. I believe it wasn’t designed or intended to be a generic system for challenge lists. It was designed and intended to support our one specific challenge list, which it did very well. I observed a thing or two from Brian’s challenge list, that I’ll take into consideration in my ChallengeList.
My purpose of writing about ChallengeList is
- to show some of my skills as a software developer to potential clients,
- to examine and play with various technologies, that I do not use in current day-to-day work, and
- attempt to show a little bit about what software development is about.
You’re welcome to comment on these articles, if perhaps you want to share some insights, have some questions, suggestions, or well… comments.
Bare in mind though, this in something I’m currently doing in my spare time. There are no customers waiting (or paying) for this, and thus there are no hard deadlines.
The rules are quite simple: A challenge list is an ordered list of players.
A player can challenge the two players above him, and must accept challenges from the two players below him. If the challenger wins the match the two players swap places on the list.
Those were the initial rules, and at a first glance, it does appear to be quite simple, doesn’t it?
When we started using the list, a few questions and issues arose, and we needed to deal with them. You might already have spotted some of these issues, especially if you’re a software developer. The issues were discussed and decided as we encountered them, and we’ve ended up with a set of rules that we play by.
The Rules of ChallengeList
The first thing we encountered, was that new players joined the club, and wanted to be a part of our challenge list. The ‘scene’ for pool in Denmark is a rather closed scene and most players know each other, and each other’s skill level. So it could be that someone we know to be a better player, than who was currently in the top of the list joined. Should we then just allow him to start at the top?
Taking into consideration that the purpose of the challenge list, is actually to motivate people to play with different people, we decided that all new players would start at the bottom.
Rule #1: New players are added to the bottom of the list.
So to start with we have an empty list, and then Joshua Filler joins.
The list will now have only one entry
- Joshua Filler
Ralf Souquet want to join, and he’ll also start at the bottom:
- Joshua Filler
- Ralf Souquet
After Ralf follows, Nick van den Berg, Albin Oschan, and Francisco Sanchez Ruiz
- Joshua Filler
- Ralf Souquet
- Nick van den Berg
- Albin Ouschan
- Francisco Sanchez Ruiz
This is the top 5 of the current ranking for Team Europe for the Mosconi Cup 2017.
Now there’s enough players to actually let them start challenging each other.
A player can challenge the player one or two spots above him, and must accept a challenge from players one or two spots below him.
Francisco (5) can challenge Albin (4), and Nick (3). Joshua (1) can’t challenge anyone but have to accept challenges from both Ralf (2), and Nick (3).
This caused a problem, because if Nick (3) challenges Joshua(1), and then Francisco (5) challenges Nick, what happens if Nick wins over Joshua? Was Francisco’s then get allowed to challenge 4 spots up? Or does his challenge transfer to Joshua? In order to solve this, we simply decided that you simply can’t challenge anyone, if you have an unresolved challenge, and you can’t challenge anyone that has an unresolved challenge.
Rule #2: Any player that does not currently have an unresolved challenge, can challenge the player one or two spots above him on the list, as long as that player doesn’t currently have an unresolved challenge.
and rule #3 is the vice versa of this.
Rule #3: Any player that does not currently have an unresolved challenge, have to accept challenges from a player one or two spots below him.
So if Nick challenges Joshua, then Francisco will have to wait until that challenge is resolved, then he can challenge either Nick or Joshua, whoever lost the challenge.
To make sure that the challenges were actually resolved, we also made:
Rule #4: All challenges must be resolved within 14 days. If a match hasn’t been played after 14 days, the challenge will be resolved as if the challenging player won the challenge.
Francisco wouldn’t have to wait more than 14 days, before he challenge either Nick of Joshua. If Joshua is pressed for time, and Nick has proposed several dates, but Joshua couldn’t play on any of them, then Nick and Joshua should swap.
Pool actually has a lot of disciplines; 8-Ball, 9-Ball, 10-Ball, Straight Pool, Bank-pool, One-pocket, just to mention some of them.
In our local club we decided the first 4 was valid, and in keeping with the medieval tradition when issuing a challenge, it’s the challenged player, that chooses the disciplin (“weapon).
Rule #5: The challenged player choose the the disciplin