by 唐草 [2016/10/31]
ハロウィンでバカ騒ぎしている連中がニュースに取り上げられている。海外のマネをしてバカ騒ぎするのは別に構わない。ただ、それをニュースとして取り上げる意味が理解できない。どう考えても、ハロウィン商戦を加速させたい広告代理店などがマスコミに取り上げるように圧力をかけているという構図にしか見えない。
さて、ハロウィンといえば"Trick or Treat"というセリフが欠かせない。いたずらされるかもてなすかを選べと言う悪魔的な脅迫だ。
ただ、プログラムをかじっている人間からすると"OR"の解釈が腑に落ちない。
"OR"というのは、どちらか一方が成り立てばOKという意味。だから、裏を返すと両方成り立っていても問題無いということだ。つまり、お菓子をあげてもいたずらされる可能性も排除できないということ。理論和"OR"は、そういう意味なのだ。注意して使ってもらいたい。
では、どちらか一方のみのときだけ成立するようにするためにはどのように言えばいいのか。
その時は、排他理論和を使うべきである。つまり、XOR(またはEOR)。
プログラマ的には、"Trick XOR Treat"と言ってもらえないと、どちらか一方の選択であるという認識はできないのである。我が家を襲撃しようと思っている幽霊諸氏は、しっかりと論理代数を学んでから出直して欲しい。
論理代数的観点からすると"OR"は、"AND"で表現することができる。これは、ド・モルガンの法則という大切な法則。
NOT(A OR B) = (NOT A) AND (NOT B)
という式変換だ。
ド・モルガンの法則に従うと"Trick OR Treat"は、次のように変換できる。
NOT( NOT Trick AND NOT Treat)
もう一度言おう、我が家の玄関を叩きたかったらド・モルガンのコスプレをしなさい。