lichess.org
Donate

I have a problem as described here with Python's code designed to solve trivial endgames

This code doesn't give a fully accurate result: pastebin.com/V7hu2NYY

It should give -1000 if the player to move is checkmated, 0 draw, -1000+k if the player to move will be checkmated within k plies,
but the results are not fully correct.

New depth reached: 17
New depth reached: 18
New depth reached: 19
Depth 0 1k6/3K1Q2/8/8/8/8/8/8 w - -: Result=4 Children=25
Depth 1 1k4Q1/3K4/8/8/8/8/8/8 b - -: Result=-993 Children=2
Depth 1 1k3Q2/3K4/8/8/8/8/8/8 b - -: Result=-985 Children=2
Depth 1 1k2Q3/3K4/8/8/8/8/8/8 b - -: Result=-993 Children=2
Depth 1 1k6/3K3Q/8/8/8/8/8/8 b - -: Result=-993 Children=3
Depth 1 1k6/3K2Q1/8/8/8/8/8/8 b - -: Result=-993 Children=3
Depth 1 1k6/3KQ3/8/8/8/8/8/8 b - -: Result=-995 Children=3
Depth 1 1k6/3K4/6Q1/8/8/8/8/8 b - -: Result=-989 Children=3
Depth 1 1k6/3K4/5Q2/8/8/8/8/8 b - -: Result=None Children=3
Depth 1 1k6/3K4/4Q3/8/8/8/8/8 b - -: Result=-995 Children=3
Depth 1 1k6/3K4/8/7Q/8/8/8/8 b - -: Result=-989 Children=3
Depth 1 1k6/3K4/8/5Q2/8/8/8/8 b - -: Result=None Children=3
Depth 1 1k6/3K4/8/3Q4/8/8/8/8 b - -: Result=None Children=1
Depth 1 1k6/3K4/8/8/5Q2/8/8/8 b - -: Result=-995 Children=3
Depth 1 1k6/3K4/8/8/2Q5/8/8/8 b - -: Result=None Children=3
Depth 1 1k6/3K4/8/8/8/5Q2/8/8 b - -: Result=-993 Children=1
Depth 1 1k6/3K4/8/8/8/1Q6/8/8 b - -: Result=-995 Children=2
Depth 1 1k6/3K4/8/8/8/8/5Q2/8 b - -: Result=-985 Children=2
Depth 1 1k6/3K4/8/8/8/8/Q7/8 b - -: Result=-995 Children=1
Depth 1 1k6/3K4/8/8/8/8/8/5Q2 b - -: Result=-989 Children=3
Depth 1 1k2K3/5Q2/8/8/8/8/8/8 b - -: Result=None Children=2
Depth 1 1k1K4/5Q2/8/8/8/8/8/8 b - -: Result=None Children=1
Depth 1 1k6/4KQ2/8/8/8/8/8/8 b - -: Result=-987 Children=5
Depth 1 1k6/5Q2/4K3/8/8/8/8/8 b - -: Result=-995 Children=2
Depth 1 1k6/5Q2/3K4/8/8/8/8/8 b - -: Result=-997 Children=2
Depth 1 1k6/5Q2/2K5/8/8/8/8/8 b - -: Result=-997 Children=2
Depth 2 6Q1/1k1K4/8/8/8/8/8/8 w - -: Result=8 Children=26
Depth 2 6Q1/k2K4/8/8/8/8/8/8 w - -: Result=6 Children=29
Depth 2 5Q2/1k1K4/8/8/8/8/8/8 w - -: Result=16 Children=18
Depth 2 5Q2/k2K4/8/8/8/8/8/8 w - -: Result=6 Children=21
Depth 2 4Q3/1k1K4/8/8/8/8/8/8 w - -: Result=8 Children=10
Depth 2 4Q3/k2K4/8/8/8/8/8/8 w - -: Result=6 Children=13
Depth 2 k7/3K3Q/8/8/8/8/8/8 w - -: Result=6 Children=25
Depth 2 8/1k1K3Q/8/8/8/8/8/8 w - -: Result=8 Children=12
Depth 2 8/k2K3Q/8/8/8/8/8/8 w - -: Result=6 Children=15
Depth 2 k7/3K2Q1/8/8/8/8/8/8 w - -: Result=6 Children=21
Depth 2 8/1k1K2Q1/8/8/8/8/8/8 w - -: Result=8 Children=9
Depth 2 8/k2K2Q1/8/8/8/8/8/8 w - -: Result=6 Children=12
Depth 2 k7/3KQ3/8/8/8/8/8/8 w - -: Result=6 Children=17
Depth 2 8/1k1KQ3/8/8/8/8/8/8 w - -: Result=None Children=4
Depth 2 8/k2KQ3/8/8/8/8/8/8 w - -: Result=6 Children=7
Depth 2 k7/3K4/6Q1/8/8/8/8/8 w - -: Result=None Children=11
I have proceeded a bit. I have obtained this code: pastebin.com/FKugyrXW which does 100% this: it computes the minimal number of plies between 2 fen strings which are descendants of initial_fen string. However I'm unable to extract from that functionality the optimal move, it says c1c8 which is not true, c1c6 is OK here,please see the bottom of this page: pastebin.com/x8CZ5FwS Any help ? Strangely enough when I switch all inequalities in find_best__move function including -inf to +inf it gives the SAME result c1c8!