Safe Haskell | None |
---|---|
Language | Haskell2010 |
AUTHOR
- Dr. Alistair Ward
DESCRIPTION
- Records the number of times each position has been encountered since the last unrepeatable move.
Synopsis
- leastCyclicPlies :: NPlies
- data InstancesByPosition position
- countConsecutiveRepeatablePlies :: InstancesByPosition position -> NPlies
- countPositionRepetitions :: InstancesByPosition position -> NPositions
- getNDistinctPositions :: InstancesByPosition position -> NPositions
- findMaximumInstances :: InstancesByPosition position -> NPositions
- mkInstancesByPosition :: (Foldable foldable, Ord position) => (a -> position) -> foldable a -> InstancesByPosition position
- mkSingleton :: position -> InstancesByPosition position
- insertPosition :: Ord position => Bool -> position -> Transformation position
- deletePosition :: Ord position => position -> Transformation position
- anyInstancesByPosition :: (NPositions -> Bool) -> InstancesByPosition position -> Bool
Types
Type-synonyms
Constants
leastCyclicPlies :: NPlies Source #
The smallest number of repeatable plies (applied by alternating players) required to form a cycle.
Data-types
data InstancesByPosition position Source #
Wrap the type, so that class-instances can be hung from it.
Instances
Eq position => Eq (InstancesByPosition position) Source # | |
Defined in BishBosh.State.InstancesByPosition (==) :: InstancesByPosition position -> InstancesByPosition position -> Bool # (/=) :: InstancesByPosition position -> InstancesByPosition position -> Bool # | |
NFData position => NFData (InstancesByPosition position) Source # | |
Defined in BishBosh.State.InstancesByPosition rnf :: InstancesByPosition position -> () # | |
(Ord position, ReflectableOnX position) => ReflectableOnX (InstancesByPosition position) Source # | |
Defined in BishBosh.State.InstancesByPosition reflectOnX :: InstancesByPosition position -> InstancesByPosition position Source # |
Functions
countConsecutiveRepeatablePlies :: InstancesByPosition position -> NPlies Source #
- Count the total number of consecutive repeatable plies amongst recent moves.
- This is equivalent to the number of entries in the map, since adding a non-repeatable move triggers a purge.
countPositionRepetitions :: InstancesByPosition position -> NPositions Source #
Count the total number of repetitions of positions.
getNDistinctPositions :: InstancesByPosition position -> NPositions Source #
The number of distinct positions.
findMaximumInstances :: InstancesByPosition position -> NPositions Source #
- Find the maximum number of times any one position has already been visited.
- CAVEAT: only those positions that can still be reached are considered.
Constructors
mkInstancesByPosition Source #
:: (Foldable foldable, Ord position) | |
=> (a -> position) | Position-constructor. |
-> foldable a | Data from which to construct positions. |
-> InstancesByPosition position |
Construct from repeatable data.
mkSingleton :: position -> InstancesByPosition position Source #
Constructor.
Mutators
:: Ord position | |
=> Bool | Whether the turn which led to the specified position, was repeatable. |
-> position | |
-> Transformation position |
Insert a position into the collection.
deletePosition :: Ord position => position -> Transformation position Source #
Remove a position from the collection, as required to implement rollback.
Predicates
anyInstancesByPosition :: (NPositions -> Bool) -> InstancesByPosition position -> Bool Source #
Predicate: apply the specified predicate to the map.