首頁 > Java > java教程 > 用Java程式碼實現, 猜女朋友生日,很有意思!

用Java程式碼實現, 猜女朋友生日,很有意思!

發布: 2023-08-23 14:39:50
轉載
909 人瀏覽過

今天跟大家分享:猜生日 Java小遊戲

#
最近看到一個很有趣的小遊戲:
問朋友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##set3:4 5 6 7 12 13 14 15## 
##C #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 ###16 17 18 19 20 21 22 23 124 292 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!
登入後複製
這個遊戲是很容易被程式設計的。你可能很好奇想知道如何創建這個遊戲。實際上,這個遊戲背後的數學知識是非常簡單的。這些數字不是隨意組成一組的。它們放在五個集合中的方式是經過深思熟慮的。
這五個集合的第一個數分別是1、2、4、8和16,它們分別對應二進位數的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 10 100 1000 10000=11111##1 10 100 1000 10000=11111
用Java程式碼實現, 猜女朋友生日,很有意思!1 2 4 8 16=31
############ ######
#

以上是用Java程式碼實現, 猜女朋友生日,很有意思!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:Java后端技术全栈
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板