Update utils.py

dev
wangsiyuan 2024-12-01 03:00:26 +08:00
parent 29592cd05b
commit 91ac18c8e6
1 changed files with 10 additions and 10 deletions

View File

@ -39,21 +39,21 @@ def is_valid_group(tiles):
return False
def try_win(remaining_tiles, groups_formed=0):
def try_win(remaining_tiles, groups_formed=0, has_pair=False):
"""
尝试将剩余牌分组为合法的刻子或顺子并检查是否有一对将牌
"""
# 如果没有剩余牌,检查是否形成了四坎牌
# 如果没有剩余牌,检查是否形成了四坎牌且有一对将牌
if not remaining_tiles:
return groups_formed == 4
return groups_formed == 4 and has_pair
# 检查是否可以找到一对将牌
for i in range(len(remaining_tiles) - 1):
if remaining_tiles[i] == remaining_tiles[i + 1]: # 找到对子
temp_tiles = remaining_tiles[:i] + remaining_tiles[i + 2:] # 移除对子
# 尝试分组剩余牌
if try_win(temp_tiles, groups_formed):
return True
if not has_pair: # 如果还没有找到将牌
for i in range(len(remaining_tiles) - 1):
if remaining_tiles[i] == remaining_tiles[i + 1]: # 找到对子
temp_tiles = remaining_tiles[:i] + remaining_tiles[i + 2:] # 移除对子
if try_win(temp_tiles, groups_formed, has_pair=True):
return True
# 检查是否可以形成合法组(刻子或顺子)
for i in range(len(remaining_tiles)):
@ -63,7 +63,7 @@ def try_win(remaining_tiles, groups_formed=0):
if is_valid_group(group):
temp_tiles = remaining_tiles[:i] + remaining_tiles[i + 1:j] + \
remaining_tiles[j + 1:k] + remaining_tiles[k + 1:]
if try_win(temp_tiles, groups_formed + 1):
if try_win(temp_tiles, groups_formed + 1, has_pair):
return True
return False