AI确实很强大,或许未来已来

发布时间 2023-04-02 21:53:57作者: atkfc

用的是国内非知名某chat app(非pro,每天限制几个提问)。

提问一:用C#语言编写一个猜数字的游戏, 每次从整数1到9中猜四个数字,不可重复。 每猜一次数字和顺序都对时,则打印一个“b”;每猜一次数字对但顺序不对则打印一个”w”。

具体它给出的回答如下:

//这是一个简单的猜数字游戏C#代码,要求猜测的数字不重复,每次猜测后,如果有数字和位置都正确,则打印一个 "b";如果有数字正确但是位置不对,则打印一个 "w",直到玩家猜出正确答案才结束游戏。

//```csharp
using System;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        int[] answer = GenerateAnswer();
        int[] guess = new int[4];
        bool correct = false;

        while (!correct)
        {
            Console.Write("猜4个不同的数字(1~9),请以空格分隔:");
            guess = Console.ReadLine().Split().Select(int.Parse).ToArray();

            if (!CheckValidGuess(guess))
            {
                Console.WriteLine("无效的猜测,请重新输入。");
                continue;
            }

            string result = "";
            int b = 0, w = 0;
            for (int i = 0; i < 4; i++)
            {
                if (answer[i] == guess[i])
                    b++;
                else if (answer.Contains(guess[i]))
                    w++;
            }

            if (b == 4)
            {
                correct = true;
                result = "恭喜你,猜对了!";
            }
            else
            {
                result = $"结果是 {b}b {w}w 。";
            }

            Console.WriteLine(result);
        }

        Console.ReadKey();
    }

    static int[] GenerateAnswer()
    {
        Random rnd = new Random();
        int[] arr = new int[4];

        for (int i = 0; i < 4; i++)
        {
            int num = rnd.Next(1, 10);
            while (arr.Contains(num))
            {
                num = rnd.Next(1, 10);
            }
            arr[i] = num;
        }

        return arr;
    }

    static bool CheckValidGuess(int[] arr)
    {
        if (arr.Length != 4)
            return false;

        for (int i = 0; i < 4; i++)
        {
            if (arr[i] < 1 || arr[i] > 9)
                return false;

            for (int j = i + 1; j < 4; j++)
            {
                if (arr[i] == arr[j])
                    return false;
            }
        }

        return true;
    }
}
//```

//这个程序利用 Random 类随机生成答案,然后每次从控制台中读取玩家输入,利用 CheckValidGuess 函数验证输入是否合法,
//若不合法则提示错误信息,重新读取输入;若合法,则通过遍历判断输入与答案中数字位置和数字是否相同,并输出结果,最后提示猜对的消息。
View Code
运行后结果如下: