iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0
自我挑戰組

突然冒出的自學計畫系列 第 19

#Day19 猜猜數字(二)

  • 分享至 

  • xImage
  •  

早安,又是新的一天,來把這個小東西幹出來
經過一番研究,其實寫成
char[] r = s.ToCharArray();
就可以成立了啊
莫名直觀
只是不知道有沒有什麼ToIntArray、ToStringArray之類的東西

欸,有欸,ToIntArray 在Kotlin裡面欸笑死

好,回歸正題
總之既然已經能夠順利地變出array,剩下的一切就簡單了
直接上code!

Random z = new Random();
int nu = z.Next(9999);
string s = nu.ToString();
while (s.Length != 4)
{
    s = "0" + s;
}
char[] rr = s.ToCharArray();

int i =0;
string a = Convert.ToString(Console.ReadLine());
char[] qq = a.ToCharArray();

while (true)
{
    int m = 0;
    int n = 0;
    char o = '0';
    if (a == s)
    {
        Console.WriteLine("You are right");
        break;
    }
    else if(i<=5)
    {
        if(a.Length == 4)
        {
            for(int j=0;j<4; j++)
            {
                for (int y = 0; y < 4; y++)
                {
                    if (rr[j] == qq[y])
                    {
                        m += 1;
                        if (rr[j] != o)
                        {
                            o = qq[y];
                            n += 1;
                        }
                    }                
                }
            }
            Console.WriteLine($"符合{m}不重複{n}");
        }        
        Console.WriteLine("Try again");
        a = Convert.ToString(Console.ReadLine());
        qq = a.ToCharArray();
        i++;
    }
    else
    {
        Console.WriteLine("Fall");
        break;
    }
}

好,我感覺一定有人會想,這個代碼也用得太醜了吧
沒錯,我就懶,練習題這種自己看的東西能用一個字母就不要用兩個,能用兩個字母就不要用三個

但未來如果真的有辦法寫程式賺錢錢,我一定會好好取名字的:D

然後有人仔細看的話,應該會發現這個版本還是有一些瑕疵
再貼一次老師的條件

  • 謎底為0567,所猜數字為5566
  • 5、5、6、6均出現在謎底中,所以m等於4
  • 其中一個5一個6與謎底的第二與第三位數之位置與數值均相同,所以n等於2

而我的這個版本則會出現m2n2
其實說穿了就是題目沒看清楚,數的東西不一樣拉
不過大家還是可以玩玩看,蠻殺時間的XD


上一篇
#Day18 猜猜數字(一)
下一篇
#Day20 一些其他東西:GitHub & const
系列文
突然冒出的自學計畫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言