这个作业属于哪个课程 | <班级链接> |
---|---|
这个作业要求在哪里 | <作业链接> |
个人学号 | 102101637 |
结对成员学号 | 102101324 |
GitHub 仓库地址 | https://github.com/xinyang-Grind/Homework.git |
老师学长学姐好~我是102101637施彭湃
我的队友是——超级无敌大帅哥江湖人称xyg——102101324陈昕杨
1.需求分析(NABCD模型)
a.Need 需求
用户需要同时生成九个数独谜题。
每个数独谜题应该是唯一的,不重复的。
用户希望通过并行处理提高数独生成的效率。
b.Approach 做法
实施一个多线程的解决方案,以便同时生成九个数独谜题。
使用线程池来管理线程,每个线程负责生成一个数独谜题。
确保每个数独谜题都是唯一的,没有重复。
c.Benifit 好处
提高数独生成的效率,因为可以并行生成多个谜题。
减少用户等待时间,快速生成多个数独。
通过并发生成,增加了程序的性能和响应能力。
d.Constraints 约束
数独谜题必须是有效的,符合数独规则。
确保多线程操作不会导致数据竞争或不一致。
可能需要处理线程同步和错误处理。
e.delivered 交付
生成的九个数独谜题以数组的形式提供给用户或其他模块。
提供一个可视化界面或输出选项,以便用户查看或使用这些数独谜题。
提供文档或用户指南,解释如何使用并行生成的数独谜题。
2.PSP表格
项目名称:数独
项目日期:完成9.28
开发人员:陈昕杨 施彭湃
阶段计划
阶段 | 预估时间 (分钟) | 实际时间 (分钟) |
---|---|---|
计划 | 50 | 120(由于返工) |
设计 | 20 | 20 |
设计复审 | 0 | 0 (双方都非常满意) |
代码规范检查 | 60 | 120 |
具体编码 | 600 | 840 |
测试报告 | 60 | 60 |
重构 | 0(原本以为没有) | 600(最后发现理解错题意 爆改一晚上!!) |
总结
总计预估时间 (分钟):790min
总计实际时间 (分钟):1760min(还是差很多的)
3.原型展示(墨刀链接)
https://modao.cc/proto/rwe5jGoQs10gflGyfPofz/sharing?view_mode=device&screen=rbpTpz7qhXmBfGEgK&canvasId=rcTptmPlTpz7vCUqsLo3I2 #结对编程-分享
- 每一个格子可以输入一个数字
- submit提交答案
- reset代表清空答案回到原题
- newgame代表重新生成一个题目
4.算法技术
- 回溯算法:回溯是一种搜索算法,通常用于解决组合问题、排列问题和优化问题等。在生成数独谜题的上下文中,回溯算法用于递归地尝试不同的数字放置,直到找到合适的解或确定无解。
- 多线程:程序使用Java的多线程机制来并行生成九个数独谜题。每个数独谜题的生成任务被分配给一个独立的线程,以提高生成效率。通过线程池(ExecutorService)来管理这些线程,可以充分利用多核处理器的性能。
- 随机性:程序在填充数独谜题时使用了随机性。在每个空格尝试放置数字时,程序会随机选择一个候选数字,以增加数独谜题的多样性。
- 数独规则验证:程序在尝试放置数字时会检查数独规则的有效性。这包括检查同一行、同一列和同一个3x3子网格中是否存在重复数字。如果放置数字后违反了数独规则,程序会进行回溯,撤销之前的选择。
- 数据结构:程序使用多维数组来表示数独谜题。这些数组用于存储数独谜题的状态,填充的数字以及检查数独规则。
- 总的来说,这段程序利用回溯算法、多线程、随机性和数独规则验证等技术来生成多个数独谜题,并通过合适的数据结构来管理和表示这些谜题。这些技术的组合使得程序能够高效地生成多个不同的数独谜题。
5.成果展示
mmexport1695911198210
6.一些“结对”photos
7.个人感想
这次真的是紧赶慢赶把作业做完了,原本以为已经把作业做完了,结果后面一天发现!题意完全理解错误,简直就是致命的打击,还有是在DDL之前顺利完工!这次也是学到了很多东西,如同vue组件的使用,前后端跨域问题,怎么响应后端等等…
以下是巴拉巴拉巴拉,一些对于前端开发的看法
前端开发是创建Web应用程序用户界面的领域,它涉及使用HTML、CSS和JavaScript等技术来构建网站和Web应用程序。在前端开发中,常常会遇到以下一些问题:
跨浏览器兼容性问题: 不同的Web浏览器对HTML、CSS和JavaScript的解释和渲染有所不同,因此开发者必须确保他们的网站在各种浏览器中正常工作。
响应式设计: 确保网站在不同设备和屏幕尺寸上都能够良好地显示是一个挑战。开发者需要使用响应式设计技术来适应不同的分辨率和设备类型。
性能优化: 提高网站的加载速度和性能是一个重要问题。这包括压缩和合并CSS和JavaScript文件、使用图像优化技术、以及减少不必要的网络请求等。
前端框架和库选择: 选择合适的前端框架(如React、Vue.js等)和库,以提高开发效率和代码质量,但也需要学习和掌握这些工具。
维护性: 随着项目的不断发展,前端代码可能会变得复杂。良好的代码组织和文档化是确保代码易于维护的关键。
单元测试和集成测试: 编写和运行前端代码的测试是确保代码质量的重要一环,但有时也会面临测试环境和工具的挑战。
版本控制和团队协作: 使用版本控制工具(如Git)来管理前端代码的变更,以及与团队成员协作解决问题和推进开发。
自己做了前端才知道,那些可以画出好看UI的人是多么厉害,光是9个数独怎么清楚地显示在一页就捣鼓了老半天!总的来说,收获满满,期待下次作业!