Package org.jacop.set.core
Class SetDomainValueEnumeration
java.lang.Object
org.jacop.core.ValueEnumeration
org.jacop.set.core.SetDomainValueEnumeration
Defines a methods for enumerating values contained in the SetDomain.
- Version:
- 4.10
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
This function is called to inform enumeration of the change of the domain it enumerates over.private int
getMaxPascal
(int level) Returns the maximum place number for an element in this levelprivate IntDomain
getPascal
(int level, int place) The number of elements at each level is described by Pascal's-triangle.private int
getPascalNbr
(int level, int place) Returns the value of a specific element in Pascal's triangle.boolean
It checks if the value enumeration has more elements.int
The function nextElement has to return a Set.Returns the next element in the SetDomain.
-
Field Details
-
Constructor Details
-
SetDomainValueEnumeration
- Parameters:
dom
- It specifies the SetDomain for which enumeration of sets is performed.
-
-
Method Details
-
hasMoreElements
public boolean hasMoreElements()Description copied from class:ValueEnumeration
It checks if the value enumeration has more elements.- Specified by:
hasMoreElements
in classValueEnumeration
- Returns:
- true if more elements can be enumerated, false otherwise.
-
nextElement
public int nextElement()The function nextElement has to return a Set. Use nextSetElement instead.- Specified by:
nextElement
in classValueEnumeration
- Returns:
- the next element.
-
nextSetElement
Returns the next element in the SetDomain.- Returns:
- the next element in the SetDomain.
-
domainHasChanged
public void domainHasChanged()Description copied from class:ValueEnumeration
This function is called to inform enumeration of the change of the domain it enumerates over. The enumeration will update its private data structure and if possible adapt next element to the closest (on the right) which is still in the domain.- Specified by:
domainHasChanged
in classValueEnumeration
-
getPascal
The number of elements at each level is described by Pascal's-triangle. Example: domain = {{}..{1..3} glb.size = 0 lub.size = 3 the level(pascalLevel) in Pascal's-triangle: level = 3-0 (lub.size-glb.size) This level(pascalLevel) in Pascal's-triangle is 1 3 3 1 And we get the elements: level 0 : {} level 1 : {1}, {2}, {3} level 2 : {1,2}, {1,3}, {2,3} level 3 : {1,2,3} So getPascal(2,2) returns the Set {1,3}occLevel = The level in Pascal's triangle that describes how many times the first value occurs.
occPos = the position in Pascal's triangle on row occLevel that describes how many times the first value occurs
occ = the number of times the first value occurs.
- Parameters:
level
- = Number of element from the ground set(lub\glb) that should be addedplace
- = The position in this level for the wanted element- Returns:
- domain that specifies Pascal triangle element at positions (level, place)
-
getMaxPascal
private int getMaxPascal(int level) Returns the maximum place number for an element in this level- Parameters:
level
-- Returns:
- the maximum place number for an element in this level
-
getPascalNbr
private int getPascalNbr(int level, int place) Returns the value of a specific element in Pascal's triangle.- Parameters:
level
- The level in Pascal's triangle.place
- The position in this level of Pascal's triangle.- Returns:
- The element on this position in Pascal's triangle.
-