tenhou-python-bot
tenhou-python-bot copied to clipboard
Special melding rules for honitsu/chinitsu
Дефолтное правило у нас сейчас такое, что мы открываемся только, если у нас уменьшается число шантен.
Но т.к. мы не умеем считать число шантен для конкретного яку, то для руки, например,
34556778m3p78s77z
, возможность открыться на поне якухаев пропускалась, т.к. число шантен она формально не уменьшает (с точки зрения руки в общем виде это ишантен и им же рука и останется после открытия пона драконов, но с точки зрения хоницу это 3 шантена, а после открытия пона она будет иметь 2 шантена на хоницу). Чтобы покрыть большую часть таких кейсов, сделан квикфикс. Однако по-хорошему, мы должны сделать более умную логику.
Например, разбросать все тайлы невстраивающихся мастей по изолированным, а дальше смотреть:
- Уменьшает ли открытие число шантен.
- Даже если не уменьшает число шантен, посмотреть, увеличивает ли оно укеире при том же числе шантен.
Проверить можно на следующих примерах:
1134556m3p78s777z
надо брать пон на 1m
для хоницу
1134556778m3p78s
надо брать пон на 1m
для чиницу
Если у нас все еще есть тайлы других мастей, но пункт 2 всегда будет полезным открытием. В принципе, второе можно распространить и на ситуацию, когда у нас нет тайлов других мастей - т.е. пробовать делать открытие, которое удлиняет форму. Однако этот случай посложнее и, возможно, стоит его пока отложить.