Update utils.py
parent
29592cd05b
commit
91ac18c8e6
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue