LoginSignup
0
0

More than 1 year has passed since last update.

ド・モルガンの法則をphpにて

Posted at

ド・モルガンの法則?

ということで勉強させて頂いた。

結論

否定の否定は、肯定である。
というだけのこと。

デートで例える

「彼はごはんをごちそうしてくれなかったわけではなかった。」

「彼はご飯をごちそうしてくれた」

が同じ意味を持つ。
どっちがわかりやすいか一目瞭然ですね。

phpで解説

りんごを7個以上持っているというプログラムを作る

if(!($ringo < 7)){}
if($ringo <= 7){}

上記2つとも同じ動きをするが、否定形「!」が無い方がわかりやすいですよね。

まとめ

否定の否定はわかりづらいので、肯定を使っていきましょう。
教えて頂きありがとうございました。

以下参考

ある集合が別の集合と等しくなるという法則だ。
これには2つあって、一つは「AかつB」でないは、「Aでない」または「Bでない」と等しい。
もう一つは「AまたはB」でないは、「Aでない」かつ「Bでない」に等しい。
これをド・モルガンの法則と呼ぶ。
否定の否定の~ってなった時こそ、ドモルガンチャンス!!

はぁ?意味わからん。

ということで
https://webgroove.work/de-morgan-law-php/

を参考にした

ド・モルガンの法則 をJavaScriptで表すと下記のような感じ。

!(P || Q) == !P && !Q
!(P && Q) == !P || !Q
1
2
!(P || Q) == !P && !Q
!(P && Q) == !P || !Q
さて、これを使ってさっきのを加工すると。

if (!(word != null && word !="")) { //以下略
1
if (!(word != null && word !="")) { //以下略
否定で括って && を || にする。

if (!( !(word == null || word == "") )) { //以下略
1
if (!( !(word == null || word == "") )) { //以下略
で、否定の否定って肯定だから、! が二つで打ち消しあう。

if (word == null || word == "") { //以下略
1
if (word == null || word == "") { //以下略

https://nzigen.com/ysawa/de-morgan-s-laws/
論理式を書くときは、なるべく否定が少なくなるように常に心がける。
これが、鉄則になります。

最初のコード

for ($i = 0; ! ($i > $limit || $i >= count($list)); $i++) {
}
ド・モルガンの法則

for ($i = 0; ! ($i > $limit) && ! ($i >= count($list)); $i++) {
}
否定の部分を反転

for ($i = 0; $i <= $limit && $i < count($list); $i++) {
}

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0