这个作业属于哪个课程 | [班级的链接](https://bbs.csdn.net/forums/fzusdn-0831) |
---|---|
这个作业要求在哪里 | [作业要求的链接](https://bbs.csdn.net/topics/617255492) |
个人学号 | <102299217> |
结对成员学号 | <102299144> |
GitHub 仓库地址 | <GitHub仓库地址> |
一、需求分析
Need(需求):
并发生成数独:系统能够同时生成9个九宫格数独,以满足用户同时挑战多个数独的需求,提高游戏难度和效率。 保证数独可解性:系统确保生成的每个九宫格数独都可解,以保证用户能够在后续游戏中解决这些数独,展示他们的解谜技能。
Approach(做法):
并行生成独立数独页面: 9个9宫格数独并行生成,每个数独都可独立求解。
Benefit(好处):
九个九宫格数独共存,操作便捷。
Competition(竞争):
操作简单,界面简洁。
Delivery,推广
邀请身边喜欢数独的同学体验,请他们提供使用感受和建议。 不断更新和完善平台的功能和服务,提高用户体验和满意度,吸引更多的用户加入并留存。
二、PSP表格
PSP任务 | 估计时间(分钟) | 实际时间(分钟) |
---|---|---|
Planning(计划) | 30 | 20 |
Analysis(需求分析) | 60 | 50 |
Learning (学习) | 200 | 300 |
Design(具体设计) | 120 | 150 |
Development(开发) | 200 | 300 |
Coding(具体编码) | 300 | 400 |
Test(测试) | 120 | 150 |
Postmortem & Process Improvement Plan(事后总结) | 30 | 30 |
Total(总计) | 1060 | 1400 |
三、原型展示
原型链接 原型采用Axure制作并上传到墨刀
四、算法与技术
我们此次作业用的是Python,前后端链接用的flask,因为比较简单,上手快一点
并发性算法
# 创建一个空列表用于保存生成的九个数独谜题 sudokus = [] # 定义生成数独的函数 def generate_sudoku(): sudoku = generate() blank = copy.deepcopy(sudoku) remove(blank, 50) return (sudoku, blank) # 创建九个线程,每个线程生成一个数独谜题并将其保存到列表中 threads = [] for _ in range(9): thread = threading.Thread(target=lambda: sudokus.append(generate_sudoku())) threads.append(thread) thread.start() for thread in threads: thread.join()
唯一解保证
def unique_solution(msg, blanks): msg_copy = [row[:] for row in msg] # 挖掉指定位置的数字 for b in blanks: row = b // 9 col = b % 9 msg_copy[row][col] = 0 # 使用回溯法求解谜题 solutions = [] solve(msg_copy, solutions) return len(solutions) == 1
五、结对照片
六、个人总结
第一次参与结对编程作业。这次经历不仅提高了我的编程技能,也让我对团队合作有了更深的理解。其他同学们和AI对我们的帮助帮助很大,没有他们我们可能都无法完成此次作业。