019: 1+1=?¶
難易度: ☆☆
問題¶
二元体 \(F_2\) を表すクラス F2 を書いてください。
F2 の要素は 0 と 1 の2つだけです。
通常の整数では 1 + 1 == 2 です。
しかし、\(F_2\) では 1 + 1 == 0 です。
次の演算を実装してください。
F2(value):整数valueからF2の要素を作るrepr(x):F2(0)またはF2(1)を返すint(x):中身の整数0または1を返すx == y:2つのF2の値が等しいかを返すx + y:\(F_2\) の加法を返す-x:\(F_2\) の加法逆元を返すx - y:\(F_2\) の減法を返すx * y:\(F_2\) の乗法を返すx.inverse():乗法逆元を返すx / y:\(F_2\) の除法を返す
F2(0).inverse() と F2(1) / F2(0) は、ZeroDivisionError を送出してください。
例¶
>>> zero = F2(0)
>>> one = F2(1)
>>> one + one
F2(0)
>>> one - one
F2(0)
>>> one * one
F2(1)
>>> zero * one
F2(0)
>>> F2(2) == zero
True
>>> F2(3) == one
True
>>> one / one
F2(1)
補足¶
この問題では、有限体としての \(F_2\) を実装します。 ブール代数の和、積、補元は次の問題で扱います。