战舰!
早在2003年(当时我17岁),我参加了一个战舰的人工智能编码比赛。尽管我输了那场比赛,但我从中获得了很多乐趣,也学到了很多东西。
现在,我想恢复这个比赛,在搜索最好的战舰AI。
这里是这个框架现在托管在Bitbucket上。
获胜者将获得+450声望奖励!比赛从2009年11月17日开始。17号零时之前的投稿和编辑将不被接受。(中央标准时间)
尽早提交你的作品,这样你就不会错过机会!< / p >
为了保持这个<强大的>目标强大的>,请遵循比赛的精神。
游戏规则:
- 游戏在10x10的网格上进行。
- 每个参赛者将5艘船(长度为2、3、3、4、5)中的每一艘放在他们的网格上。
- 没有船只可以重叠,但它们可以相邻。
然后,选手们轮流向对手射击。
- 游戏的一个变体允许每次齐射多次,每艘幸存的船一次。
李< / ul > < / >
- 如果击球沉、命中或未命中,对手将通知选手。
- 当任何一名玩家的所有船只都沉没时,游戏就结束了。
比赛规则:
- 竞赛的精神是找出最好的战舰算法。
- 任何违反比赛精神的行为都将被取消比赛资格。
- 干扰对手是违反比赛精神的。
- 多线程可以在以下限制下使用:
- 当还没有轮到您时,只能有一个线程在运行。(但是,任何数量的线程都可能处于“挂起”状态)。
- 任何线程都不能以“Normal”以外的优先级运行。
- 考虑到上述两个限制,你将保证在你的回合中至少有3个专用CPU内核。
李< / ul > < / >
- 每个游戏的CPU时间限制为1秒,分配给主线程上的每个竞争者。
- 超时会导致当前游戏的失败。
- 任何未处理的异常都会导致当前游戏的失败。
- 允许网络访问和磁盘访问,但您可能会发现时间限制相当令人望而却步。但是,添加了一些设置和拆卸方法来减轻时间压力。
- 代码应该在堆栈溢出时作为答案发布,如果太大,则链接。
- 一个条目的最大总大小(未压缩)为1mb。
- 正式来说,. net 2.0 / 3.5是唯一的框架需求。
- 您的条目必须实现IBattleshipOpponent接口。
得分:
- 在101场比赛中取得最好的51场比赛是比赛的赢家。
- 所有参赛者将以循环赛的方式进行比赛。
- 然后,表现最好的一半选手将进行双淘汰赛,决出冠军。(实际上是大于或等于1 / 2的2的最小幂。)
- 我将在比赛中使用TournamentApi框架。
- 考试结果将在这里公布。
- 如果你提交了一个以上的作品,只有你得分最高的作品才有资格获得双冠。
好运!玩得开心!
< p >
编辑1: < br / >
感谢
释放,他在
Ship.IsValid
函数中发现了一个错误。问题已经解决了。 .请下载框架的更新版本
< p >
编辑2: < br / >
由于人们对将统计数据持久化到磁盘等非常感兴趣,所以我添加了一些非计时设置和删除事件,它们应该能够提供所需的功能。这是一个
semi-breaking变化。也就是说:修改了接口,添加了功能,但不需要body。 .请下载框架的更新版本
< p >
编辑3: < br / >
错误修复1:
GameWon
和
GameLost
只在超时的情况下被调用
错误修复2:如果引擎在每一场比赛中都暂停,竞争将永远不会结束
.请下载框架的更新版本
< p >
编辑4: < br / >
比赛结果:< / p >
.