Packages
fixpoint
0.8.29
0.22.1
0.21.5
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.6
0.20.5
0.20.4
0.20.3
0.20.2
0.20.1
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.18.2
0.18.1
0.17.6
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.16.5
0.16.4
0.16.3
0.16.2
0.16.1
0.16.0
0.15.6
0.15.5
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.9
0.14.8
0.14.7
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.13.5
0.13.4
0.13.2
0.13.1
0.12.9
0.12.8
0.12.7
0.12.6
0.12.5
0.12.4
0.12.2
0.12.1
0.11.8
0.11.7
0.11.6
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.10.7
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.9.12
0.9.11
0.9.10
0.9.9
0.9.8
0.9.7
0.9.6
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.52
0.8.51
0.8.50
0.8.49
0.8.48
0.8.46
0.8.44
0.8.43
0.8.42
0.8.41
0.8.40
0.8.39
0.8.38
0.8.37
0.8.36
0.8.35
0.8.34
0.8.33
0.8.32
0.8.31
0.8.30
0.8.29
0.8.28
0.8.27
0.8.26
0.8.25
0.8.24
0.8.23
0.8.22
0.8.21
0.8.20
0.8.19
0.8.18
0.8.17
0.8.16
0.8.15
0.8.14
0.8.13
0.8.12
0.8.11
0.8.10
0.8.9
0.8.8
0.8.7
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.10
0.7.9
0.7.8
0.7.7
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.12
0.5.11
0.5.10
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.1.3
0.1.2
0.1.1
0.1.0
Constraint Programming Solver
Current section
Files
Jump to
Current section
Files
lib/solver/domain/default_domain.ex
defmodule CPSolver.DefaultDomain do
alias CPSolver.BitVectorDomain, as: Domain
defdelegate new(values), to: Domain
def map(fixed, mapper) when is_integer(fixed) do
[mapper.(fixed)]
end
def map(domain, mapper) do
Domain.map(domain, mapper)
end
def remove(fixed, val) when is_integer(fixed) do
(fixed == val && fail()) || :no_change
end
def remove(domain, val) do
Domain.remove(domain, val)
end
def removeAbove(fixed, val) when is_integer(fixed) do
(val < fixed && fail()) || :no_change
end
def removeAbove(domain, val) do
Domain.removeAbove(domain, val)
end
def removeBelow(fixed, val) when is_integer(fixed) do
(val > fixed && fail()) || :no_change
end
def removeBelow(domain, val) do
Domain.removeBelow(domain, val)
end
def to_list(arg) when is_integer(arg) do
[arg]
end
def to_list(arg) when is_list(arg) do
arg
end
def to_list(domain) do
Domain.to_list(domain)
end
def copy(fixed) when is_integer(fixed) do
fixed
end
def copy(domain) do
(Domain.fixed?(domain) && Domain.min(domain)) || Domain.copy(domain)
end
def size(fixed) when is_integer(fixed) do
1
end
def size(domain) do
Domain.size(domain)
end
def fixed?(fixed) when is_integer(fixed) do
true
end
def fixed?(domain) do
Domain.fixed?(domain)
end
def contains?(fixed, value) when is_integer(fixed) do
fixed == value
end
def contains?(domain, value) do
Domain.contains?(domain, value)
end
def min(fixed) when is_integer(fixed) do
fixed
end
def min(domain) do
Domain.min(domain)
end
def max(fixed) when is_integer(fixed) do
fixed
end
def max(domain) do
Domain.max(domain)
end
def fix(fixed, value) when is_integer(fixed) do
(fixed == value && :no_change) || fail()
end
def fix(domain, value) do
Domain.fix(domain, value)
end
defp fail() do
throw(:fail)
end
end