Add some properties
This commit is contained in:
parent
6a967d4e76
commit
05d79f2d8f
|
@ -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 {
|
||||
|
|
|
@ -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 {}
|
||||
|
|
Loading…
Reference in New Issue