> Java > java지도 시간 > Java 코드를 사용하여 여자친구의 생일을 추측해 보세요. 매우 흥미롭습니다!

Java 코드를 사용하여 여자친구의 생일을 추측해 보세요. 매우 흥미롭습니다!

풀어 주다: 2023-08-23 14:39:50
앞으로
905명이 탐색했습니다.

오늘은 여러분과 공유하겠습니다: 생일 자바 게임 추측하기

最近看到一个很有趣的小游戏:
询问朋友5个问题,找到他出生在一个月的哪一天。每个问题都是询问他的生日是否是5个数字集合中的一个。
这5个集合分别是:
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
생일은 이 날이 나타나는 각 세트의 첫 번째 숫자의 합입니다. 예를 들어 생일이 19인 경우 세트 1, 2, 5에 표시됩니다. 세 세트의 첫 번째 숫자는 다음과 같습니다. 각각 1, 2, 16이므로 합은 19입니다.
Java 코드를 사용하여 여자친구의 생일을 추측해 보세요. 매우 흥미롭습니다!
Java 구현은 다음과 같습니다.
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 + "!");

    }
}
로그인 후 복사
출력:
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!
로그인 후 복사
이 게임은 프로그래밍하기가 매우 쉽습니다. 이 게임을 만드는 방법이 궁금할 수도 있습니다. 사실, 이 게임의 수학은 매우 간단합니다. 이 숫자는 임의의 집합이 아닙니다. 5개 세트에 배치되는 방식은 매우 잘 고려되어 있습니다.
이 5개 세트의 첫 번째 숫자는 1, 2, 4, 8, 16이며 각각 이진수에 해당합니다. -반경: 4px; 여백-오른쪽: 2px; 여백-왼쪽: 2px; 색상: rgb(233, 105, 0); 배경: rgb(248, 248, 248);">1, 10, 100, 1000 및 10000 . 그림 3-2a와 같이 1부터 31까지의 10진수는 최대 5개의 이진수로 표현될 수 있습니다. 다음과 같이 가정해 보겠습니다. rgb(233, 105, 0); background: rgb(248, 248, 248);">b5b4b3b2b1, 그러면 b5b4b3b2b1=b50000 + b4000 + b300 + b20+b1, 1、10、100、1000和10000。从1到31的十进制数最多用五个二进制数就可以表示,如图3-2a所示。假设它是b5b4b3b2b1那么b5b4b3b2b1=b50000 + b4000 + b300 + b20+b1
如图所示。如果某天的二进制数在b位为整数1,那么该数就该出现在Setk中。例如:数字19的二进制是10011,所以它就该出现在集合1、集合2和集合5中。它就是二进制数1+10+10000=10011或者十进制数1+2+16=19
数字31的二进制是11111,所以它就会出现在集合1,集合2、集合3、集合4和集合5中。它就是二进制数1+10+100+1000+10000=11111,或是十进制数1+2+4+8+16=31
Java 코드를 사용하여 여자친구의 생일을 추측해 보세요. 매우 흥미롭습니다!
🎜🎜 그림과 같습니다. 특정 날짜의 이진수가 b 비트의 정수 1이면 해당 숫자가 Setk에 나타나야 합니다. 예를 들어 숫자 19의 이진수는 10011이므로 세트 1, 세트 2, 세트 5에 나타나야 합니다. 이진수입니다1+10+10000=10011또는 십진수1+2 + 16=19. 🎜🎜31이라는 숫자의 이진수는 11111이므로 1세트, 2세트, 3세트, 4세트, 5세트에 등장하게 됩니다. 🎜이진수입니다🎜1+10+100+1000+10000=11111🎜 또는 십진수🎜1+2+4+8+16=31🎜. 🎜🎜🎜🎜🎜🎜 🎜🎜

위 내용은 Java 코드를 사용하여 여자친구의 생일을 추측해 보세요. 매우 흥미롭습니다!의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:Java后端技术全栈
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿