2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

論理演算を用いた計算  ド・モルガンの法則

Posted at

Paizaで「論理演算」の最終問題に挑戦! 
「ド・モルガンの法則」を知ったらスマートな式になる!


🎯問題

問題:A, B, C, D(各0か1)が与えられたとき、

02.png

の値を出力せよ!



💻コード例

①そのまま

const rl = require('readline').createInterface({input:process.stdin})

rl.on('line', (input) => {
    const [A,B,C,D] = input.split(' ').map(Number);
    
    console.log( !((!A & !B) | !C) ^ D);
    
    rl.close();
});

②ド・モルガン登場! 簡潔な式に!

const rl = require('readline').createInterface({input:process.stdin})

rl.on('line', (input) => {
    const [A,B,C,D] = input.split(' ').map(Number);
    
    console.log((A | B) & C ^ D);
    
    rl.close();
});

✨ 解説

Step変形:

!((!A & !B) | !C)
= !(!A & !B) & !!C
= (A | B) & C

なので全体は:

(A | B) & C ^ D

!!CC と同じなので省略OK。


📌 気づきメモ まとめ

  • !!x = x は地味だけど覚えとくと便利
  • ^(XOR)は分配法則を持たない。だから (A | B) & (C ^ D) みたいな変形は不可
  • 論理演算は「数学っぽい」けど、「可読性ファースト」で書くとバグ減る



僕の失敗談(´;ω;`)と解決法🐈🐻🦁




おまけ: 💡ド・モルガンの法則とは?

2つの基本形があります:

✅ 1. 否定がANDにかかっているとき:

!(A && B) ≡ (!A || !B)

「AとBの両方じゃない」は、「Aじゃない か Bじゃない」

✅ 2. 否定がORにかかっているとき:

!(A || B) ≡ (!A && !B)

「AまたはBじゃない」は、「AもBもじゃない」

例:

元の式:

!((!A & !B) | !C)

変形:

= !(!A & !B) & !!C
= (A | B) & C   ←スッキリ!

💡 なぜ便利?

  • 長い論理式を 簡単に&読みやすく 書き直せる
  • 条件分岐や論理演算問題を 論理的に変形できる
  • 回路設計(AND/ORゲート)の基本法則でもある

🧪 まとめ

ド・モルガンの法則を覚えると、「条件の否定」や「論理演算の整理」がめちゃくちゃスムーズになる!

覚え方はシンプルに:
!(NOT)が中に入ると、演算子(AND ⇔ OR)が逆になる!」

2
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?