コンテンツにスキップ

020: 「ブールの箱庭」のヒント

問題 / 解答

難易度: ☆☆☆

ヒント1

要素を変更できる set のまま返すと、あとから中身が変わってしまいます。 ブール代数の要素として扱う値は、frozenset にしておくと安全です。

ヒント2

和は a | b、積は a & b、補元は universe - a で実装できます。 ただし、演算の前に abuniverse の部分集合であることを確認します。

ヒント3

elements() では、universe のすべての部分集合を列挙します。 itertools.combinations を使うと、サイズ0からサイズ len(universe) までの組み合わせを作れます。

ヒント4

check_boolean_laws は、全要素の組み合わせを調べれば実装できます。 交換律と冪等律は1つまたは2つの要素、分配律は3つの要素を使って確認します。