earthnite and I have created a challenge to see who can develop the best Connect Four AI for the TI-84+, using only TI-BASIC. The challenge is hosted at my website
http://jonbush.net/jonboinc.org/connect-four. This challenge differs from other similar challenges in that each AI submission is a separate program that competes against all other submissions through an interface program. All match results are visible through a continuously updated leaderboard system. More detailed information and a complete list of rules are available on the website.
Timeline:
11/16/2015: Submission opens
11/18/2015: Trial rounds begin, leaderboard updated regularly
12/05/2015 (11:59:59pm ET): Final submission deadline
12/06/2015: Final Results posted
The AI must:
▪ be under 2000 bytes
▪ consist of three or fewer separate programs
▪ be able to be started by running one of the programs
▪ not receive any user input during the game
▪ adhere to rules concerning the use of certain variables
▪ complete each move in one minute or less
Here is a demo of the interface with two random players.
EDIT: earthnite also has an aesthetically pleasing GUI, but we are going to keep this one with the challenge package because it is compatible with color calculators as well.
A couple of questions, one of which relates to something I posted on IRC yesterday:
1) Who will be judging this contest?
2) Do you have any prizes in mind, either physical or virtual?
3) Related to #2, I must admit that we were planning a "small" contest for this week through just after Thanksgiving, to get people back in the contest frame of mind. We have a pretty fun topic idea, but in the interest of not stealing entrants from each others' contests, how would you guys feel about cross-running this with a Cemetech contest number (#14, I think?), us offering official award userbars for the winners, and if necessary, helping you grade it? You seem to have everything well-thought-out in terms of topic and rules, so I see no reason why we'd need to tread on your toes there.
I also realize that this is poor timing in terms of the other discussion we were having, but I swear we're not trying to take over everything you're doing.
KermMartian wrote:
A couple of questions, one of which relates to something I posted on IRC yesterday:
1) Who will be judging this contest?
2) Do you have any prizes in mind, either physical or virtual?
3) Related to #2, I must admit that we were planning a "small" contest for this week through just after Thanksgiving, to get people back in the contest frame of mind. We have a pretty fun topic idea, but in the interest of not stealing entrants from each others' contests, how would you guys feel about cross-running this with a Cemetech contest number (#14, I think?), us offering official award userbars for the winners, and if necessary, helping you grade it? You seem to have everything well-thought-out in terms of topic and rules, so I see no reason why we'd need to tread on your toes there.
I also realize that this is poor timing in terms of the other discussion we were having, but I swear we're not trying to take over everything you're doing.
![Wink](images/smiles/icon_wink.gif)
1. I will be administering the judgement process for the challenge. There isn't really any subjective judgement involved in this contest.
2. We do not currently have any prizes in mind, besides international fame and glory
. earthnite and I have already created AIs, but we will not be participating in our own challenge. If somebody can beat earthnite's AI, it will be included with the final program.
3. I think it would be good to have an official Cemetech contest number and some kind of award. I can adjust the challenge timeline as necessary.
I'll definitely be submitting an entry. With the new one-minute time limit, it'll be a battle for speed optimization as well as cleverness!
From an hour's thought or so, I think I can get a program fast enough to check for forced wins at 4 ply, maybe 5, but I guess the real test of an AI will be in its heuristics.
The prize for the winner will be the exclusive permission to be forced to explain his AI to me!
But seriously, nice idea, I really like it. If someone has time, and might really explain AI programming to me, I would be really thankful, though!
Hmm, it seems I made a very big mistake in estimating the runtime of my algorithm. I had originally estimated 50 ms per board-evaluation, which would give me plenty of time to run 3 plies ahead. I now think it'll take me about 400 ms, allowing only two plies (my move and the opponent's move) in one minute of runtime. (That is, unless I find some way to optimize it further.)
@jonbush is your AI the same one that's currently posted on tibasicdev? Are we allowed to look at it, and if so could you explain a little about what it does? I think it would be fair (and increase the quality of all entries) if you posted an explanation of it as a starting point.
I'm going to ask jonbush about whether it might be realistic to push the deadline back to make the contest shorter; I worry with this length of contest, people will just get caught up in final exams and projects and forget the contest. Since we'll be helping with the contest, I just want to remind everyone of some of the (amended) rules for this contest: (1) Don't post any of your code before the results are published
(2) Don't ask with help with your code anywhere, including Cemetech, reddit, ticalc.org, Omnimaga, you name it.
(3) I doubt we'll make people post separate topics about their entries this time. However, I will ask everyone who is entering to post a post in this topic indicating that they're entering.
Are you planning on making the leaderboard update automatically? That seems like a fun challenge for interfacing with an emulator.
lirtosiast wrote:
@jonbush is your AI the same one that's currently posted on tibasicdev? Are we allowed to look at it, and if so could you explain a little about what it does? I think it would be fair (and increase the quality of all entries) if you posted an explanation of it as a starting point.
I do did have an old AI on TI|BD, but it is not related to the recent Connect Four projects, which feature no AI. I have temporarily taken it down.
KermMartian wrote:
I'm going to ask jonbush about whether it might be realistic to push the deadline back to make the contest shorter; I worry with this length of contest, people will just get caught up in final exams and projects and forget the contest.
When should I move the deadline back to?
elfprince13 wrote:
Are you planning on making the leaderboard update automatically? That seems like a fun challenge for interfacing with an emulator.
I have a program that will run all of the combinations on the emulator, but the leaderboard will be updated manually.
jonbush wrote:
When should I move the deadline back to?
How would the people currently entering the contest feel about three weeks, ending Sunday, December 6th at 11:59:59pm ET? I feel like that should be long enough, and will encourage people to work on their entries over the Thanksgiving weekend. In fact, perhaps we could aware a bonus point for submitting a complete entry by the end of Thanksgiving weekend (11:59:59pm ET, November 29th)?
After a long hiatus from contests, Cemetech is holding Cemetech Contest 14 in cooperation with members
jonbush and
earthnite. This short contest challenges TI-BASIC programmers to program an AI for the well-known Connect 4 game. Entries will be judged on the speed and accuracy of their AIs. Jonbush and earthnite originally conceived of this contest while making a Connect 4 game of their own, and the winning entry will in fact be incorporated into the game as the official AI. They drew up a
thorough set of rules, guidelines, and resources that entrants should read before beginning their entries. The Connect 4 AIs submitted to the contest must use specific variables for input and output, consist of no more than 2KB of TI-BASIC code and three subprograms, and may not take any additional user input while they compute the next move.
We're excited to be working with jonbush and earthnite to hold this contest. Thanks to an automated grading script designed by jonbush, the results will have a much faster turnaround than most contests: the final deadline is December 5th, 2015 at 11:59:59pm ET, and results will be posted here on Cemetech the next day. For full guidelines and rules, do check
the contest website, and remember to post in the
attached Cemetech topic if you are entering. Unlike other Cemetech contests, no dedicated per-entry topic is required. The summarized details:
- Contest duration: November 16, 2015 to December 5, 2015 at 11:59:59pm ET
- Topic: Connect 4 AIs
- Prizes: Currently, community prestige and special Cemetech Award swag for your Cemetech profile. Other prizes may be offered depending on the number of entries and the availability of prizes.
- Rules: You must post in the contest topic indicating that you're entering the contest. Entries must be received by the deadline, or they will be disqualified. You cannot ask for help with or post code anywhere, including Cemetech or elsewhere. You can ask for general help with multi-purpose algorithms, as long as your TI-BASIC code is not involved in the discussion.
Best of luck to all the entrants, and we can't wait to see the clever solutions people create.
I still have one remaining DCS7 Christmas tree ornament if you'd like to use that as a prize, I'm totally cool with that and also paying for the shipping.
I was thinking about screencasting the matches on HCWP each time I run them. Is this a good idea? If so, what time works best for most people?
Just for clarification, people can (and should) submit their AIs ahead of time to see how they play against other AIs.
I think it would provide some helpful feedback (and be fairer than screencasting to those who don't attend HCWP) if all results (matrix [H]'s) were published.
May I suggest providing in addition to N, Z, and [A] a list of all moves so far (for example {4,5,4,4}) so the AI programs can more easily keep track?
What will be the structure of the tournament? If it's round-robin, how many matches will there be between each pair?
CalebHansberry wrote:
I still have one remaining DCS7 Christmas tree ornament if you'd like to use that as a prize, I'm totally cool with that and also paying for the shipping.
That would be awesome, and I'd be more than happy to pay the shipping.
Thank you for the generous offer.
lirtosiast wrote:
I think it would provide some helpful feedback (and be fairer than screencasting to those who don't attend HCWP) if all results (matrix [H]'s) were published.
May I suggest providing in addition to N, Z, and [A] a list of all moves so far (for example {4,5,4,4}) so the AI programs can more easily keep track?
What will be the structure of the tournament? If it's round-robin, how many matches will there be between each pair?
I will post an animated gif for each match on the leaderboard, which should provide adequate information. I will try to publish the matrix [H] (move and time history) for each match as well. However, I made a program to automate the competition process, which will not allow me to save the exact history for each match. I may just run each match by hand instead (or I could encode the matrix into a string).
Matrix [H] stores the move history in row 1 starting at column 2. Moves alternate between player 1 and 2. The time for each move is stored in row 2 for the corresponding column. At the end, [H] is transposed so that it is easier to read, and [H](1,1) is the number of the winning player (0,1,2) and [H](1,2) is the total number of moves.
The tournament is round-robin, with two matches between each pair (as player 1 and 2).
http://jonboinc.org/connect-four/leaderboard/
EDIT: The timings will be taken from runs in Wabbitemu with TI-OS 2.55MP.
Submitted. Mine is stupid. And it uses a whole lot of time. So much that I had to make it stop after half of it if it went over time. But it's there.
I'll enter.
Are these the matrix coordinates for the game (below)? They seem reversed.
(6,1)(6,2)(6,3)(6,4)(6,5)(6,6)(6,7)
(5,1)(5,2)(5,3)(5,4)(5,5)(5,6)(5,7)
(4,1)(4,2)(4,3)(4,4)(4,5)(4,6)(4,7)
(3,1)(3,2)(3,3)(3,4)(3,5)(3,6)(3,7)
(2,1)(2,2)(2,3)(2,4)(2,5)(2,6)(2,7)
(1,1)(2,2)(2,3)(2,4)(2,5)(2,6)(2,7)
Additionally, would this be a TI matrix (below)?
(1,1)(2,1)
(2,1)(2,2)
(3,1)(3,2)
3x2...?
solarsoftware wrote:
I'll enter.
Are these the matrix coordinates for the game (below)? They seem reversed.
(6,1)(6,2)(6,3)(6,4)(6,5)(6,6)(6,7)
(5,1)(5,2)(5,3)(5,4)(5,5)(5,6)(5,7)
(4,1)(4,2)(4,3)(4,4)(4,5)(4,6)(4,7)
(3,1)(3,2)(3,3)(3,4)(3,5)(3,6)(3,7)
(2,1)(2,2)(2,3)(2,4)(2,5)(2,6)(2,7)
(1,1)(2,2)(2,3)(2,4)(2,5)(2,6)(2,7)
Additionally, would this be a TI matrix (below)?
(1,1)(2,1)
(2,1)(2,2)
(3,1)(3,2)
3x2...?
Basically, that's it. The numbers are arranged so that the top row of the TI matrix is the bottom row of the game matrix, and vice versa. Not sure why, but maybe that was easier or more optimized to program?
JWinslow23 wrote:
Basically, that's it. The numbers are arranged so that the top row of the TI matrix is the bottom row of the game matrix, and vice versa. Not sure why, but maybe that was easier or more optimized to program?
Basically, that is so that row 1 of the matrix is the bottom of the board. It it slightly easier to use because the position of the next space is just the number of filled spaces in the column plus one.