Shatranj er et bitboard-baseret, Open-Source, interaktiv skak programmering modul, som giver mulighed for manipulation af skak positioner og eksperimenter med søgealgoritmer og evaluering teknikker. Shatranj mål er at skrive en værktøjskasse til at hjælpe med at gennemføre Shannon type B skak programmer.
Som sådan bliver udførelse hastighed mindre vigtigt derefter kode klarhed og udtrykskraft af sproget gennemførelse. Have været skrevet i et fortolket sprog, dette modul giver skak programmør til at manipulere bitboards på en naturlig, interaktiv måde meget gerne signalbehandling toolkits tillader kommunikation ingeniører til at manipulere vektorer af lyde prøver i MATLAB.
Modulet currenly implementerer en simpel rekursiv minimax søgning med alphabeta beskæring, iterativ uddybning, bruger kort algebraisk notation, håndtag gentagelse check, og 50 træk reglen. Funktioner mangler er hvilende checks, overgangseffekter borde, negascout og MTD søgning.
Skak programmering toolkit er til rådighed i form af et Python modul kaldet shatranj.py. Du vil sandsynligvis også brug for åbningen bog såvel som nogle af de præ-bygget hash tabeller, der bruges i hele modulet (disse vil blive genberegnet, hvis modulet ikke kan finde data-fil).
Placer alle tre fil i samme mappe og blot køre python på python-modul ("python shatranj.py"). Så vidt krav, der er alt, hvad der behøves er en nyere version af den fortolket, højt niveau sprog kaldet Python (noget efter version 2.3 skulle virke fint). Hvis du gerne vil have en lille smule af en hastighed løft, Shatranj ser for modulet Psyco og vil bruge det, hvis det er installeret.
Indtil mere dokumentation bliver tilgængelig, her er en kort prøve session:
[Sam-Tannous-Computer: ~ / Shatranj] tin% python
>>> Fra Shatranj import *
... Læser idrifttagningsdata
... Samlede tid til at læse data 0,0774528980255
... Fundet åbning bog Shatranj-book.bin med 37.848 stillinger
>>> 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
>>> Maske = 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] & other_pieces) |
... (Diag_attacks_nw [from_square] [nw_pieces] & ~ all_pieces)) & maske
>>>
>>> flytter
1275777090846720L
>>>
>>> Tobase (bevæger sig, 2)
'100100010000101000000000000010100000000000000000000'
>>> display (flytter)
+ --- + --- + --- + --- + --- + --- + --- + --- +
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 spille et spil!
>>> Spille ()
Shatranj-version 1.10
g: skifte side m: vis lovlige træk
n: nye spil l: liste over spil rekord
d: lystavle b: vis bog bevæger
sd: Skift søgning dybde (2-16) standard = 5
q: Afslut
Shatranj: d
+ --- + --- + --- + --- + --- + --- + --- + --- +
8 | r | n | b | q | k | b | n | r |
+ --- + --- + --- + --- + --- + --- + --- + --- +
7 | p | p | p | p | p | p | p | p |
+ --- + --- + --- + --- + --- + --- + --- + --- +
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
Software detaljer:
Kommentarer ikke fundet