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