mirror of
https://github.com/InternLM/InternBootcamp.git
synced 2026-04-19 12:58:04 +00:00
73 lines
2.1 KiB
Python
Executable file
73 lines
2.1 KiB
Python
Executable file
def check_valid_masyu(grid):
|
|
"""
|
|
检查Masyu谜题是否有效
|
|
|
|
参数:
|
|
grid: 谜题网格
|
|
|
|
返回:
|
|
is_valid: 谜题是否有效
|
|
"""
|
|
# 简化的验证逻辑,主要检查珠子的位置是否合理
|
|
rows = len(grid)
|
|
cols = len(grid[0]) if rows > 0 else 0
|
|
|
|
# 检查网格大小
|
|
if rows < 4 or cols < 4:
|
|
return False
|
|
|
|
# 计算珠子数量
|
|
black_pearls = sum(row.count('B') for row in grid)
|
|
white_pearls = sum(row.count('W') for row in grid)
|
|
|
|
# 检查珠子数量是否合理
|
|
if black_pearls == 0 and white_pearls == 0:
|
|
return False
|
|
|
|
# 检查珠子是否有足够的空间
|
|
for r in range(rows):
|
|
for c in range(cols):
|
|
if grid[r][c] == 'B':
|
|
# 黑珠需要有足够的空间来满足规则
|
|
# 检查是否有至少两个方向可以直行
|
|
valid_directions = 0
|
|
|
|
# 检查上方
|
|
if r >= 2:
|
|
valid_directions += 1
|
|
|
|
# 检查下方
|
|
if r <= rows - 3:
|
|
valid_directions += 1
|
|
|
|
# 检查左方
|
|
if c >= 2:
|
|
valid_directions += 1
|
|
|
|
# 检查右方
|
|
if c <= cols - 3:
|
|
valid_directions += 1
|
|
|
|
# 黑珠至少需要两个有效方向
|
|
if valid_directions < 2:
|
|
return False
|
|
|
|
elif grid[r][c] == 'W':
|
|
# 白珠需要有足够的空间来满足规则
|
|
# 检查是否有至少一个方向可以直行并拐弯
|
|
valid_directions = 0
|
|
|
|
# 检查水平方向
|
|
if c >= 1 and c <= cols - 2:
|
|
valid_directions += 1
|
|
|
|
# 检查垂直方向
|
|
if r >= 1 and r <= rows - 2:
|
|
valid_directions += 1
|
|
|
|
# 白珠至少需要一个有效方向
|
|
if valid_directions < 1:
|
|
return False
|
|
|
|
# 通过所有检查,谜题有效
|
|
return True
|