Shatranj är en bitboard baserad, öppen källkod, interaktiva schackprogrammering modul som möjliggör manipulering av schack positioner och experimenterande med sökalgoritmer och utvärderingsmetoder. Shatranj mål är att skriva en verktygslåda för att underlätta genomförandet av Shannon typ B schackprogram.
Som sådan blir exekveringshastighet mindre viktig då koden klarhet och uttryckskraft av språket genomförande. Med skrivits i ett tolkat språk, ger denna modul schack programmerare att manipulera bitboards på ett naturligt, interaktivt sätt likt signalbehandlingsverktygslådor tillåter kommunikations ingenjörer att manipulera vektorer ljud prover i MATLAB.
Modulen currenly implementerar en enkel rekursiv minimax sökning med Alpha beskärning, iterativ fördjupning, använder kort algebraiska notation, hanterar upprepning kontroll, och 50 flytta regeln. Funktioner som saknar är vilande kontroller, övergångs tabeller, negascout och MTD sökning.
Schack programmering toolkit är tillgänglig i form av en Python-modul som kallas shatranj.py. Du kommer också sannolikt att behöva öppna boken, liksom några av de färdiga hashtabeller som används hela modulen (dessa kommer att räknas om modulen inte kan hitta datafilen).
Placera alla tre filer i samma katalog och bara köra Python på python-modul ("python shatranj.py"). Såvitt krav, allt som behövs är en ny version av den tolkas högnivåspråk kallas Python (något efter version 2.3 bör fungera bra). Om du vill ha en liten bit av en hastighetsökning, ser shatranj för modulen Psyco och kommer att använda det om det är installerat.
Tills mer dokumentation blir tillgängliga, här är en kort provperiod:
[Sam-Tannous-dator: ~ / shatranj] tenn% python
>>> Från shatranj import *
... Läsning idrifttagningsdata
... Total tid att läsa data 0,0774528980255
... Fann öppning bok shatranj-book.bin med 37.848 positioner
>>> Position = position ("r1bqk2r / pppp1ppp / 2n5 / 5N2 / 2B1n3 / 8 / PPP1QPPP / R1B1K2R")
>>> All_pieces = position.piece_bb ["b_occupied"] | position.piece_bb ["w_occupied"]
>>> Other_pieces = position.piece_bb ["b_occupied"]
>>> From_square = c4
>>> WTM = 1
>>> Masken = position.pinned (from_square, WTM)
>>> Ne_pieces = diag_mask_ne [from_square] & all_pieces
>>> Nw_pieces = diag_mask_nw [from_square] & all_pieces
>>> moves = ((diag_attacks_ne [from_square] [ne_pieces] & other_pieces) |
... (Diag_attacks_ne [from_square] [ne_pieces] & ~ all_pieces) |
... (Diag_attacks_nw [from_square] [nw_pieces] och other_pieces) |
... (Diag_attacks_nw [from_square] [nw_pieces] & ~ all_pieces)) & mask
>>>
>>> flyttar
1275777090846720L
>>>
>>> Tobase (flyttar, 2)
'100100010000101000000000000010100000000000000000000'
>>> visa (flyttar)
+ --- + --- + --- + --- + --- + --- + --- + --- +
8 | |. | |. | |. | |. |
+ --- + --- + --- + --- + --- + --- + --- + --- +
7 |. | |. | |. | 1 |. | |
+ --- + --- + --- + --- + --- + --- + --- + --- +
6 | 1 |. | |. | 1 |. | |. |
+ --- + --- + --- + --- + --- + --- + --- + --- +
5 |. | 1 |. | 1 |. | |. | |
+ --- + --- + --- + --- + --- + --- + --- + --- +
4 | |. | |. | |. | |. |
+ --- + --- + --- + --- + --- + --- + --- + --- +
3 |. | 1 |. | 1 |. | |. | |
+ --- + --- + --- + --- + --- + --- + --- + --- +
2 | |. | |. | |. | |. |
+ --- + --- + --- + --- + --- + --- + --- + --- +
1 |. | |. | |. | |. | |
+ --- + --- + --- + --- + --- + --- + --- + --- +
a b c d e f g h
>>> position.show_moves (1)
['RG1 "," O-O "," f3 "," a3 "," Rb1 "," f4 "," BA6 ",
"BH6", "BD3", "Qg4", "QE3", "Ne7", "BE6", "Nxg7",
"Qxe4", "NE3", "B4", "NH4", "b3", "BE3", "BG5",
"G3", "KF1", "Rf1 ',' NH6", "a4", "NG3 ',' Qh5",
"Kd1", "H4", "h3", "C3", "Bxf7", "Nd6", "BB5",
"ND4", "Qf3", "G4", "QF1", "BB3", "QD1", "QD3",
"QD2", "BD5", "BD2", "BF4 ']
>>>
>>> # Nu spela ett spel!
>>> Spela ()
Shatranj version 1.10
g: byta sida m: visa regelrätta drag
n: nytt spel l: lista spelet rekord
d: display ombord b: visa boken flyttar
sd: Ändra sökningen djup (2-16) default = 5
q: avsluta
Shatranj: d
+ --- + --- + --- + --- + --- + --- + --- + --- +
8 | r | n | b | q | k | b | n | r |
+ --- + --- + --- + --- + --- + --- + --- + --- +
7 | p | s | p | s | p | s | p | s |
+ --- + --- + --- + --- + --- + --- + --- + --- +
6 | |. | |. | |. | |. |
+ --- + --- + --- + --- + --- + --- + --- + --- +
5 |. | |. | |. | |. | |
+ --- + --- + --- + --- + --- + --- + --- + --- +
4 | |. | |. | |. | |. |
+ --- + --- + --- + --- + --- + --- + --- + --- +
3 |. | |. | |. | |. | |
+ --- + --- + --- + --- + --- + --- + --- + --- +
2 | P | P | P | P | P | P | P | P |
+ --- + --- + --- + --- + --- + --- + --- + --- +
1 | R | N | B | Q | K | B | N | R |
+ --- + --- + --- + --- + --- + --- + --- + --- +
a b c d e f g h
Mjukvaruinformation:
Version: 1.17
Ladda upp dagen: 3 Jun 15
Licens: Gratis
Popularitet: 94
Kommentarer hittades inte