mirror of
https://github.com/InternLM/InternBootcamp.git
synced 2026-04-29 17:35:14 +00:00
init-commit
This commit is contained in:
commit
18a552597a
3461 changed files with 1150579 additions and 0 deletions
72
internbootcamp/libs/slitherlink/slitherlink_verifier.py
Executable file
72
internbootcamp/libs/slitherlink/slitherlink_verifier.py
Executable file
|
|
@ -0,0 +1,72 @@
|
|||
import os
|
||||
import argparse
|
||||
import glob
|
||||
from ..slitherlink.slitherlink_generator import SlitherlinkSolver # 引入求解器
|
||||
|
||||
|
||||
# 验证谜题的函数
|
||||
def verify_puzzle(input_file, output_file=None, check_only=False):
|
||||
# 读取谜题文件
|
||||
print(f"验证谜题: {input_file}")
|
||||
puzzle = []
|
||||
with open(input_file, 'r') as f:
|
||||
for line in f:
|
||||
row = [None if cell == '.' else int(cell) for cell in line.strip()]
|
||||
puzzle.append(row)
|
||||
|
||||
# 创建 SlitherlinkSolver 实例并加载谜题
|
||||
solver = SlitherlinkSolver()
|
||||
solver.cells = puzzle
|
||||
solver.height = len(puzzle)
|
||||
solver.width = len(puzzle[0])
|
||||
|
||||
if check_only:
|
||||
# 仅验证谜题是否有解
|
||||
if solver.solve():
|
||||
print(f"谜题 {input_file} 有解!")
|
||||
else:
|
||||
print(f"谜题 {input_file} 无解!")
|
||||
else:
|
||||
# 求解谜题并保存结果
|
||||
if solver.solve():
|
||||
solution = solver.solution
|
||||
print(f"谜题 {input_file} 的解答已找到并保存到 {output_file}")
|
||||
if output_file:
|
||||
with open(output_file, 'w') as f:
|
||||
f.write(', '.join(map(str, solution)))
|
||||
else:
|
||||
print(f"谜题 {input_file} 无解!")
|
||||
|
||||
|
||||
# 处理谜题文件的函数
|
||||
def process_puzzles(puzzle_folder, solution_folder, check_only=False):
|
||||
# 获取所有谜题文件
|
||||
puzzle_files = glob.glob(os.path.join(puzzle_folder, '*.txt')) # 假设谜题文件为 txt 格式
|
||||
solution_files = glob.glob(os.path.join(solution_folder, '*.txt')) # 假设解决方案为 txt 格式
|
||||
|
||||
# 验证每个谜题文件
|
||||
for puzzle_file in puzzle_files:
|
||||
# 创建对应的输出文件路径
|
||||
puzzle_filename = os.path.basename(puzzle_file)
|
||||
solution_filename = os.path.splitext(puzzle_filename)[0] + '_solution.txt'
|
||||
output_file = os.path.join(solution_folder, solution_filename)
|
||||
|
||||
# 调用验证函数
|
||||
verify_puzzle(puzzle_file, output_file if not check_only else None, check_only)
|
||||
|
||||
|
||||
# 主函数
|
||||
def main():
|
||||
# 指定谜题和解决方案文件夹路径
|
||||
puzzle_folder = './puzzles' # 修改为你谜题文件所在的文件夹路径
|
||||
solution_folder = './solutions' # 修改为你解决方案文件所在的文件夹路径
|
||||
|
||||
# 设置是否仅验证有效性
|
||||
check_only = False # 如果你只想验证谜题有效性,可以设为 True
|
||||
|
||||
# 处理所有谜题
|
||||
process_puzzles(puzzle_folder, solution_folder, check_only)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue