Xor 演算子とパズル

Excel マクロに触れて初めて知ったものの一つに「Xor演算子」がある。
f:id:Infoment:20200103221320p:plain

日本語では「排他的論理和」と言う。解説はこちら。
ja.wikipedia.org

docs.microsoft.com

二つの値を比較する演算子で、具体例は以下のとおり。

  1. 0 Xor 0 = False
  2. 0 Xor 1 = True
  3. 1 Xor 0 = True
  4. 1 Xor 1 = False

最初は「何に使うの?」と思ったが、身近な例として下記を紹介され納得。
まずは、階段の上と下にある電気のスイッチを想像して欲しい。

  1. 一階と二階のスイッチ「切」⇒ 消灯
  2. 一階のスイッチを「入」 ⇒ 点灯
  3. そのまま二階に上がってスイッチ「入」 ⇒ 消灯
  4. 一階に下りてスイッチ「切」 ⇒ 点灯

ワークシート関数にも準備されており、このように確認することができる。
f:id:Infoment:20200103222843p:plain

ところで以前、算数パズルを解いていて、ひょっとしてこの排他的論理和がカギなのでは?と偶然に閃いた問題があった。
f:id:Infoment:20200103223218p:plain

例えば

  • 白 ⇒ 0
  • 緑 ⇒ 1

とすると、先程の問題はこのように置き換わる。
f:id:Infoment:20200103223444p:plain

Xor関数で結果を求めると、このようになる。
f:id:Infoment:20200103223632p:plain

条件付き書式で白と緑を設定すれば、さらに分かり易い。
f:id:Infoment:20200103223813p:plain

勿論この演算子や関数を知らずとも、法則を見つけることは充分に可能だ。しかし私は、その法則の名前が「排他的論理和」であることを知っていたため、そのとき確信を持って正答を求めることが出来たわけで。

今日は、いつどこで何が、どんな形で役立つか分からない、というお話でした。

参考まで。