Home  >  Article  >  Java  >  Use Java code to guess your girlfriend’s birthday, which is very interesting!

Use Java code to guess your girlfriend’s birthday, which is very interesting!

Java后端技术全栈
Java后端技术全栈forward
2023-08-23 14:39:50859browse

Today I will share with you: Guess the birthday Java mini game

I recently saw a very interesting little game:
Ask your friend 5 questions to find out what day of the month he was born. Each question asks whether his birthday is one of a set of 5 numbers.
The five sets are:
set1: 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31
set2 :2 3 6 7 10 11 14 15 18 19 22 23 26 27 30 31
set3:4 5 6 7 12 13 14 15
set4:8 9 10 11 12 13 14 15 24 25 26 27 28 29 30 31
set5:16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
The birthday is the sum of the first numbers in each set where this day appears. For example, if the birthday is 19, then it will appear in sets 1, 2 and 5. The three sets The first numbers are 1, 2, and 16, and their sum is 19.
Use Java code to guess your girlfriend’s birthday, which is very interesting!
The implementation in Java is:
package 贪心;
/*
作者     :XiangLin
创建时间 :2023/8/23 10:53
文件     :GussBirthday.java
IDE      :IntelliJ IDEA
*/

import java.util.Scanner;

public class GussBirthday {
    public static void main(String[] args) {
        String set1 =
                "1 3 5 7\n" +
                "9 11 13 15\n" +
                "17 19 21 23\n" +
                "25 27 29 31";

        String set2 =
                "2 3 6 7\n" +
                "10 11 14 15\n" +
                "18 19 22 23\n" +
                "26 27 30 31";

        String set3 =
                " 4  5  6  7" +
                 "\n 12 13 14 15" +
                 "\n 20 21 22 23" +
                 "\n 28 29 30 31";

        String set4 =
                " 8  9 10 11" +
                "\n 12 13 14 15" +
                "\n 24 25 26 27" +
                 "\n 28 29 30 31";

        String set5 =
                " 16 17 18 19" +
                "\n 20 21 22 23" +
                "\n 24 25 26 27" +
                "\n 28 29 230 31";

        int  day = 0;

        // Create Scanner
        Scanner input = new Scanner(System.in);

        // Prompt the user to answer questions
        System.out.println("Is your birthday in Set1?\n");
        System.out.println(set1);
        System.out.println("\nEnter 0 for No and 1 for Yes: ");
        int answer = input.nextInt();

        if (answer == 1)
            day += 1;

        // Prompt the user to answer questions
        System.out.println("Is your birthday in Set2?\n");
        System.out.println(set2);
        System.out.println("\nEnter 0 for No and 1 for Yes: ");
        answer = input.nextInt();

        if (answer == 1)
             day += 2;

        // Prompt the user to answer questions
        System.out.println("Is your birthday in Set3?\n");
        System.out.println(set3);
        System.out.println("\nEnter 0 for No and 1 for Yes: ");
        answer = input.nextInt();

        if (answer == 1)
            day += 4;

        // Prompt the user to answer questions
        System.out.println("Is your birthday in Set4?\n");
        System.out.println(set4);
        System.out.println("\nEnter 0 for No and 1 for Yes: ");
        answer = input.nextInt();

        if (answer == 1)
             day += 8;

        // Prompt the user to answer questions
        System.out.println("Is your birthday in Set5?\n");
        System.out.println(set5);
        System.out.println("\nEnter 0 for No and 1 for Yes: ");
        answer = input.nextInt();

        if (answer == 1)
            day += 16;

        System.out.println("\nYour birthday is " + day + "!");

    }
}
Output:
Is your birthday in Set1?

1 3 5 7
9 11 13 15
17 19 21 23
25 27 29 31

Enter 0 for No and 1 for Yes: 
1
Is your birthday in Set2?

2 3 6 7
10 11 14 15
18 19 22 23
26 27 30 31

Enter 0 for No and 1 for Yes: 
1
Is your birthday in Set3?

 4  5  6  7
 12 13 14 15
 20 21 22 23
 28 29 30 31

Enter 0 for No and 1 for Yes: 
0
Is your birthday in Set4?

 8  9 10 11
 12 13 14 15
 24 25 26 27
 28 29 30 31

Enter 0 for No and 1 for Yes: 
0
Is your birthday in Set5?

 16 17 18 19
 20 21 22 23
 24 25 26 27
 28 29 230 31

Enter 0 for No and 1 for Yes: 
1

Your birthday is 19!
This game is very easy to program. You may be curious to know how to create this game. In fact, the math behind this game is very simple. These numbers are not an arbitrary set. The way they are placed in the five sets is very well thought out.
The first numbers of these five sets are 1, 2, 4, 8 and 16, which correspond to the binary numbers 1, 10, 100, 1000 and 10000 respectively. Decimal numbers from 1 to 31 can be represented by up to five binary digits, as shown in Figure 3-2a. Suppose it is b5b4b3b2b1, then b5b4b3b2b1=b50000 b4000 b300 b20 b1,
as the picture shows. If the binary number of a certain day is an integer 1 in the b bit, then the number should appear in Setk. For example: the binary number of the number 19 is 10011, so it should appear in set 1, set 2 and set 5. It is the binary number 1 10 10000=10011 or the decimal number 1 2 16=19.
The binary number 31 is 11111, so it will appear in set 1, set 2, set 3, set 4 and set 5. It is a binary number1 10 100 1000 10000=11111, or a decimal number1 2 4 8 16=31 .
Use Java code to guess your girlfriend’s birthday, which is very interesting!

The above is the detailed content of Use Java code to guess your girlfriend’s birthday, which is very interesting!. For more information, please follow other related articles on the PHP Chinese website!

Statement:
This article is reproduced at:Java后端技术全栈. If there is any infringement, please contact admin@php.cn delete