Computer Chess Club Archives


Search

Terms

Messages

Subject: Symbolic: First pattern instance generation

Author: Steven Edwards

Date: 15:42:04 03/27/04


I've now moved into the pattern instance territory.  There's only a few basic
boot strap pattern recogizers so far.

Consider BWTC.0031:

[D] 2qrr1n1/3b1kp1/2pBpn1p/1p2PP2/p2P4/1BP5/P3Q1PP/4RRK1 w - - 0 1

Here's the "Attack" instance generator:

(defun GenBSPInstancesAttack (MyPosVal)
    "Generate BSP instances: Attack"
    (let ((Instances nil))
        (dolist (FrManSq (ManSqListFromPV MyPosVal))
            (let*
                (
                    (FrMan (first FrManSq))
                    (FrSq (second FrManSq))
                    (FrColor (ColorFromMan FrMan))
                    (ToColor (OtherColor FrColor))
                    (ToBB
                        (BBAnd
                            (BBLocByColorPV MyPosVal ToColor)
                            (BBAtkFrSqPV MyPosVal FrSq)))
                    (ToManSqList (ManSqListFromPVBB MyPosVal ToBB))
                    (SweepFlag (Sweeper? FrMan))
                )
                (dolist (ToManSq ToManSqList)
                    (push
                        (list
                            'Attack
                            FrManSq
                            ToManSq
                            SweepFlag
                            (Direction FrSq (second ToManSq)))
                        Instances))))
        Instances))

Output for BWTC.0031:

(Attack (BlackPawn e6) (WhitePawn f5) nil SE)
(Attack (WhitePawn f5) (BlackPawn e6) nil NW)
(Attack (WhitePawn e5) (BlackKnight f6) nil NE)
(Attack (BlackPawn a4) (WhiteBishop b3) nil SE)
(Attack (WhiteBishop b3) (BlackPawn e6) t NE)
(Attack (WhiteBishop b3) (BlackPawn a4) t NW)
(Attack (WhiteQueen e2) (BlackPawn b5) t NW)

And here's the closely related "Defend" generator:

(defun GenBSPInstancesDefend (MyPosVal)
    "Generate BSP instances: Defend"
    (let ((Instances nil))
        (dolist (FrManSq (ManSqListFromPV MyPosVal))
            (let*
                (
                    (FrMan (first FrManSq))
                    (FrSq (second FrManSq))
                    (FrColor (ColorFromMan FrMan))
                    (ToBB
                        (BBAnd
                            (BBLocByColorPV MyPosVal FrColor)
                            (BBAtkFrSqPV MyPosVal FrSq)))
                    (ToManSqList (ManSqListFromPVBB MyPosVal ToBB))
                    (SweepFlag (Sweeper? FrMan))
                )
                (dolist (ToManSq ToManSqList)
                    (push
                        (list
                            'Defend
                            FrManSq
                            ToManSq
                            SweepFlag
                            (Direction FrSq (second ToManSq)))
                        Instances))))
        Instances))


Output for BWTC.0031:

(Defend (BlackKnight g8) (BlackPawn h6) nil SSE)
(Defend (BlackKnight g8) (BlackKnight f6) nil SSW)
(Defend (BlackRook e8) (BlackKnight g8) t E)
(Defend (BlackRook e8) (BlackRook d8) t W)
(Defend (BlackRook e8) (BlackPawn e6) t S)
(Defend (BlackRook d8) (BlackRook e8) t E)
(Defend (BlackRook d8) (BlackQueen c8) t W)
(Defend (BlackRook d8) (BlackBishop d7) t S)
(Defend (BlackQueen c8) (BlackRook d8) t E)
(Defend (BlackQueen c8) (BlackBishop d7) t SE)
(Defend (BlackQueen c8) (BlackPawn c6) t S)
(Defend (BlackPawn g7) (BlackPawn h6) nil SE)
(Defend (BlackPawn g7) (BlackKnight f6) nil SW)
(Defend (BlackKing f7) (BlackKnight g8) nil NE)
(Defend (BlackKing f7) (BlackRook e8) nil NW)
(Defend (BlackKing f7) (BlackPawn g7) nil E)
(Defend (BlackKing f7) (BlackKnight f6) nil S)
(Defend (BlackKing f7) (BlackPawn e6) nil SW)
(Defend (BlackBishop d7) (BlackRook e8) t NE)
(Defend (BlackBishop d7) (BlackQueen c8) t NW)
(Defend (BlackBishop d7) (BlackPawn e6) t SE)
(Defend (BlackBishop d7) (BlackPawn c6) t SW)
(Defend (BlackKnight f6) (BlackKnight g8) nil NNE)
(Defend (BlackKnight f6) (BlackRook e8) nil NNW)
(Defend (BlackKnight f6) (BlackBishop d7) nil WNW)
(Defend (WhiteBishop d6) (WhitePawn e5) t SE)
(Defend (BlackPawn c6) (BlackPawn b5) nil SW)
(Defend (WhitePawn e5) (WhiteBishop d6) nil NW)
(Defend (BlackPawn b5) (BlackPawn a4) nil SW)
(Defend (WhitePawn d4) (WhitePawn e5) nil NE)
(Defend (WhitePawn c3) (WhitePawn d4) nil NE)
(Defend (WhiteBishop b3) (WhitePawn a2) t SW)
(Defend (WhiteQueen e2) (WhitePawn e5) t N)
(Defend (WhiteQueen e2) (WhitePawn g2) t E)
(Defend (WhiteQueen e2) (WhitePawn a2) t W)
(Defend (WhiteQueen e2) (WhiteRook f1) t SE)
(Defend (WhiteQueen e2) (WhiteRook e1) t S)
(Defend (WhitePawn a2) (WhiteBishop b3) nil NE)
(Defend (WhiteKing g1) (WhitePawn h2) nil NE)
(Defend (WhiteKing g1) (WhitePawn g2) nil N)
(Defend (WhiteKing g1) (WhiteRook f1) nil W)
(Defend (WhiteRook f1) (WhitePawn f5) t N)
(Defend (WhiteRook f1) (WhiteKing g1) t E)
(Defend (WhiteRook f1) (WhiteRook e1) t W)
(Defend (WhiteRook e1) (WhiteQueen e2) t N)
(Defend (WhiteRook e1) (WhiteRook f1) t E)



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.