题目:2048 AI算法
题目简介:该题目不是要求写一个2048游戏,而是模拟玩家身份,写一个玩2048游戏的智能算法
算法要求:
写一个JAVA类,实现com.yeepay.challenge.game2048.GamePlayer接口(接口类请下载附件game2048.jar)
类名要求:com.yeepay.challenge.game2048.答题者姓名全拼.PlayerImpl.java
可以有其他辅助类或者配置文件,但是都必须放在“com.yeepay.challenge.game2048.答题者姓名全拼”这个包下
需要实现的方法:public String play(int[][] gameData);
该方法传入参数为游戏棋盘数据,一个4x4的矩阵,用int二维数组表示
例如{{0,0,0,4},{0,0,0,0},{0,0,0,0},{0,2,0,2}}表示如下棋盘
方法返回值为字符串表示滑动方向,必须是以下四个字符之一: U D L R
该JAVA类模拟玩家的身份,每次根据棋盘的数据决定一个移动方向
该JAVA类需要有一个不带参数的构造方法,游戏的主体程序(附件game2048.jar)会生成棋盘数据,构造一个该JAVA类的实例,并循环调用play方法进行游戏,直到结束。
附加说明:
答题者可以下载主体程序(附件game2048.jar)来测试自己的AI算法,使用方式如下:
1.把game2048.jar引入工程依赖
2.写一个测试类
import com.yeepay.challenge.game2048.GameConsole
在main方法中调用GameConsole.play(PlayerImpl.class);
3.每执行一次play方法即完成一局,返回值是该局的最终得分
主体程序游戏规则:
1.随机数规则与手机上的2048游戏一致,每次移动后随机产生一个2或者4,二者的产生几率为9:1
2.计分规则也一致,每次合并的数字加入总分
3.游戏结束规则略有不同,以下两种情况导致游戏结束:a.棋盘上已经没有格子可以合并;b.提交了一次无效的移动方向(该方向上没有任何格子可以移动或者合并)
重要:如果由于提交了一次无效的移动方向导致游戏结束,那么该局的得分为0,即算法程序要保证每次提交的方向必须是有效的。
评分参考依据:
1.连续执行100次,取平均分数和平均执行时长,要求平均分数超过1000,平均时间小于5秒
2.代码结构清晰,注释明了
3.有设计说明文档