コンテンツにスキップ

019: 1+1=?

ヒント / 解答

難易度: ☆☆

問題

二元体 \(F_2\) を表すクラス F2 を書いてください。 F2 の要素は 01 の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\) を実装します。 ブール代数の和、積、補元は次の問題で扱います。