Bingo oder Reach-Beurteilung erfolgt durch Abrufen der Bingokarteninformationen und der Informationen der aus der Datei ausgelesenen Nummer.
In einem normalen Bingospiel ist das Zentrum von Anfang an frei, aber vorerst werde ich dieses Mal nicht räumen.
Bingokarte
board.txt
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
Ausgewählte Nummer
selected.txt
1
7
13
19
2
3
4
Auf dieser Seite finden Sie Informationen zum Lesen von Dateien [Java] Eine Methode, die die gesamte Textdatei liest und eine Zeichenfolge zurückgibt
String str = readAll("board.txt");
String[] str2 = str.split("\n");
int N = str2.length;
String[][] str4 = new String[N][N];
int[][] board = new int[N][N];
for (int i = 0; i < str2.length; i++){
str4[i] = str2[i].split(" ");
}
for (int i = 0; i < str4.length; i++){
for (int j = 0; j < str4.length; j++){
board[i][j] = Integer.parseInt(str4[i][j]);
}
}
String str3 = readAll("selected.txt");
String[] str5 = str3.split("\n");
int[] selected = new int[str5.length];
for (int i = 0; i < str5.length; i++){
selected[i] = Integer.parseInt(str5[i]);
}
・ Nehmen Sie von dort aus ein anderes Array für die vertikale Beurteilung, die horizontale Beurteilung und die diagonale Beurteilung heraus.
int[][] row = new int[N][N];
int[][] col = new int[N][N];
int[][] naname = new int[2][N];
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board.length; j++) {
col[i][j] = board[j][i];
row[i][j] = board[i][j];
if (i == j) {
naname[0][i] = board[i][j];
}
if (i + j == N - 1) {
naname[1][i] = board[i][j];
}
}
}
public static String board(int[] board, int[] selected){
int count = 0;
for (int i = 0; i < board.length; i++){
for (int j = 0; j < selected.length; j++){
if(board[i] == selected[j]){
count++;
break;
}
}
}
if (count == board.length) {
return "Bingo";
} else if (count == board.length - 1) {
return "Reach";
} else {
return "NOT";
}
}
・ Überprüfen Sie alle Muster und gehen Sie herum
int bingoNum = 0, reachNum = 0;
for (int[] i : col) {
if (check(i, selected).equals("Bingo")){
bingoNum++;
} else if (check(i, selected).equals("Reach")){
reachNum++;
}
}
for (int[] i : row) {
if (check(i, selected).equals("Bingo")){
bingoNum++;
} else if (check(i, selected).equals("Reach")){
reachNum++;
}
}
for (int[] i : naname) {
if (check(i, selected).equals("Bingo")){
bingoNum++;
} else if (check(i, selected).equals("Reach")){
reachNum++;
}
}
・ Ergebnisse anzeigen
System.out.println("BINGO:"+bingoNum+"\nREACH:"+reachNum);
・ Die Verwendung des Arrays ist unübersichtlich geworden ・ Es scheint einen Algorithmus zu geben, der effizienter zu sein scheint (z. B. reguläre Ausdrücke). ・ Ich denke, dass das Schreiben eines so kleinen Programms in Java etwas anderes ist. ・ Es wäre interessant, es in einer anderen Sprache oder einem anderen Algorithmus zu implementieren, die Bingokartengröße auf etwa 10.000 einzustellen und die Geschwindigkeiten zu vergleichen. ・ Es wäre interessant, mithilfe von Zufallszahlen die Beziehung zwischen der Anzahl der Reichweiten und dem Bingo und der Größe der Bingokarte zu simulieren.
https://github.com/johejo/Bingo