package com.example.lottery;
import java.util.*;
import java.util.stream.Collectors;
public class SSQAnalyzer {
private static final String HISTORY_DATA = """
04 11 15 24 25 33 15
06 07 09 13 21 27 05
04 14 16 23 24 30 14
07 11 13 18 27 31 11
06 13 17 22 24 29 11
04 06 07 16 17 21 08
02 04 11 12 23 25 06
09 14 16 17 25 33 11
07 08 14 18 21 27 11
01 07 08 17 20 22 06
10 16 19 27 28 30 09
03 07 17 27 29 32 04
10 19 20 26 28 29 15
09 12 13 15 22 26 11
02 03 17 18 22 33 16
""";
public static void main(String[] args) {
try (Scanner sc = new Scanner(System.in)) {
System.out.println("请输入6个红球号码(1-33) + 蓝球号码(1-16)");
System.out.print("格式示例:5 12 23 8 30 9 14\n> ");
String input = sc.nextLine();
if (!isValidFormat(input)) {
System.err.println("输入格式错误!请确认:6个红球+双空格+蓝球");
return;
}
BallNumbers nums = parseInput(input);
if (nums == null) return;
System.out.printf("已接收:红球%s | 蓝球%02d%n",
nums.reds.stream().sorted().collect(Collectors.toList()),
nums.blue);
}
}
private static boolean isValidFormat(String input) {
return input.trim().matches(
"(\\d{1,2}\\s+){5}\\d{1,2} \\d{1,2}"
);
}
private static BallNumbers parseInput(String input) {
try {
String[] parts = input.trim().split(" +");
List<Integer> reds = Arrays.stream(parts[0].split("\\s+"))
.map(Integer::parseInt)
.collect(Collectors.toList());
if (reds.size() != 6 || reds.stream().anyMatch(n -> n < 1 || n > 33)) {
System.err.println("红球应为6个1-33的不同号码");
return null;
}
Set<Integer> uniqueReds = new HashSet<>(reds);
if (uniqueReds.size() != 6) {
System.err.println("红球号码存在重复");
return null;
}
int blue = Integer.parseInt(parts[1].trim());
if (blue < 1 || blue > 16) {
System.err.println("蓝球应为1-16的数字");
return null;
}
return new BallNumbers(reds, blue);
} catch (Exception e) {
System.err.println("输入解析错误:" + e.getMessage());
return null;
}
}
private static class BallNumbers {
List<Integer> reds;
int blue;
BallNumbers(List<Integer> reds, int blue) {
this.reds = reds;
this.blue = blue;
}
}
}