4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Swift】16種類の論理結合子

Posted at

Bool値を二つとる論理演算である論理結合子は、
解の取り方が16種類(2の4乗通り)あるので、Swiftで表現してみました。

矛盾

Contradiction.png

func contradiction(p: Bool, q: Bool) -> Bool {
    return false
}

トートロジー

Tautology.png

func tautology(p: Bool, q: Bool) -> Bool {
    return true
}

命題P

PropositionP.png

func propositionP(p: Bool, q: Bool) -> Bool {
    return p
}

否定P

NegationOfP.png

func negationOfP(p: Bool, q: Bool) -> Bool {
    return !p
}

命題Q

PropositionQ.png

func propositionQ(p: Bool, q: Bool) -> Bool {
    return q
}

否定Q

NegationOfQ.png

func negationOfQ(p: Bool, q: Bool) -> Bool {
    return !q
}

論理積

Conjunction.png

func conjunction(p: Bool, q: Bool) -> Bool {
    return p && q
}

否定論理積

AlternativeDenial.png

func alternativeDenial(p: Bool, q: Bool) -> Bool {
    return !p || !q
}

論理和

Disjunction.png

func disjunction(p: Bool, q: Bool) -> Bool {
    return p || q
}

否定論理和

JointDenial.png

func jointDenial(p: Bool, q: Bool) -> Bool {
    return !p && !q
}

非含意

MaterialNonImplication.png

func materialNonInplication(p: Bool, q: Bool) -> Bool {
    return p && !q
}

否定含意(条件式)

MaterialImplication.png

func materialInplication(p: Bool, q: Bool) -> Bool {
    return !p || q
}

逆非含意

ConverseNonImplication.png

func converseNonImplication(p: Bool, q: Bool) -> Bool {
    return !p && q
}

逆含意

ConverseImplication.png

func converseImplication(p: Bool, q: Bool) -> Bool {
    return p || !q
}

排他的論理和

ExclusiveDisjunction.png

func exclusiveDisjunction(p: Bool, q: Bool) -> Bool {
    return (p && !q) || (!p && q)
}

同値(必要十分条件)

Biconditional.png

func biconditional(p: Bool, q: Bool) -> Bool {
    return (p && q) || (!p && !q)
}

XOR演算子

排他的論理和の演算子を定義してみました。
ビット演算には^の演算子があるので、^^を使いました。
また優先順位はビット演算に習い、||と同等の110としました。

infix operator ^^ { associativity left precedence 110 }
func ^^ (lhs: Bool, rhs: Bool) -> Bool {
    return exclusiveDisjunction(p: lhs, q: rhs) // または (p && !q) || (!p && q)
}

実行結果

true ^^ true   // false
true ^^ false  // true
false ^^ true  // true
false ^^ false // false

おわりに

実用性はあまりありません😊
gist→https://gist.github.com/KentaKudo/f68bbfadb4169ab1e46519ff399b30dd

参考

https://ja.wikipedia.org/wiki/論理演算#.E8.AB.96.E7.90.86.E7.B5.90.E5.90.88.E5.AD.90
http://qiita.com/KentaKudo/items/a1dd2eb0bf37302c1c81
https://en.wikipedia.org/wiki/Truth_function#Table_of_binary_truth_functions

4
5
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
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?