Add some properties

This commit is contained in:
Alexander Ignatov 2021-12-23 01:08:39 +02:00
parent 6a967d4e76
commit 05d79f2d8f
2 changed files with 54 additions and 0 deletions

View File

@ -104,6 +104,32 @@ public extension DiscreteMutableFuzzySet {
}
}
// MARK: - Properties
public extension DiscreteMutableFuzzySet {
var support: Set<Universe> {
let elements = grades
.filter { $0.value > 0 }
.map { $0.key }
return Set(elements)
}
var core: Set<Universe> {
let elements = grades
.filter { $0.value == 1 }
.map { $0.key }
return Set(elements)
}
var height: Grade {
grades.values.max() ?? 0
}
var isNormal: Bool {
grades.values.contains { $0 == 1 }
}
}
// MARK: - From crisp set
public extension DiscreteMutableFuzzySet {
static func fromCrispSet(_ set: Set<Universe>) -> Self {

View File

@ -89,6 +89,34 @@ extension IterableFuzzySet: Sequence {
}
}
// MARK: - Properties
public extension IterableFuzzySet {
var height: Grade {
sequence.map(grade(forElement:)).max() ?? 0
}
var isNormal: Bool {
sequence.map(grade(forElement:)).contains { $0 == 1 }
}
}
public extension IterableFuzzySet where Universe: Hashable {
var support: Set<Universe> {
let elements = self
.filter { $0.grade > 0 }
.map { $0.element }
return Set(elements)
}
var core: Set<Universe> {
let elements = self
.filter { $0.grade == 1 }
.map { $0.element }
return Set(elements)
}
}
// MARK: - Utility
extension IterableFuzzySet.Element: Equatable where Universe: Equatable {}