�G���j�M�k�G
1.��Ƥw�ƥ��Ʀn���ǡC
2.�C�����q�u�������v�}�l�j�M�C
3.�i�H���Ī��Y�p�j�M�d��A�W�[�IJv�C
�Ҧp�G�i��u���K�X�v�C���A�@�H���D���H�A��w�@�Ӥ��� 1 �� 99 ���Ʀr�������A�t�@�H�����a�Ӳq�Ʀr�C�C�����a���X�@�ӼƦr��A�D���H�N�^�� �u�Ӥj�v�B�u�Ӥp�v�Ρu����v�C
1��ƥ����w�ƧǡC
2 ��X�u�ݷj�M�d��v���u������m�ȡv�G
3����G
(1)�Y������m�ȡץؼСA�����j�M�C
(2)�Y������m�ȡڥؼСA�N�u������m�ȻP�t�@������ơv�ư��C
4 ����2��3�A�Y�w�ư��Ҧ���Ƥ������A�N���L�ؼи�ơA�õ����j�M�C
�A���p�G
1.��Ƭ��u�w�Ƨǡv�����W�λ���ƦC�C
2. �j�M�覡�G �C������良�Q�ư�����ƪ������ȡA�Y���O�ؼСA�h�R�����i��s�b�ؼЪ����@�b�� �ơC
���C�@��������Ϸj�M�d���Y�p�@�b�C
猜數字是一種益智遊戲,遊戲人數為兩人,或一人與一個運算機器。
4digits的運行畫面 |
2人 |
低 |
分析 |
玩法編輯
一個人設定一組四碼的數字作為謎底,另一方猜。每猜一個數,出數者就要根據這個數字給出提示,提示以XAYB形式呈現,直到猜中為止。其中X表示位置正確的數的個數,而Y表示數字正確而位置不對的數的個數。
例如,當謎底為8123,而猜謎者猜1052時,出題者必須提示0A2B。
例如,當謎底為5637,而猜謎者猜4931時,出題者必須提示1A0B。
含重複數字的猜數字編輯
有一種使用範圍比較狹窄的猜數字,是允許重複數字存在的猜數字,但由於其規則較複雜,故沒有得到廣泛的推廣。其規則如下:
除了上面的規則外,如果有出現重複的數字,則重複的數字每個也只能算一次,且以最優的結果為準,
如正確答案為5543,猜的人猜5255,則在這裡不能認為猜測的第一個5對正確答案第二個,根據最優結果為準的原理和每個數字只能有一次的規則,兩個比較後應該為1A1B,第一個5位置正確,記為1A;猜測數字中的第三個5或第四個5和答案的第二個5匹配,只能記為1B。當然,如果有猜5267中的第一個5不能與答案中的第二個5匹配,因此只能記作1A0B。
解法編輯
對於第一種玩法而言,有以下的解法:
計算機解編輯
通常採用的計算機解是通過排除法,即遍歷所有可能的數,將不符合要求的數剃掉。[1]
下面是一個計算機處理的例子:
for (int i = 0; i < Array.Count; i++) { if (请求提示(Array[i]) == 全A) return Array[i]; }
這個代碼採用C#的語法,其中Array表示所有可能的數字的集合。這個例子為了方便說明,結合了語言的描述。
這樣的方法充分利用了計算機計算速度快的優勢,使用窮舉法,並不進行推理。數字越長猜測時間越長。
推理解編輯
計算機解是根據這種方法推廣的。這種解法的中心思想是假設猜的這個數字是正確答案,即如果它為正確答案,那麼這個數應該符合已經猜測的數及其結果。如已經有
1234 0A0B
那麼下一步就不能猜含有1234中任一數字的數,因為如果正確答案含1234中任一數字;則出題者不會說1234是0A0B。
再假設如果出題者說 5678 是 0A1B 的話,則正確答案必須只包含5、6、7、8其中僅僅一個數字,且如果有5、6、7、8的話,5的位置必須不在(左邊數起)第一個位置、6的位置必須不在(左邊數起)第二個位置、7的位置必須不在(左邊數起)第三個位置、8的位置必須不在(左邊數起)第四個位置。
再假設如果出題者說 1357 是 1A0B 的話,則正確答案必須只包含1、3、5、7其中僅僅一個數字,且如果有1、3、5、7的話,1的位置必須在(左邊數起)第一個位置、3的位置必須在(左邊數起)第二個位置、5的位置必須在(左邊數起)第三個位置、7的位置必須在(左邊數起)第四個位置。
基於這個解法,根據個人思維風格和起始數字選擇的不同,以及對出題者出數風格的猜測,經過一些計算機程式的大量模擬,猜到答案的平均次數大約為5.3次。顯然地,如果運氣夠好,有機會可以在一次、兩次猜到答案;運氣不好之時,花費八次猜測才找到答案也不無可能。
使用這種解法需要考慮的時間很久,不是很適合人們使用;特別是在限時賽中,人們很難檢視所有可能的候選答案,然後選擇其中最佳者。事實上,有興趣的數學研究者,提出一種證明方法,證明了四位數(數字不重複、零可以開頭)的猜數字遊戲,在最佳狀況下,可以用至多七次的猜測找到對手的答案,而平均來說,只要花5.2131次的猜測來完成一次的遊戲。[2][3]
代入解編輯
即在推理出不可能的數字後,將餘下可能的數字依序帶入。
參考資料編輯
- ^ 電腦(1A2B)猜數字遊戲的策略. 陳麒全、林新富、陳鴻宜. [2021-08-20]. (原始內容存檔於2021-08-20).
- ^ Optimal algorithms for bulls and cows game. (PDF). [2012-08-17]. (原始內容存檔 (PDF)於2013-05-20).
- ^ //www.cs.nccu.edu.tw/~chaolin/papers/science3203.pdf (頁面存檔備份,存於網際網路檔案館) 劉昭麟. 數學、資訊科學與數字遊戲, 科學月刊,第32卷第3期,第250到255頁, 財團法人臺北市科學出版事業基金會,2001.
其他編輯
著名的桌上遊戲Master Mind (頁面存檔備份,存於網際網路檔案館)(珠機妙算),就是這種遊戲形式的實物道具版本,只是把所要猜的由數字改為顏色。
參看編輯
- 遊戲
- 智力遊戲
- 人工智慧
- Mastermind
外部連結編輯
- 4digits,開源的猜數字遊戲 (頁面存檔備份,存於網際網路檔案館)
- Master Mind式樣 (頁面存檔備份,存於網際網路檔案館)