15 min/d

ぼうずやのにっき

XORを作る

XORを作る。

無意味なことをしたいと思うか。きっと多くの人は思わない。でも、誰かにとっての無意味なことが他の誰かにとっても無意味とは限らない。そういう価値観の違いというか、多様性というのは必要であると思うし、受け入れられる人だと思われたいと願う。

今日は無性にXORが作りたくなった。ANDとORとNOTを使えばXORが作れたはずだ。学生の頃に覚えたはずだ。確か出力を何かの入力に使っていたような。検索すればすぐに答えは見つけられるけど、検索せずに作ることにした。

まずは紙に書いた。全パターンがたったの4種類なのだけれど、順番に回路をトレースするのがバカらしくなって、嫌になった。

そして思いつく、そうだRubyでやろう。

どうせならとテストコードを先に書く。テストファースト。Guardを入れて、MiniTestを動かしながら、すこしずつ変える。できた。

最終的にnand(not+and)だけでできることが分かった。記憶は正しかったけれど、これ以外の方法もあったような気がする。まあ飽きてしまったので、bouzuya/xorとして公開して、やめることにする。

9 min.