在資訊領域常常會聽到『演算法 Algorithm』這個詞,到底演算法是什麼意思呢?我們用數學家高斯在小學四年級的時候提出來的一個解題方法來做例子,說明何謂演算法。
2019/09/22
2018/07/08
1A2B 猜數字遊戲
我很喜歡 1A2B 這個遊戲,想要寫一個小程式讓電腦出題,平常無聊時就可以猜電腦出的數字。
1A2B 遊戲規則
1A2B 這個遊戲在國外叫 mastermind 或 cows and bulls,玩法是選個 4 位數的數字,這 4 位數中的數字不能重覆,比方說 1231 這樣是不行的,因為 1 重覆使用了。另外,我自己玩的時候最高位數不能為 0,比方說 0123 這樣是不行的,但我看其他人在玩的時候最高位數還是可以為 0。
假設我選的數字是 1234,對手猜 9801,那對手猜中 1 這個數字,但是位子不對,這樣的情況稱為 B。因為對手沒有猜中其他數字,所以總計起來就是 1 個 B 而已,所以我會回報對手 『0A1B』,告訴他:『你猜中了一個數字,但這數字不在正確的位子上。』
如果對手猜 1987,那麼 1 被它猜中了,而且位子也在正確的地方,這樣的情況稱為 A, 因為對手沒有猜中其他數字,所以總計起來就是 1 個 A 而已,所以我會回報 『1A0B』,告訴他:『你猜中了一個數字,而且這數字在正確的位子。』
下次對手猜 4201,4 這個數字猜中了,但位子不對,1 個 B;2 這個數字猜中了,而且位子也正確,1 個 A;1 這個數字猜中了,但位子不對,1 個 B,總計就是 1 個 A 還有 2 個 B,所以我回報給對手:『1A2B』,遊戲的目標就是要達到 4A -- 4 位數都猜中,而且數字都在正確的位置上。
2018/04/14
驚覺演算法真的很重要
我現在正在中興大學修資訊第二專長,這學期修 Algorithms (演算法) 這門課,每個星期的作業量好多,而且幾乎都是數學證明,讓我這數學不好的人感到這門課實在有點難熬。
前幾天跟資工所畢業,現在在業界當工程師的好友 CSC 聊天,我說老師們很需要一個自動排座位的軟體,因為排座位實在很費工夫。
CSC:『咦?不是有很多人用 Excel 寫好這類的程式了嗎?我這邊就有一些啊。』
『那個是用亂數排的,根本不合用。在教室中,有些學生彼此不對頭,不能把他們放在附近;有些又感情太好,放在一起一定講話講個沒完。所以亂數排的座位表完全不能用。』