iT邦幫忙

2024 iThome 鐵人賽

DAY 22
1
AI/ ML & Data

從0開始認識AI系列 第 22

Day 22 - 猜數字

  • 分享至 

  • xImage
  •  

Day 22 - 猜數字

猜數字遊戲規則介紹

  1. 數字組合:遊戲的目標是猜出一組由四個不同數字組成的組合(例如:1234)。
  2. 猜測與反饋:玩家每次猜測一組數字,系統會給出反饋,包括 A 和 B 的個數。A 表示位置和數字均正確的數字個數,B 表示數字正確但位置不正確的數字個數。
  3. 範例:若正確答案為 1234,猜測 1357,則反饋為 1A1B(1 個數字正確且位置正確,1 個數字正確但位置錯誤)。

1. 從數字到順序

1.1 概念介紹

「從數字到順序」的演算法目的是逐步縮小範圍,確定數字和其位置。這個過程通過改變數字位置來確定其正確順序,依賴玩家的邏輯推理和策略。

1.2 過程描述

  • 先確定數字:逐步嘗試不同數字來找到正確的四個數字。
  • 確定順序:改變數字的位置來確定每個數字的正確位置。

1.3 優缺點

優點

  • 不需要艱深的理論和數學基礎,適合大多數玩家。

缺點

  • 定義不夠明確,依賴玩家的直覺和邏輯推理,因人而異。

2. 刪去法

2.1 概念介紹

刪去法利用窮舉的方式,列出所有可能答案,並從中隨機選擇一個作為猜測。

2.2 過程描述

  • 列出所有可能的數字組合
  • 每次猜測後,根據得到的提示(A 和 B 的數量),排除不可能的組合。

2.3 優缺點

優點

  • 不需要太多技巧,適合作為程式設計的入門練習。

缺點

  • 隨機猜測,未必最佳。

3. 分類最優化策略

3.1 概念介紹

分類最優化策略是較為複雜的演算法,提高了猜測的效率,保證在較少次數內找到正確答案。

3.2 演算法流程

3.2.1 篩選與剩餘可能答案

每次猜測後,根據得到的 A 和 B 的數量,排除不可能的組合,將剩餘可能的數字組合定義為「剩餘可能答案」。第 N 次猜測後的剩餘可能答案必然是第 N 次猜測的子集。

3.2.2 分類

每次猜測後,會得到不同的 A 和 B 的回覆,這些回覆可以分為 14 種情況(如 0A0B、1A2B 等)。每次猜測將剩餘的可能答案分類到這 14 種情況中。

3.2.3 分類標準

不同的猜測數字會導致不同的分類情況。我們希望選擇一個能將數字分得最「平均」的猜測數字。所謂的「平均」是指將最多元素的類別的數量降至最低。

3.3 具體例子

例如,在某次遊戲中,現有的條件為:

  • 0123 0A1B
  • 1456 1A1B
  • 2406 1A1B
  • 3478 0A2B

程式計算得到可能答案為 2754、2854、4396、4936、9346。最佳猜測不在這 5 個數字中,而是 0397。當猜測 0397 後,如果答案是 2754,其回覆為 0A1B;如果答案是 2854,其回覆為 0A0B。如此下去,兩次猜測內即可找到正確答案。

4. 結論

在猜數字遊戲中,各種演算法各有優缺點。「從數字到順序」和「刪去法」雖然簡單,但未必最佳。而分類最優化策略通過每次猜測後的分類和篩選,提高了猜測的準確性。


另外,我有自己按照上面想法寫的猜數字程式,懂程式的人可以看看,猜數字(自動判斷)程式,它會讓你輸入答案然後自動玩遊戲,如果不相信電腦沒偷看答案那就用這版的猜數字程式(自行輸入)


上一篇
Day21-生成對抗網路(GAN)的概念與應用
下一篇
Day23-bingo遊戲
系列文
從0開始認識AI30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言