为了节省内存空间(提高运行效率)
把这部分代码:
// 珠玑妙算游戏类定义 public static class Mastermind { private int positions; // 位置数 private int colors; // 颜色数 private List<Integer> secret; // 秘密序列 private List<Integer> probabilitySpace; // 概率空间
中的:
private List<Integer> probabilitySpace; // 概率空间
修改成:
private char[] probabilitySpace; // 概率空间
不但节省了内存空间,还提高了运行效率:
// MasterMind.java : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;
public class MasterMind {
// 处理输入,支持空格、逗号或无分隔符
public static void processInput(String input, List<Integer> result) {
input = input.replaceAll("[ ,]", ""); // 删除空格和逗号
// 检查输入是否只包含数字
if (!input.chars().allMatch(Character::isDigit)) {
System.err.println("输入无效。请输入仅包含数字的字符,中间可以用空格或逗号分隔。");
return;
}
// 将字符转换为数字并加入结果列表
for (char c : input.toCharArray()) {
result.add(c - '0');
}
}
// 珠玑妙算游戏类定义
public static class Mastermind {
private int positions; // 位置数
private int colors; // 颜色数
private List<Integer> secret; // 秘密序列
private char[] probabilitySpace; // 概率空间
public Mastermind(int numPositions, int numColors) {
positions = numPositions;
colors = numColors;
initializeProbabilitySpace();
}
// 生成秘密序列
public void generateSecret() {
secret = new ArrayList<>(positions);
Random rand = new Random();
for (int i = 0; i < positions; ++i) {
secret.add(rand.nextInt(colors));
System.out.print(secret.get(i) + " ");
}
System.out.println();
}
// 获取用户猜测
public void getUserGuess(List<Integer> guess) {
System.out.print("输入您的猜测 (例如:0012 表示一个4位的猜测): ");
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
// 验证输入的长度和字符合法性
if (input.length() != positions || !input.chars().allMatch(Character::isDigit)) {
System.err.println("输入无效。请确保输入正好有 " + positions + " 位数字 (0-9) 且不包含其他字符。");
getUserGuess(guess);
return;
}
guess.clear();
for (char c : input.toCharArray()) {
int digit = c - '0';
if (digit >= 0 && digit < colors) {
guess.add(digit);
} else {
System.err.println("输入无效。每位数字必须在 0 和 " + (colors - 1) + " 之间。");
getUserGuess(guess);
return;
}
}
}
// 提示结构体定义
public static class HintStruct {
int black; // 位置和颜色都正确的个数
int white; // 颜色正确但位置不对的个数
public HintStruct(int black, int white) {
this.black = black;
this.white = white;
}
}
// 评估用户猜测
public HintStruct evaluateGuess(List<Integer> guess) {
HintStruct hint = new HintSt

最低0.47元/天 解锁文章
597

被折叠的 条评论
为什么被折叠?



