[JAVA] Programme de jugement de bingo

Aperçu

Le bingo ou le jugement final est effectué en obtenant les informations de la carte de bingo et les informations du numéro lu à partir du fichier.

conditions

Dans un jeu de bingo normal, le centre est vacant depuis le début, mais pour le moment, je ne le quitterai pas cette fois.

Fichier d'entrée

Carte de bingo

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

Numéro sélectionné

selected.txt


1
7
13
19
2
3
4

Lire le fichier

Reportez-vous à cette page pour lire les fichiers [Java] Une méthode qui lit le fichier texte entier et renvoie une chaîne de caractères

À propos du jugement de bingo

La manière imprudente que j'ai trouvée pour le moment

-Coupez la valeur numérique du fichier avec fractionnement etc. et insérez-le dans un tableau à deux dimensions

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

・ À partir de là, passez à un autre tableau pour le jugement vertical, le jugement horizontal et le jugement diagonal.

        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];
                }
            }
        }

-Préparer une méthode qui renvoie le résultat du jugement avec deux tableaux (le tableau à comparer et le tableau sélectionné) comme arguments.

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";
        }
}

・ Vérifiez tous les modèles et faites le tour

        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++;
            }
        }

・ Afficher les résultats

        System.out.println("BINGO:"+bingoNum+"\nREACH:"+reachNum);

Impressions diverses

・ Comment utiliser le tableau est devenu compliqué ・ Il semble y avoir un algorithme qui semble être plus efficace (comme les expressions régulières) ・ Je pense qu'écrire un si petit programme en Java est quelque chose de différent. ・ Il serait intéressant de l'implémenter dans un langage ou un algorithme différent, de définir la taille de la carte de bingo à environ 10 000 et de comparer les vitesses. ・ Il serait intéressant de simuler à l'aide de nombres aléatoires pour connaître la relation entre le nombre de portée et de bingo et la taille de la carte de bingo.

Lien Github

https://github.com/johejo/Bingo

Recommended Posts

Programme de jugement de bingo
Nous avons remanié le "Bingo Judgment Program"
Programme de calculatrice
Programme de calculatrice
Programme de calcul des salaires Ruby
Programme FizzBuzz (2 types)
Programme de jugement de bingo