大佬教程收集整理的这篇文章主要介绍了iPad游戏 Calcculator: The Game 程序自动计算求解方法,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
今天在iPad上下了个小游戏,主要是一个计算器的界面,有开始值,目标值,限定步数,以及一些加减乘除,还有作者脑洞想出来的功能键,主要有左移,直接把一个数加到末尾,将其中的某个数改为另一个数等等。。玩到20几关的时候感觉每道题要想一会儿才能解出来,于是有了下面的程序,写完程序就不想玩了。
游戏界面如下,就像一个真的计算器。其中紫色的2、5分别表示在当前数字最后插入2、5,+5和-5就是加减,初始值是0,限定5步,得到目标值210,想想该怎么操作?是不是不是太容易一眼看出来?这就对了,这么容易让你看出来作者怎么赚钱?
答案是:SET 2==>2,SET 5==>25,SUB 5 ==> 20,SET 5 ==>205,ADD 5 ==> 210
代码如下,用回溯的思想,DFS实现的。
package com; import com.google.common.collect.Lists; import java.util.ArrayDeque; import java.util.Deque; import java.util.List; /** * 2018-08-24 下午10:36. * * @Author yangliqun */ public class Calc { public static void main(String[] args) { int n = 5; int start = 0; int target = 210; List<Num> list = Lists.newArrayList(); list.add(new Num(OpType.SET,2)); list.add(new Num(OpType.SET,5)); // list.add(new Num(OpType.LEFT_SHIFT,0)); list.add(new Num(OpType.ADD,5)); list.add(new Num(OpType.SUB,5)); // list.add(new Num(OpType.SET,0)); // list.add(new Num(OpType.SET,5)); dfs(list,new ArrayDeque<>(),n,start,target); } static void dfs(List<Num> list,Deque<Num> res,int step,int last,int target) { if (list == null || list.size() == 0 || step <= 0) { return; } for (int i = 0; i < list.size(); i++) { Num num = list.get(i); int tmp = num.calc(last); if (tmp == 0xdeadbeef) { conTinue; } res.offer(num); if (tmp == target) { System.out.println(res); } else { dfs(list,res,step - 1,tmp,target); } res.pollLast(); } } static class Num { OpType opType; int num; protected Num(OpType opType,int num) { this.opType = opType; this.num = num; } public int calc(int last) { if (this.opType == OpType.SET) { if (last == 0) { return this.num; } else { return last * (int)Math.pow(10,this.num / 10 + 1) + this.num; } } if (this.opType == OpType.LEFT_SHIFT) { return last / 10; } if (this.opType == OpType.ADD) { return this.num + last; } if (this.opType == OpType.SUB) { return last - this.num; } if (this.opType == OpType.MUL) { return last * this.num; } else { if (last % this.num == 0) { return last / this.num; } else { return 0xdeadbeef; } } } @Override public String toString() { return "Num{" + "opType=" + opType + ",num=" + num + ‘}‘; } } enum OpType { SET,ADD,SUB,MUL,DIV,LEFT_SHIFT; } }
[Num{opType=SET,num=2},Num{opType=SET,num=5},Num{opType=SUB,Num{opType=ADD,num=5}]
目前定义了几个基本操作,当然估计这游戏后面估计还有其他的神奇操作,我没有继续往后玩了就写到这里了。
以上是大佬教程为你收集整理的iPad游戏 Calcculator: The Game 程序自动计算求解方法全部内容,希望文章能够帮你解决iPad游戏 Calcculator: The Game 程序自动计算求解方法所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。