2017年12月24日 星期日

b009: 無限猴子定理

b009: 無限猴子定理

"""
無限猴子定理的表述如下:讓一隻猴子在打字機上隨機地按鍵,
當按鍵時間達到無窮時,幾乎必然能夠打出任何給定的文字,
比如莎士比亞的全套著作。
(引用自維基百科)這是機率論裡學者提出的一個例子,
但是現實生活中,不可能有猴子可以活到無窮,
也有學者提出猴子要打出一句合乎文法的句子的機率可以說是趨近於零,
所以我們現在將它做一點修改,就是如果猴子打的文字,去掉某幾個字
元之後,如果符合我們給定的文字,就算達成任務了。


現在給你一個指定的文字和猴子輸入的文字,請你檢查是不是符合我們的條件。

輸入說明:
輸入兩個字串,第一個是指定的文字,第二個是猴子輸入的文字。
輸出說明:
如果猴子輸入的文字去掉某幾個(包含0個)字元之後,可以和指定的文字完全相同,
則輸出 YES,否則輸出 NO。(註:大小寫視為不同字元)

範例輸入:
輸入1:
ABC AXBXC

輸入2:
YES YyesS
範例輸出 :

輸出1:
YES

輸出2:
NO
"""
list1=str(input("第一個是指定的文字    -->"))
list2=str(input("第二個是猴子輸入的文字-->"))

#l = ['a', 'b', 'c']
#print(set(['a', 'b']) <= set(l))
list3=[]

for i in range(0,len(list2)):
            y=list2[i]
            if (set(y) <= set(list1)):
                #print('T',end='')
                list3.append(y)
                
            #else:
                #print('F',end='')
                
            
print(list3)

for i in range(0,len(list3)):
            y=list3[i:i+len(list1)]
            #print("比對",i,set(y),"----",set(list1))
            if (set(y) <= set(list1)) and ( len(set(y))==len(set(list1))) :
                        
                        print(i,"____Yes____")
                        break;
            else:
                        print(i,"____NO_____")
            

            




====================== RESTART: F:/Python_APSC/b009.py ======================
第一個是指定的文字    -->abc
第二個是猴子輸入的文字-->axbxbxbxbxbxbxaxbxbxaxbxcxbxbxb
['a', 'b', 'b', 'b', 'b', 'b', 'b', 'a', 'b', 'b', 'a', 'b', 'c', 'b', 'b', 'b']
0 ____NO_____
1 ____NO_____
2 ____NO_____
3 ____NO_____
4 ____NO_____
5 ____NO_____
6 ____NO_____
7 ____NO_____
8 ____NO_____
9 ____NO_____
10 ____Yes____
>>> 
====================== RESTART: F:/Python_APSC/b009.py ======================
第一個是指定的文字    -->YES
第二個是猴子輸入的文字-->YyesS
['Y', 'S']
0 ____NO_____
1 ____NO_____
>>>

沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...