bishbosh-0.1.2.0: Plays chess.
Safe HaskellNone
LanguageHaskell2010

BishBosh.State.CastleableRooksByLogicalColour

Description

AUTHOR
Dr. Alistair Ward
DESCRIPTION
The abscissae of those Rooks, for the player of each logicalColour, which can still participate in castling.
Synopsis

Types

Type-synonyms

type TurnsByLogicalColour = TurnsByLogicalColour Turn Source #

Narrow the type, so the turn can be queried.

Data-types

data CastleableRooksByLogicalColour Source #

For the players of each logical colour, identifies the abscissae of those Rooks which can still participate in castling (when other constraints are removed).

Instances

Instances details
Eq CastleableRooksByLogicalColour Source # 
Instance details

Defined in BishBosh.State.CastleableRooksByLogicalColour

Ord CastleableRooksByLogicalColour Source # 
Instance details

Defined in BishBosh.State.CastleableRooksByLogicalColour

Read CastleableRooksByLogicalColour Source # 
Instance details

Defined in BishBosh.State.CastleableRooksByLogicalColour

Show CastleableRooksByLogicalColour Source # 
Instance details

Defined in BishBosh.State.CastleableRooksByLogicalColour

Default CastleableRooksByLogicalColour Source # 
Instance details

Defined in BishBosh.State.CastleableRooksByLogicalColour

NFData CastleableRooksByLogicalColour Source # 
Instance details

Defined in BishBosh.State.CastleableRooksByLogicalColour

ShowsEPD CastleableRooksByLogicalColour Source # 
Instance details

Defined in BishBosh.State.CastleableRooksByLogicalColour

ReadsEPD CastleableRooksByLogicalColour Source # 
Instance details

Defined in BishBosh.State.CastleableRooksByLogicalColour

ShowsFEN CastleableRooksByLogicalColour Source # 
Instance details

Defined in BishBosh.State.CastleableRooksByLogicalColour

ReadsFEN CastleableRooksByLogicalColour Source # 
Instance details

Defined in BishBosh.State.CastleableRooksByLogicalColour

ReflectableOnX CastleableRooksByLogicalColour Source # 
Instance details

Defined in BishBosh.State.CastleableRooksByLogicalColour

Hashable CastleableRooksByLogicalColour Source #

Get the list of random numbers required to represent the current castling potential.

Instance details

Defined in BishBosh.State.CastleableRooksByLogicalColour

Methods

listRandoms :: CastleableRooksByLogicalColour -> Zobrist positionHash -> [positionHash] Source #

Functions

locateForLogicalColour :: LogicalColour -> CastleableRooksByLogicalColour -> Maybe [X] Source #

Find the abscissae of all Rooks of the specified logical colour, which can still participate in castling.

Constructors

fromAssocs :: AbscissaeByLogicalColour -> CastleableRooksByLogicalColour Source #

Smart constructor.

fromBoard :: Board -> CastleableRooksByLogicalColour Source #

  • Smart constructor.
  • CAVEAT: doesn't know the move-history, so the wrong answer is possible.

listIncrementalRandoms Source #

Arguments

:: CastleableRooksByLogicalColour

The old value.

-> CastleableRooksByLogicalColour

The new value.

-> Zobrist random 
-> [random] 

Generate the additional random-numbers required to correct the hash resulting from a change to the castleable Rooks.

Mutators

unify :: Transformation Source #

Relinquish the ability to disambiguate between "have Castled" (& therefore can't subsequently), & "Have lost the option to castle".

takeTurn Source #

Arguments

:: LogicalColour

Defines the side who took the specified turn.

-> Turn 
-> Transformation 

Update with the latest turn.

Predicates

canCastleWith Source #

Arguments

:: LogicalColour 
-> Coordinates

Rook's coordinates.

-> CastleableRooksByLogicalColour 
-> Bool 

Predicate.

cantConverge :: CastleableRooksByLogicalColour -> CastleableRooksByLogicalColour -> Bool Source #

  • Determines whether two positions can't converge on each other.
  • N.B.: in this function, the two positions are considered to be peers; nothing is assumed regarding which must do the convergence, perhaps both.
  • From the initial board, one may converge onto any other position, but any of a set of irreversible changes may compromise this; the total number of pieces & specifically Pawns, of each logical colour, can't increase; Pawns can only advance; the difference in the ranks of all pieces of each logical colour, which can only be reduced through promotion of a Pawn; castling can't be undone. This function only assesses this final change.
  • CAVEAT: since the potential of one position to converge on another, depends on a wider set of criteria, this function can only be definitive regarding when convergence is impossible, rather than when is possible.
  • CAVEAT: this function depends on one side having lost the right to castle, when the other side already has; this is quite rare.