コンテンツにスキップ

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の集合X
set_Y = set(ngram(s2, 2)) # "paragraph"に含まれるbi-gramの集合Y
print(str(set_X))
print(str(set_Y))
# XとYの和集合
set_or = set_X | set_Y
print(str(set_or))
# XとYの積集合
set_and = set_X & set_Y
print(str(set_and))
# XとYの差集合
set_sub = set_X - set_Y
print(str(set_sub))
# seというbi-gramがX, Yに含まれるか調べる
print('se' in set_X)
print('se' in set_Y)