Laissez gnubg calculer le meilleur coup!
Telle est la position de la réunion régulière d'Akasaka un jour. J'étais 4-0 / 5p Crawford en rouge. Comment déplacez-vous le bleu 54?
board
Tout d'abord, spécifiez l'emplacement du vérificateur dans la liste des tuples. Il semble que vous deviez entrer le nombre de contrôleurs à chaque point dans l'ordre. Le 25e élément semble être le nombre de contrôleurs sur la barre.
In [1]: board = ((0, 0, 0, 2, 2, 3, 2, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0),
...: (0, 0, 0, 0, 0, 5, 2, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 0))
cubeinfo
Spécifiez la durée du match, le score et s'il s'agit de Crawford ou non. Je ne connais pas gammonprice
, donc je vais le mettre à 0 pour le moment.
In [2]: cubeinfo = {'beavers': 0,
...: 'bgv': 0,
...: 'crawford': 1,
...: 'cube': 1,
...: 'cubeowner': -1,
...: 'gammonprice': ((0.0, 0.0), (0.0, 0.0)),
...: 'jacoby': 0,
...: 'matchto': 5,
...: 'move': 0,
...: 'score': (0, 4)}
Il existe une méthode appelée «calcgammonprice», vous pouvez donc calculer le prix du gammon.
In [3]: cubeinfo = gnubg.calcgammonprice(cubeinfo)
In [4]: cubeinfo
Out[4]:
{'beavers': 0,
'bgv': 0,
'crawford': 1,
'cube': 1,
'cubeowner': -1,
'gammonprice': ((0.06355762481689453, 1.1390838623046875), (0.0, 0.0)),
'jacoby': 0,
'matchto': 5,
'move': 0,
'score': (0, 4)}
posinfo
Spécifiez le rouleau et le tour.
In [5]: posinfo = {'dice': (5, 4), 'doubled': 0, 'gamestate': 1, 'resigned': 0, 'turn': 0}
gnubgid
Je vais l'utiliser plus tard, donc je vais créer quelque chose qui s'appelle gnubgid
.
In [6]: gnubgid = gnubg.gnubgid(board, cubeinfo, posinfo)
In [7]: gnubgid
Out[7]: u'2G4cAwTg2wkAKw:sIGyAAAAIAAE'
Si vous spécifiez gnubgid
avec la commande set gnubgid
, ce sera la phase que vous avez définie jusqu'à présent.
In [8]: gnubg.command('set gnubgid 2G4cAwTg2wkAKw:sIGyAAAAIAAE')
The dice have been set to 5 and 4.
GNU Backgammon Position ID: 4HPwATDgc/ABMA
Match ID : sIGyAAAAIAAE
+12-11-10--9--8--7-------6--5--4--3--2--1-+ O: gnubg
| X O | | O X |0 point
| X O | | O X |Lancer le dé 54
| X O | | O |
| X | | O |
| X | | O |
^| |BAR| |Match à 5 points(cube: 1)
| O | | X |
| O | | X |
| O X | | X |
| O X | | X O |
| O X | | X O |4 points
+13-14-15-16-17-18------19-20-21-22-23-24-+ X: mkisono
GNU Backgammon Position ID: 2G4cAwTg2wkAKw
Match ID : sIGyAAAAIAAE
+12-11-10--9--8--7-------6--5--4--3--2--1-+ O: gnubg
| X O O O | | O X |0 point
| X O O | | O |Lancer le dé 54
| O | | O |
| | | O |
| | | O |
^| |BAR| |Match à 5 points(cube: 1)
| | | |
| | | |
| X | | X |
| X X | | X X X O |
| X X | | X X X O O O |4 points
+13-14-15-16-17-18------19-20-21-22-23-24-+ X: mkisono
Setting GNUbg ID 2G4cAwTg2wkAKw:sIGyAAAAIAAE
findbestmove
Découvrons enfin le meilleur coup!
In [9]: gnubg.findbestmove()
Out[9]: (10, 5, 8, 4)
10/5, 8/4 * C'est vrai. Je ne trouve aucun autre bon coup comme celui-ci. Les taches sont dispersées à l'intérieur, mais si vous frappez en rouge ici et prenez la deuxième ancre, cela ressemblera à une partie arrière.
Vous pouvez utiliser la commande hint
pour obtenir plus d'informations.
In [10]: gnubg.hint()
Out[10]:
{'gnubgid': u'2G4cAwTg2wkAKw:sIGyAAAAIAAE',
'hint': [{'context': {'cubeful': 1,
'deterministic': 1,
'noise': 0.0,
'plies': 2,
'prune': 1},
'details': {'probs': (0.28211891651153564,
0.03484905883669853,
0.001164137851446867,
0.38557541370391846,
0.0413915291428566),
'score': -0.4322209358215332},
'eqdiff': 0.0,
'equity': -0.4322209358215332,
'move': '10/5 8/4*',
'movenum': 1,
'type': 'eval'},
{'context': {'cubeful': 1,
'deterministic': 1,
'noise': 0.0,
'plies': 2,
'prune': 1},
'details': {'probs': (0.2639846205711365,
0.03448880836367607,
0.0010329540818929672,
0.41944432258605957,
0.05380573496222496),
'score': -0.46866169571876526},
'eqdiff': -0.036440759897232056,
'equity': -0.46866169571876526,
'move': '8/4* 8/3',
'movenum': 2,
'type': 'eval'},
Articles jusqu'à présent