Difference between revisions of "Spartan"
GerdIsenberg (talk | contribs) |
GerdIsenberg (talk | contribs) |
||
Line 7: | Line 7: | ||
written in [[C]] and distributed under the [[Free Software Foundation#GPL|GNU General Public License]], first released in April 2016 | written in [[C]] and distributed under the [[Free Software Foundation#GPL|GNU General Public License]], first released in April 2016 | ||
as successor of [[JFresh]] <ref>[http://www.open-chess.org/viewtopic.php?f=7&t=2973 New UCI engine: Spartan] by [[Christian Daley|CDaley11]], [[Computer Chess Forums|OpenChess Forum]], April 23, 2016</ref>. | as successor of [[JFresh]] <ref>[http://www.open-chess.org/viewtopic.php?f=7&t=2973 New UCI engine: Spartan] by [[Christian Daley|CDaley11]], [[Computer Chess Forums|OpenChess Forum]], April 23, 2016</ref>. | ||
− | + | As a pure [[Bitboards|bitboard]] engine, Spartan applies [[Matt Taylor|Matt Taylor's]] [[BitScan#MattTaylorsFoldingtrick|folding trick]] to [[BitScan|scan bits]] <ref>[https://github.com/christiandaley/Spartan/blob/master/src/bitscan.h Spartan/bitscan.h at master · christiandaley/Spartan · GitHub]</ref>, and [[Population Count#BrianKernighansway|Brian Kernighan's way]] to [[Population Count|count bits]] <ref>[https://github.com/christiandaley/Spartan/blob/master/src/bitscan.c Spartan/bitscan.c at master · christiandaley/Spartan · GitHub]</ref>. | |
+ | Spartan's way using the [https://en.wikipedia.org/wiki/Euclidean_distance euclidean distance] with [[Double|double]] arithmetic due to [https://en.wikipedia.org/wiki/C_standard_library C standard library] [https://en.wikipedia.org/wiki/Square_root square root] (double sqrt(double)) <ref>[https://github.com/christiandaley/Spartan/blob/master/src/eval.h partan/eval.h at master · christiandaley/Spartan · GitHub], #define DIST(sq1, sq2) ((int)sqrt(((...</ref> | ||
+ | <ref>[https://www.programiz.com/c-programming/library-function/math.h/sqrt C sqrt() - C Standard Library]</ref>, as used in calculating [[King Pawn Tropism|king passer tropism]], | ||
+ | is expensive and rarely seen in chess programs. Recommended is [[Distance#Lookup|looking up]] the [[Distance|Chebyshev distance]] for that purpose. | ||
+ | |||
=Features= | =Features= | ||
<ref>[https://github.com/christiandaley/Spartan/blob/master/Readme.md Spartan/Readme.md at master · christiandaley/Spartan · GitHub]</ref> | <ref>[https://github.com/christiandaley/Spartan/blob/master/Readme.md Spartan/Readme.md at master · christiandaley/Spartan · GitHub]</ref> | ||
==[[Board Representation]]== | ==[[Board Representation]]== | ||
− | * [[ | + | * [[Bitboard Board-Definition]] |
* [[Magic Bitboards]] | * [[Magic Bitboards]] | ||
==[[Search]]== | ==[[Search]]== | ||
Line 33: | Line 37: | ||
** [[Killer Heuristic]] | ** [[Killer Heuristic]] | ||
** [[History Heuristic]] | ** [[History Heuristic]] | ||
+ | ==[[Evaluation]]== | ||
+ | * [[Material]] | ||
+ | * [[Tapered Eval]] | ||
+ | * [[Piece-Square Tables]] | ||
+ | * [[Mobility]] | ||
+ | * [[Rook on Open File|Rooks on (Semi) Open Files]] | ||
+ | * [[Connectivity]] | ||
+ | * [[Pawn Structure]] | ||
+ | ** [[Pawn Hash Table]] | ||
+ | ** [[Backward Pawn]] | ||
+ | ** [[Doubled Pawn]] | ||
+ | ** [[Isolated Pawn]] | ||
+ | * [[Passed Pawn]] | ||
+ | ** [[Unstoppable Passer]] | ||
+ | ** [[King Pawn Tropism|King Passer Tropism]] | ||
+ | * [[King Safety]] | ||
+ | ** [[King Safety#Attacking|Attacking King Zone]] | ||
+ | ** [[King Safety#PawnShield|Pawn Shelter]] | ||
+ | ** [[King Safety#PawnStorm|Pawn Storm]] | ||
==Misc== | ==Misc== | ||
* [[Bratko-Kopec Test]] | * [[Bratko-Kopec Test]] |
Revision as of 22:01, 10 April 2020
Spartan,
an UCI compliant open source chess engine by Christian Daley,
written in C and distributed under the GNU General Public License, first released in April 2016
as successor of JFresh [2].
As a pure bitboard engine, Spartan applies Matt Taylor's folding trick to scan bits [3], and Brian Kernighan's way to count bits [4].
Spartan's way using the euclidean distance with double arithmetic due to C standard library square root (double sqrt(double)) [5]
[6], as used in calculating king passer tropism,
is expensive and rarely seen in chess programs. Recommended is looking up the Chebyshev distance for that purpose.
Contents
Features
Board Representation
Search
- Iterative Deepening
- Aspiration Windows
- Alpha-Beta
- Principal Variation Search
- Transposition Table
- Selectivity
- Move Ordering
Evaluation
- Material
- Tapered Eval
- Piece-Square Tables
- Mobility
- Rooks on (Semi) Open Files
- Connectivity
- Pawn Structure
- Passed Pawn
- King Safety
Misc
See also
Forum Posts
- New UCI engine: Spartan by CDaley11, OpenChess Forum, April 23, 2016
- New UCI engine Spartan released (a while ago) by Günther Simon, CCC, May 11, 2016
External Links
Chess Engine
Misc
- spartan - Wiktionary
- Spartan - Wiktionary
- Spartan Chess - Chess Variant Page
- Spartan Race from Wikipedia
- Sparta from Wikipedia
- Sparta (disambiguation) from Wikipedia
References
- ↑ SPARTAN-101 (Shuttle Pointed Autonomous Research Tool for Astronomy) carrier module of STS-51-G, the 18th flight of NASA's Space Shuttle program, and the fifth flight of Space Shuttle Discovery, June 17-24, 1985, NASA image, SPARTAN – Wikipedia.de (German), Wikimedia Commons
- ↑ New UCI engine: Spartan by CDaley11, OpenChess Forum, April 23, 2016
- ↑ Spartan/bitscan.h at master · christiandaley/Spartan · GitHub
- ↑ Spartan/bitscan.c at master · christiandaley/Spartan · GitHub
- ↑ partan/eval.h at master · christiandaley/Spartan · GitHub, #define DIST(sq1, sq2) ((int)sqrt(((...
- ↑ C sqrt() - C Standard Library
- ↑ Spartan/Readme.md at master · christiandaley/Spartan · GitHub
- ↑ Spartan Chess - Chess Variant Page