[JAVA] Bingo-Beurteilungsprogramm

Überblick

Bingo oder Reach-Beurteilung erfolgt durch Abrufen der Bingokarteninformationen und der Informationen der aus der Datei ausgelesenen Nummer.

Bedingungen

In einem normalen Bingospiel ist das Zentrum von Anfang an frei, aber vorerst werde ich dieses Mal nicht räumen.

Eingabedatei

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

Datei lesen

Auf dieser Seite finden Sie Informationen zum Lesen von Dateien [Java] Eine Methode, die die gesamte Textdatei liest und eine Zeichenfolge zurückgibt

Über Bingo Urteil

Die unkluge Art, die ich mir vorerst ausgedacht habe

        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);

Verschiedene Eindrücke

・ 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.

Github Link

https://github.com/johejo/Bingo

Recommended Posts

Bingo-Beurteilungsprogramm
Wir haben das "Bingo Judgement Program" überarbeitet.
Rechnerprogramm
Rechnerprogramm
Ruby Gehaltsberechnungsprogramm
FizzBuzz-Programm (2 Typen)
Bingo-Beurteilungsprogramm