06. 集合
"paraparaparadise"と"paragraph"に含まれる文字bi-gramの集合を,それぞれ, XとYとして求め,XとYの和集合,積集合,差集合を求めよ.さらに,'se'というbi-gramがXおよびYに含まれるかどうかを調べよ.
Pythonでやった
今回は set を使って解く問題だった
#!/bin/usr/env python ''' 06. 集合 "paraparaparadise"と"paragraph"に含まれる文字bi-gramの集合を,それぞれ, XとYとして求め,XとYの和集合,積集合,差集合を求めよ. さらに,'se'というbi-gramがXおよびYに含まれるかどうかを調べよ. ''' def ngram(sequence, n=2): rtnngram = [] for i in range(len(sequence)-n+1): rtnngram.append(sequence[i:i+n]) return rtnngram def main(): X = set(ngram('paraparaparadise', 2)) Y = set(ngram('paragraph', 2)) print('X: ', X) # X: {'is', 'di', 'ap', 'se', 'ar', 'ra', 'pa', 'ad'} print('Y: ', Y) # Y: {'gr', 'ap', 'ar', 'ra', 'pa', 'ag', 'ph'} print('和集合: ', X | Y) # 和集合: {'is', 'di', 'gr', 'ap', 'ph', 'se', 'ar', 'ra', 'pa', 'ag', 'ad'} print('積集合: ', X & Y) # 積集合: {'ar', 'ap', 'ra', 'pa'} print('差集合: ', X - Y) # 差集合: {'is', 'di', 'se', 'ad'} print("'se'は含まれるか: ", 'se' in X | Y) # 'se'は含まれるか: True if __name__ == '__main__': main()
(集合ってこの問題で使うはずだったのか...)