Files
secondo/Algebras/ChessB/queries

570 lines
19 KiB
Plaintext
Raw Normal View History

2026-01-23 17:03:45 +08:00
query field("e5") neighbors printstream count
open database g;
query readpgn('f:\sochi84.pgn') printstream count;
query readpgn('C:\secondo-sdk\secondo\Tests\Testspecs\chessalgebra\wjc.pgn') printstream count;
'wjc.pgn'
let wjc = readpgn('C:\secondo-sdk\secondo\Tests\Testspecs\chessalgebra\wjc.pgn') transformstream extend[No: seqnext()] consume
let twic = readpgn('F:\twic657.pgn') transformstream extend[No: seqnext()] consume;
let wjc = readpgn('/home/fp0708/Tests/Testspecs/chessalgebra/wjc.pgn') transformstream extend[No: seqnext()] consume;
query wjc feed filter[.No = 2] extract[elem] getposition[1] pieces < wjc feed filter[.No = 2] extract[elem] getposition[28] pieces;
query wjc feed filter[.No = 2] extract[elem] getkey["Event"];
query wjc feed filter[.No = 2] extract[elem] getkey["Event"];
"WJun"
query wjc feed filter[.No = 2] extract[elem] getkey["Round"];
"1"
query wjc feed filter[.No = 2] extract[elem] getkey["ECO"];
"B47"
query wjc feed filter[.No = 2] extract[elem] getkey["Result"];
"0-1"
query wjc feed filter[.No = 2] extract[elem] getkey["Date"];
"2006.10.03"
query wjc feed filter[.No = 2] extract[elem] getposition[5];
(6 ((9 5 7 11 13 7 0 9) (3 3 3 0 0 3 3 3) (0 0 0 0 0 5 0 0) (0 0 0 3 3 0 0 0) (0 0 2 0 0 0 0 0) (0 0 0 0 2 0 0 0) (2 2 0 2 0 2 2 2) (8 4 6 10 12 6 4 8)) 0 127)
query wjc feed filter[.No = 2] extract[elem] getposition[6];
(7 ((9 5 7 11 13 7 0 9) (3 3 3 0 0 3 3 3) (0 0 0 0 0 5 0 0) (0 0 0 2 3 0 0 0) (0 0 0 0 0 0 0 0) (0 0 0 0 2 0 0 0) (2 2 0 2 0 2 2 2) (8 4 6 10 12 6 4 8)) 1 15)
query wjc feed filter[.No = 2] extract[elem] getposition[7];
(8 ((9 5 7 11 13 7 0 9) (3 3 3 0 0 3 3 3) (0 0 0 0 0 0 0 0) (0 0 0 5 3 0 0 0) (0 0 0 0 0 0 0 0) (0 0 0 0 2 0 0 0) (2 2 0 2 0 2 2 2) (8 4 6 10 12 6 4 8)) 0 15)
query wjc feed filter[.No = 2] extract[elem] getposition[1] pieces < wjc feed filter[.No = 2] extract[elem] getposition[28] pieces;
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[5] pieces < wjc feed filter[.No = 2] extract[elem] getposition[6] pieces;
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[5] pieces < wjc feed filter[.No = 2] extract[elem] getposition[7] pieces;
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[6] pieces < wjc feed filter[.No = 2] extract[elem] getposition[7] pieces;
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[6];
(7 ((9 5 7 11 13 7 0 9) (3 3 3 0 0 3 3 3) (0 0 0 0 0 5 0 0) (0 0 0 2 3 0 0 0) (0 0 0 0 0 0 0 0) (0 0 0 0 2 0 0 0) (2 2 0 2 0 2 2 2) (8 4 6 10 12 6 4 8)) 1 15)
query wjc feed filter[.No = 2] extract[elem] getposition[7];
(8 ((9 5 7 11 13 7 0 9) (3 3 3 0 0 3 3 3) (0 0 0 0 0 0 0 0) (0 0 0 5 3 0 0 0) (0 0 0 0 0 0 0 0) (0 0 0 0 2 0 0 0) (2 2 0 2 0 2 2 2) (8 4 6 10 12 6 4 8)) 0 15)
query wjc feed filter[.No = 2] extract[elem] getposition[lastmove(wjc feed filter[.No = 2] extract[elem])];
(73 ((0 0 0 0 0 0 0 13) (0 0 0 0 0 0 8 3) (0 3 0 0 0 6 0 0) (3 0 0 0 0 0 0 0) (2 0 0 0 0 0 0 5) (0 0 0 0 0 0 0 2) (0 0 0 0 0 0 2 12) (0 0 0 0 9 0 0 0)) 1 0)
query wjc feed filter[.No = 5] extract[elem] getmove[7];
((0 "Knight" "pawn" "f" 2 "d" 3 FALSE 0 0 15))
query wjc feed filter[.No = 2] extract[elem] getmove[lastmove(wjc feed filter[.No = 2] extract[elem])];
((0 "bishop" "none" "a" 7 "f" 2 FALSE 0 0 0))
query wjc feed filter[.No = 2] extract[elem] positions transformstream head[3] consume;
elem:(0 (("Rook" "Knight" "Bishop" "Queen" "King" "Bishop" "Knight" "Rook") ("Pawn" "Pawn" "Pawn" "Pawn" "Pawn" "Pawn" "Pawn" "Pawn") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("pawn" "pawn" "pawn" "pawn" "pawn" "pawn" "pawn" "pawn") ("rook" "knight" "bishop" "queen" "king" "bishop" "knight" "rook")) 1 15)
elem:(1 (("Rook" "Knight" "Bishop" "Queen" "King" "Bishop" "Knight" "Rook") ("Pawn" "Pawn" "Pawn" "Pawn" "Pawn" "Pawn" "Pawn" "Pawn") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "pawn" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("pawn" "pawn" "none" "pawn" "pawn" "pawn" "pawn" "pawn") ("rook" "knight" "bishop" "queen" "king" "bishop" "knight" "rook")) 0 95)
elem:(2 (("Rook" "Knight" "Bishop" "Queen" "King" "Bishop" "none" "Rook") ("Pawn" "Pawn" "Pawn" "Pawn" "Pawn" "Pawn" "Pawn" "Pawn") ("none" "none" "none" "none" "none" "Knight" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "pawn" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("pawn" "pawn" "none" "pawn" "pawn" "pawn" "pawn" "pawn") ("rook" "knight" "bishop" "queen" "king" "bishop" "knight" "rook")) 1 15)
query wjc feed filter[.No = 2] extract[elem] history head[3] consume;
"No":1
"Pos":(1 (("Rook" "Knight" "Bishop" "Queen" "King" "Bishop" "Knight" "Rook") ("Pawn" "Pawn" "Pawn" "Pawn" "none" "Pawn" "Pawn" "Pawn") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "Pawn" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("pawn" "pawn" "pawn" "pawn" "pawn" "pawn" "pawn" "pawn") ("rook" "knight" "bishop" "queen" "king" "bishop" "knight" "rook")) 0 159)
"Move":((0 "Pawn" "none" "e" 1 "e" 3 FALSE 0 0 15))
"No":2
"Pos":(2 (("Rook" "Knight" "Bishop" "Queen" "King" "Bishop" "Knight" "Rook") ("Pawn" "Pawn" "Pawn" "Pawn" "none" "Pawn" "Pawn" "Pawn") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "Pawn" "none" "none" "none") ("none" "none" "pawn" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("pawn" "pawn" "none" "pawn" "pawn" "pawn" "pawn" "pawn") ("rook" "knight" "bishop" "queen" "king" "bishop" "knight" "rook")) 1 223)
"Move":((0 "pawn" "none" "c" 6 "c" 4 FALSE 0 0 31))
query field("e4");
"e4"
query field("e4") = field("e4");
TRUE
query field("e4") = field("g6");
FALSE
query field("e4") < field("g6");
TRUE
query field("e4") > field("g6");
FALSE
query field("a5") > field("d2");
TRUE
query field("a5") < field("d2");
FALSE
query iswhite( field("a5") );
FALSE
query iswhite( field("e2") );
TRUE
query file( field("e2") );
e
query file( field("a1") );
a
query row( field("a1") );
1
query row( field("f5") );
5
query north( field("f5") );
"f6"
query north( field("d1") );
"d2"
query north( field("h8") );
undef
query east( field("h8") );
undef
query east( field("d3") );
"e3"
query south( field("d3") );
"d2"
query south( field("d1") );
undef
query west( field("d1") );
"c1"
query west( field("a3") );
undef
query northwest( field("a3") );
undef
query northwest( field("h8") );
undef
query northwest( field("a1") );
undef
query northwest( field("h1") );
"g2"
query northeast( field("h1") );
undef
query northeast( field("f5") );
"g6"
query southwest( field("f5") );
"e4"
query southwest( field("d1") );
undef
query southeast( field("d2") );
"e1"
query southeast( field("h7") );
undef
query field("g6") is_neighbor field("h7");
TRUE
query field("g6") is_neighbor field("h4");
FALSE
query field("g6") left field("h4");
FALSE
query field("g6") left field("e6");
FALSE
query field("g6") left field("f6");
FALSE
query field("g6") left field("h6");
TRUE
query field("g6") right field("f6");
TRUE
query field("g6") above field("f5");
FALSE
query field("g6") above field("g7");
FALSE
query field("g6") above field("g5");
TRUE
query field("g6") below field("g7");
TRUE
query field("g6") neighbors printstream count;
8
query piece("Pawn")
"Pawn"
query piece("Pawn");
"Pawn"
query piece("none");
"none"
query piece("king");
"king"
query iswhite(piece("king"));
FALSE
query iswhite(piece("King"));
TRUE
query iswhite(piece("none"));
FALSE
query piece("king") = piece("Queen")
FALSE
query piece("king") = piece("king")
TRUE
query piece("king") is piece("king");
TRUE
query piece("king") is piece("King");
TRUE
query piece("king") is piece("pawn");
FALSE
query piece("king") samecolor piece("pawn");
TRUE
query piece("king") samecolor piece("Pawn");
FALSE
query piecevalue( piece("king") );
0
query piecevalue( piece("Queen") );
9
query wjc feed filter[.No = 5] extract[elem] getmove[7];
((0 "Knight" "none" "g" 1 "f" 3 FALSE 0 0 15))
query wjc feed filter[.No = 5] extract[elem] getmove[7] = wjc feed filter[.No = 5] extract[elem] getmove[7];
TRUE
query wjc feed filter[.No = 5] extract[elem] getmove[7] = wjc feed filter[.No = 5] extract[elem] getmove[6];
FALSE
query wjc feed filter[.No = 5] extract[elem] getmove[7];
((0 "Knight" "none" "g" 1 "f" 3 FALSE 0 0 15))
query startfield(wjc feed filter[.No = 5] extract[elem] getmove[7]);
"g1"
query endfield(wjc feed filter[.No = 5] extract[elem] getmove[7]);
"f3"
query agent(wjc feed filter[.No = 5] extract[elem] getmove[7]);
"Knight"
query captures(wjc feed filter[.No = 5] extract[elem] getmove[7]);
FALSE
query captured(wjc feed filter[.No = 5] extract[elem] getmove[7]);
"none"
query check(wjc feed filter[.No = 5] extract[elem] getmove[7]);
FALSE
query is_mate(wjc feed filter[.No = 5] extract[elem] getmove[7]);
FALSE
query is_stalemate(wjc feed filter[.No = 5] extract[elem] getmove[7]);
FALSE
query is_castling(wjc feed filter[.No = 5] extract[elem] getmove[7]);
FALSE
query is_enpassant(wjc feed filter[.No = 5] extract[elem] getmove[7]);
FALSE
query enpassant_field(wjc feed filter[.No = 5] extract[elem] getmove[7]);
undef
query wjc feed filter[.No = 2] extract[elem] getposition[6] pieces;
(8 7 2 2 2 2 2 2 1 1 1 1)
query wjc feed filter[.No = 2] extract[elem] getposition[6] pieces piececount[piece("Pawn")];
7
query wjc feed filter[.No = 2] extract[elem] getposition[36] pieces piececount[piece("Pawn")];
6
query wjc feed filter[.No = 2] extract[elem] getposition[36] pieces piececount[piece("knight")];
1
query wjc feed filter[.No = 2] extract[elem] getposition[36] pieces;
(5 6 1 1 2 2 2 2 1 1 1 1)
query wjc feed filter[.No = 2] extract[elem] getposition[36] pieces = wjc feed filter[.No = 2] extract[elem] getposition[36] pieces;
TRUE
query wjc feed filter[.No = 2] extract[elem] getposition[36] pieces = wjc feed filter[.No = 2] extract[elem] getposition[20] pieces;
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[6] pieces = wjc feed filter[.No = 2] extract[elem] getposition[7] pieces;
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[6] pieces;
(8 7 2 2 2 2 2 2 1 1 1 1)
query wjc feed filter[.No = 2] extract[elem] getposition[7] pieces;
(7 7 2 2 2 2 2 2 1 1 1 1)
query wjc feed filter[.No = 2] extract[elem] getposition[6] pieces ~ wjc feed filter[.No = 2] extract[elem] getposition[7] pieces;
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[6] pieces ~ wjc feed filter[.No = 2] extract[elem] getposition[6] pieces;
TRUE
query wjc feed filter[.No = 2] extract[elem] getposition[6] pieces < wjc feed filter[.No = 2] extract[elem] getposition[6] pieces;
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[6] pieces > wjc feed filter[.No = 2] extract[elem] getposition[6] pieces;
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[6] pieces < wjc feed filter[.No = 2] extract[elem] getposition[7] pieces;
TRUE
query wjc feed filter[.No = 2] extract[elem] getposition[6] pieces > wjc feed filter[.No = 2] extract[elem] getposition[7] pieces;
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[7] pieces > wjc feed filter[.No = 2] extract[elem] getposition[6] pieces;
TRUE
query wjc feed filter[.No = 2] extract[elem] getposition[7] pieces < wjc feed filter[.No = 2] extract[elem] getposition[6] pieces;
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[5] moveNo;
5
query wjc feed filter[.No = 2] extract[elem] getposition[34] moveNo;
34
query even(2)
TRUE
query odd(2)
FALSE
query odd(5)
TRUE
query odd(4)
FALSE
query odd(0)
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[34] includes [ wjc feed filter[.No = 2] extract[elem] getposition[34] ];
TRUE
query wjc feed filter[.No = 2] extract[elem] getposition[34] includes [ wjc feed filter[.No = 2] extract[elem] getposition[15] ];
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[34] piececount[piece("Pawn")];
6
query wjc feed filter[.No = 2] extract[elem] getposition[34] pieces;
(6 6 1 1 2 2 2 2 1 1 1 1)
query wjc feed filter[.No = 2] extract[elem] getposition[34] piececount[piece("bishop")];
2
query wjc feed filter[.No = 2] extract[elem] getposition[7] = wjc feed filter[.No = 2] extract[elem] getposition[6];
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[7] = wjc feed filter[.No = 2] extract[elem] getposition[7];
TRUE
query wjc feed filter[.No = 2] extract[elem] getposition[7] < wjc feed filter[.No = 2] extract[elem] getposition[7];
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[7] > wjc feed filter[.No = 2] extract[elem] getposition[7];
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[7] > wjc feed filter[.No = 2] extract[elem] getposition[6];
TRUE
query wjc feed filter[.No = 2] extract[elem] getposition[7] < wjc feed filter[.No = 2] extract[elem] getposition[6];
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[6] < wjc feed filter[.No = 2] extract[elem] getposition[7];
TRUE
query wjc feed filter[.No = 2] extract[elem] getposition[6] > wjc feed filter[.No = 2] extract[elem] getposition[7];
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[6] ~ wjc feed filter[.No = 2] extract[elem] getposition[7];
FALSE
query wjc feed filter[.No = 2] extract[elem] getposition[6] ~ wjc feed filter[.No = 2] extract[elem] getposition[6];
TRUE
query wjc feed filter[.No = 2] extract[elem] getposition[6] apply_ply[wjc feed filter[.No = 2] extract[elem] getmove[7] ];
(7 (("Rook" "Knight" "Bishop" "Queen" "King" "Bishop" "none" "Rook") ("Pawn" "Pawn" "Pawn" "none" "none" "Pawn" "Pawn" "Pawn") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none""none" "Knight" "Pawn" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "pawn" "none" "none" "none") ("pawn" "pawn" "none" "pawn" "none" "pawn" "pawn" "pawn") ("rook" "knight" "bishop" "queen" "king" "bishop" "knight" "rook")) 0 15)
query wjc feed filter[.No = 2] extract[elem] getposition[6];
(6 (("Rook" "Knight" "Bishop" "Queen" "King" "Bishop" "none" "Rook") ("Pawn" "Pawn" "Pawn" "none" "none" "Pawn" "Pawn" "Pawn") ("none" "none" "none" "none" "none" "Knight" "none" "none") ("none" "none" "none" "pawn" "Pawn" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "pawn" "none" "none" "none") ("pawn" "pawn" "none" "pawn" "none" "pawn" "pawn" "pawn") ("rook" "knight" "bishop" "queen" "king" "bishop" "knight" "rook")) 1 15)
query wjc feed filter[.No = 2] extract[elem] getmove[7];
((0 "Knight" "pawn" "f" 3 "d" 4 FALSE 0 0 15))
query wjc feed filter[.No = 2] extract[elem] getposition[6] posrange[field("a1"),field("c3")];
(0 (("Rook" "Knight" "Bishop" "none" "none" "none" "none" "none") ("Pawn" "Pawn" "Pawn" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none")) 1 0)
query wjc feed filter[.No = 2] extract[elem] getposition[6] pos_fields head[3] consume;
"Field":"a1"
"Piece":"Rook"
"Field":"b1"
"Piece":"Knight"
"Field":"c1"
"Piece":"Bishop"
let pos3 = [const position value (6 (("Rook" "Knight" "Bishop" "Queen" "King" "Bishop" "none" "Rook") ("Pawn" "Pawn" "Pawn" "none" "none" "Pawn" "Pawn" "Pawn") ("none" "none" "none" "none" "none" "Knight" "none" "none") ("none" "none" "none" "pawn" "Pawn" "none" "none" "none") ("none" "none" "none" "none" "none" "none" "none" "none") ("none" "none" "none" "none" "pawn" "none" "none" "none") ("pawn" "pawn" "none" "pawn" "none" "pawn" "pawn" "pawn") ("rook" "knight" "bishop" "queen" "king" "bishop" "knight" "rook")) 1 15)];
query pos3;
open database x;
let mat1 = [const material value(8 7 2 2 2 2 2 2 1 1 1 1)];
query mat1;
query wjc feed filter[.No = 2] extract[elem] getposition[2] attackcount[f3];
3
query wjc feed filter[.No = 2] extract[elem] getposition[2] attackcount[h3];
2
query wjc feed filter[.No = 2] extract[elem] getposition[2] attackcount[h5];
1
query wjc feed filter[.No = 2] extract[elem] getposition[2] attackcount[f5];
1
query wjc feed filter[.No = 2] extract[elem] getposition[2] attackcount[b5];
1
query wjc feed filter[.No = 2] extract[elem] getposition[3] attackcount[b5];
0
query wjc feed filter[.No = 2] extract[elem] getposition[3] attackcount[a6];
2
query wjc feed filter[.No = 2] extract[elem] getposition[3] attackcount[d4];
1
query wjc feed filter[.No = 2] extract[elem] getposition[3] attackcount[d6];
1
query wjc feed filter[.No = 2] extract[elem] getposition[3] attackcount[d5];
0
query wjc feed filter[.No = 2] extract[elem] getposition[3] attackcount[d5];
0
query wjc feed filter[.No = 2] extract[elem] getposition[3] protectcount[d5];
1
query wjc feed filter[.No = 2] extract[elem] getposition[3] protectcount[f3];
2
query wjc feed filter[.No = 2] extract[elem] getposition[3] protectcount[h6];
0
query wjc feed filter[.No = 2] extract[elem] getposition[3] protectcount[a6];
1
query wjc feed filter[.No = 2] extract[elem] getposition[6];
(
6
(
("Rook" "Knight" "Bishop" "Queen" "King" "Bishop" "none" "Rook")
("Pawn" "Pawn" "Pawn" "none" "none" "Pawn" "Pawn" "Pawn")
("none" "none" "none" "none" "none" "Knight" "none" "none")
("none" "none" "none" "pawn" "Pawn" "none" "none" "none")
("none" "none" "none" "none" "none" "none" "none" "none")
("none" "none" "none" "none" "pawn" "none" "none" "none")
("pawn" "pawn" "none" "pawn" "none" "pawn" "pawn" "pawn")
("rook" "knight" "bishop" "queen" "king" "bishop" "knight" "rook")
)
1
15
)
Secondo => query wjc feed filter[.No = 2] extract[elem] getposition[60];
Move number: 60, Turn: white, Enpassant file: None
White castling[ long: no, short: no ]
Black castling[ long: no, short: no ]
_________________
8 | r |
7 | p k |
6 | p p |
5 | |
4 | P p b |
3 | P N |
2 | P P P |
1 | R K |
-----------------
a b c d e f g h
Secondo => query wjc feed filter[.No = 2] extract[elem] getposition[60] king attackedby[Bishop];
FALSE
Secondo => query wjc feed filter[.No = 2] extract[elem] getposition[61];
Move number: 61, Turn: black, Enpassant file: None
White castling[ long: no, short: no ]
Black castling[ long: no, short: no ]
_________________
8 | r |
7 | p k |
6 | p p |
5 | |
4 | P N b |
3 | P |
2 | P P P |
1 | R K |
-----------------
a b c d e f g h
Secondo => query wjc feed filter[.No = 2] extract[elem] getposition[61] Pawn attackedby[rook];
TRUE
let rel2 = [const rel(tuple([Name: string, Field: field])) value(("Peter" a1)("Klaus" h3))];
query rel2 feed consume;
Name:Peter
Field:a1
Name:Klaus
Field:h3