62,636
社区成员




package PokerGame24Point;
import com.Allen.*;
public class Get24PointExpression {
/**
* 求任意扑克组合的计算24点的表达式
* @haram array 扑克组合
* @return 计算24点的表达式
*/
static String[] get24CalExpression(int[] array) {
String[] op = {"+", "-", "*", "/"};
String[] ch = {"(", ")"};
String[] sentence = new String[array.length+op.length-1];
int opNumIndex = PublicFunction.getRandom(0, array.length);
sentence[0] = Integer.toString(array[opNumIndex]);
array = PublicFunction.deleteOneElement(array, array[opNumIndex]);
int opIndex = PublicFunction.getRandom(0, op.length);
sentence[1] = op[opIndex];
opNumIndex = PublicFunction.getRandom(0, array.length);
sentence[2] = Integer.toString(array[opNumIndex]);
array = PublicFunction.deleteOneElement(array, array[opNumIndex]);
opIndex = PublicFunction.getRandom(0, op.length);
sentence[3] = op[opIndex];
opNumIndex = PublicFunction.getRandom(0, array.length);
sentence[4] = Integer.toString(array[opNumIndex]);
array = PublicFunction.deleteOneElement(array, array[opNumIndex]);
opIndex = PublicFunction.getRandom(0, op.length);
sentence[5] = op[opIndex];
opNumIndex = PublicFunction.getRandom(0, array.length);
sentence[6] = Integer.toString(array[opNumIndex]);
//用数组标识括号可能出现的位置
int[][] chindex1 = {{0, 4}, {2, 6}, {4, 8}, {0, 6}, {2, 8}};
int[][][] chindex2 = {{{0, 6}, {1, 5}}, {{0, 6}, {3, 7}},
{{2, 8}, {3, 7}}, {{2, 8}, {5, 9}}, {{0, 4}, {6, 10}}};
//随机产生括号位置组合,插入括号
int selectedArray = PublicFunction.getRandom(1, 3);
if (selectedArray == 1)
{
int index = PublicFunction.getRandom(0, 5);
sentence = PublicFunction.insertOneElement(
sentence, chindex2[index][0][0], ch[0]);
sentence = PublicFunction.insertOneElement(
sentence, chindex2[index][0][1], ch[1]);
sentence = PublicFunction.insertOneElement(
sentence, chindex2[index][1][0], ch[0]);
sentence = PublicFunction.insertOneElement(
sentence, chindex2[index][1][1], ch[1]);
}
else
{
int index = PublicFunction.getRandom(0, 5);
sentence = PublicFunction.insertOneElement(
sentence, chindex1[index][0], ch[0]);
sentence = PublicFunction.insertOneElement(
sentence, chindex1[index][1], ch[1]);
}
return sentence;
}
}
PublicFunction.java
package com.allen;
import java.util.Random;
public class PublicFunction {
/**
* 获取指定范围的随机数
* @param from 指定范围最小值
* @param to 指定范围最大值
* @return 指定范围的随机数
*/
public static int getRandom(int from, int to) {
return new Random().nextInt(to)%(to-from) + from;
}
/**
* 求阶乘
* @param n 阶数
* @return 阶乘
*/
public static int getFabonacci(int n) {
if (n==0 | n == 1) return 1;
else return n*getFabonacci(n-1);
}
/**
* 删除整型数组中的一个元素
* @param 整型数组
* @param 删除的元素
* @return 删除后的整型数组
*/
public static int[] deleteOneElement(int[] array, int element) {
int[] result = new int[array.length-1];
int mark = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] == element) {
mark = i;
break;
}
}
int index = 0;
for (int i = 0; i < mark; i++) {
result[index] = array[i];
index++;
}
for (int i = mark + 1; i < array.length; i++) {
result[index] = array[i];
index++;
}
return result;
}
/**
* 判断字符数组array中是否存在元素element
* @param array 字符数组
* @param element 元素
* @return 数组array中是否存在元素element
*/
public static boolean isExistsElement(String[] array, String element) {
boolean result = false;
if (array == null) return false;
for (int i = 0; i < array.length; i++) {
if (array[i] == null) break;
if (array[i].equals(element))
result = true;
}
return result;
}
/**
* 字符串数组插入一个元素
* @param array 字符串数组
* @param insertIndex 插入位置
* @param element 插入元素
* @return 插入后的字符串数组
*/
public static String[] insertOneElement(
String[] array, int insertIndex, String element) {
String[] result = new String[array.length+1];
int index = 0;
for (int i = 0; i < insertIndex; i++) {
result[index] = array[i];
index++;
}
result[index] = element;
index++;
if (insertIndex == (array.length-1))
result[index] = array[insertIndex];
for (int i = insertIndex; i < array.length; i++) {
result[index] = array[i];
index++;
}
return result;
}
}