/
Partition.jl
52 lines (41 loc) · 1.13 KB
/
Partition.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
"""
Subcommunities(num)
AbstractPartition subtype with multiple subcommunities.
"""
struct Subcommunities <: Diversity.API.AbstractPartition{Nothing}
num::Int64
names::Vector{String}
function Subcommunities(num::Integer)
num > 0 || error("Too few subcommunities")
return new(num, map(x -> "$x", 1:num))
end
function Subcommunities(names::Vector{String})
num = length(names)
num > 0 || error("Too few subcommunities")
return new(num, names)
end
end
import Diversity.API._getsubcommunitynames
function _getsubcommunitynames(sc::Subcommunities)
return sc.names
end
import Diversity.API._countsubcommunities
function _countsubcommunities(sub::Subcommunities)
return sub.num
end
"""
Onecommunity
AbstractPartition subtype containing only one subcommunity.
"""
struct Onecommunity <: Diversity.API.AbstractPartition{Nothing}
namev::Vector{String}
function Onecommunity(name::String = "1")
return new([name])
end
end
function _getsubcommunitynames(oc::Onecommunity)
return oc.namev
end
function _countsubcommunities(::Onecommunity)
return 1
end