БлогNot. KQQK checkmate in 4 moves :)

KQQK checkmate in 4 moves :)

По следам старой публикации, всплыл вопросик, правда ли, что мат KQQK (два ферзя и король против "голого" короля) достигается при ходе белых не позднее 4-го хода. Если применить те же методы подсчёта, что здесь, получается, что да, вот соответствующая статистика:

wtm: Mate in   4:           130
wtm: Mate in   3:         46137
wtm: Mate in   2:        217727
wtm: Mate in   1:         98160
wtm: Broken positions:   336585

Правда, писать какой-то код с годами всё более лень, сегодня лично меня хватило только на это:

import chess
import chess.engine

#укажите здесь правильный путь к Стокфишу в показанном формате
engine = chess.engine.SimpleEngine.popen_uci(
 "D:/Arena/Engines/stockfish-16/stockfish-windows-x86-64-avx2.exe")

def analyze_position(fen, num_moves_to_return=1, depth_limit=None, time_limit=None):
 search_limit = chess.engine.Limit(depth=depth_limit, time=time_limit)
 board = chess.Board(fen)
 infos = engine.analyse(board, search_limit, multipv=num_moves_to_return)
 return [format_info(info) for info in infos]
   
def format_info(info):
 #смотрим всегда со стороны белых
 score = info["score"].white()
 #разедлим счёт на мат и сантипешки
 mate_score = score.mate()
 centipawn_score = score.score()
 return {
  "mate_score": mate_score, #ходов до мата
  "centipawn_score": centipawn_score, #сантипешек
  "pv": format_moves(info["pv"]), #ходы
  }

#привести запись ходов к виду a1a2
def format_moves(pv):
 return [move.uci() for move in pv]

print(analyze_position("8/8/4k3/8/8/8/1K6/QQ6 w - - 0 1", 
 num_moves_to_return=5, depth_limit=20)) #вариантов, глубина

Наверное, можно применять этот код и для офлайн-анализа других позиций.

Выполнялось из консольного проекта Python актуальной сборки Visual Studio 2019 с установленной как описано здесь (п. 5.2) библиотекой chess. Мат в 4 хода нашло :)

Прикрутить сюда перебор разрешённых позиций и будет примерно то, что нужно.

Налимов и Syzygy онлайн есть в этой статье.

07.04.2024, 13:22 [397 просмотров]


теги: софт шахматы статистика python

К этой статье пока нет комментариев, Ваш будет первым