本篇為追加過濾兩個字尾母音規則的第二個測試, 本系列之前的筆記參考 :
第八道過濾的規則是 : "每12字排列中,a, i, o, u 四個母音字母(變成一群),以這四個母音字母「結尾」的字有0~1個". 此規則的正規式如下 :
ptn=re.compile(r'\b\w*[aiou]\b') # 以 a, i, o, u 四個母音字母結尾的字
第一個測試語料是沒有以 a, i, o, u 四個母音字母結尾的字的情況 (應入選) :
>>> import re
>>> words=('please', 'age', 'pole', 'check', 'close', 'open', 'silent', 'apology', 'trial', 'engage', 'more', 'license')
>>> ptn=re.compile(r'\b\w*[aiou]\b') # a, i, o, u 四個母音字母結尾的字
>>> end_aiou=[True if re.match(ptn, w) else False for w in words]
>>> end_aiou
[False, False, False, False, False, False, False, False, False, False, False, False]
>>> if end_aiou.count(True) > 1: # True 個數須不超過 1 個 才入選
print('the permutation is excluded')
else:
print('the permutation is included')
the permutation is included
可見含有 0 個以 a, i, o, u 四個母音字母結尾的字被納入.
其次測試含有 1 個以 a, i, o, u 四個母音字母結尾的語料 :
>>> words=('please', 'ago', 'pole', 'check', 'close', 'open', 'silent', 'apology', 'trial', 'engage', 'more', 'license')
>>> ptn=re.compile(r'\b\w*[aiou]\b') # a, i, o, u 四個母音字母結尾的字
>>> end_aiou=[True if re.match(ptn, w) else False for w in words]
>>> end_aiou
[False, True, False, False, False, False, False, False, False, False, False, False]
>>> if end_aiou.count(True) > 1: # True 個數須不超過 1 個 才入選
print('the permutation is excluded')
else:
print('the permutation is included')
the permutation is included
可見含有 1 個以 a, i, o, u 四個母音字母結尾的字也被納入.
接下來測試含有 2 個以 a, i, o, u 四個母音字母結尾的語料 :
>>> words=('please', 'ago', 'pole', 'check', 'close', 'open', 'silent', 'apology', 'trial', 'engage', 'more', 'alumni')
>>> ptn=re.compile(r'\b\w*[aiou]\b') # a, i, o, u 四個母音字母結尾的字
>>> end_aiou=[True if re.match(ptn, w) else False for w in words]
>>> end_aiou
[False, True, False, False, False, False, False, False, False, False, False, True]
>>> if end_aiou.count(True) > 1: # True 個數須不超過 1 個 才入選
print('the permutation is excluded')
else:
print('the permutation is included')
the permutation is excluded
以上測試可以寫成如下程式於命令列執行 :
# perm_test_8.py
# 以 a, i, o, u 四個母音字母結尾的字不超過 1 個
import re
words=('please', 'age', 'pole', 'check', 'close', 'open', 'silent', 'apology', 'trial', 'engage', 'more', 'license')
ptn=re.compile(r'\b\w*[aiou]\b') # a, i, o, u 四個母音字母結尾的字
end_aiou=[True if re.match(ptn, w) else False for w in words]
print(end_aiou)
print(end_aiou.count(True))
if end_aiou.count(True) > 1: # True 個數須不超過 1 個 才入選
print('the permutation is excluded')
else:
print('the permutation is included')
沒有留言:
張貼留言