06. 集合
問題
“paraparaparadise”と”paragraph”に含まれる文字bi-gramの集合を,それぞれ, XとYとして求め,XとYの和集合,積集合,差集合を求めよ.さらに,‘se’というbi-gramがXおよびYに含まれるかどうかを調べよ.
回答例
ここをクリックして回答を見る
# 文字列sを、数字nでn-gramする関数def ngram(s, n): result = [] last = len(s) - n + 1 # n個ずつに分割できる最後の位置
for i in range(last): result.append(s[i:i+n]) # スライスを使って、i から i+n までを切り取る
return result
s1 = "paraparaparadise"s2 = "paragraph"
set_X = set(ngram(s1, 2)) # "paraparaparadise"に含まれるbi-gramの集合Xset_Y = set(ngram(s2, 2)) # "paragraph"に含まれるbi-gramの集合Y
print(str(set_X))print(str(set_Y))
# XとYの和集合set_or = set_X | set_Yprint(str(set_or))
# XとYの積集合set_and = set_X & set_Yprint(str(set_and))
# XとYの差集合set_sub = set_X - set_Yprint(str(set_sub))
# seというbi-gramがX, Yに含まれるか調べるprint('se' in set_X)print('se' in set_Y)