1.
2.分工
我:后端算法实现
队友:前端
3.psp表格
Planning | 计划 | 30 | 30 |
Estimate | 估计这个任务需要多少时间 | 2975 | 3880 |
Development | 开发 | 1200 | 1800 |
Analysis | 需求分析 (包括学习新技术) | 600 | 600 |
Design Spec | 生成设计文档 | 80 | 60 |
Design Review | 设计复审 | 15 | 20 |
Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 60 | 60 |
Design | 具体设计 | 30 | 30 |
Coding | 具体编码 | 600 | 1000 |
Code Review | 代码复审 | 120 | 120 |
Test | 测试(自我测试,修改代码,提交修改) | 180 | 100 |
Reporting | 报告 | 40 | 60 |
Test Repor | 测试报告 | 20 | 20 |
Size Measurement | 计算工作量 | 10 | 10 |
Postmortem & Process Improvement Plan | 事后总结, 并提出过程改进计划 | 20 | 30 |
- | 合计 | 2975 | 3880 |
4.设计说明
5.关键代码解释
关键代码段:
for i in card:
f = i[0]
fuhao.append(f)
if i[1] == "J":
number.append(11)
elif i[1] == "Q":
number.append(12)
elif i[1] == "K":
number.append(13)
elif i[1] == "A":
number.append(14)
elif i[1:] == "10":
number.append(10)
else:
number.append(int(i[1])) #将J,Q,K,A转换为数字放到数组
for x in number:
if x == 2:
ar[2] = ar[2] + 1
if x == 3:
ar[3] = ar[3] + 1
if x == 4:
ar[4] = ar[4] + 1
if x == 5:
ar[5] = ar[5] + 1
if x == 6:
ar[6] = ar[6] + 1
if x == 7:
ar[7] = ar[7] + 1
if x == 8:
ar[8] = ar[8] + 1
if x == 9:
ar[9] = ar[9] + 1
if x == 10:
ar[10] = ar[10] + 1
if x == 11:
ar[11] = ar[11] + 1
if x == 12:
ar[12] = ar[12] + 1
if x == 13:
ar[13] = ar[13] + 1
if x == 14:
ar[14] = ar[14] + 1 # 对拿到的poker进行桶排
for x in fuhao:
if x == '$':
ab[0] += 1
elif x == '&':
ab[1] += 1
elif x == '*':
ab[2] += 1
elif x == '#':
ab[3] += 1
- 算按法设计的主体思路,是将拿到的字符串,分为单个元素,再将每个元素的花色和大小分开存入两个数组
- 接下来遍历存放花色的数组,判断其值来确定是否是同花色
- 遍历存放数字的数组,判断其值是否大于等于1来找到相应的牌型
6.性能分析与改进
- 对函数进行分析,显然自己代码的瓶颈是在于无脑。这样虽然可以比较方便,或者说比较偷懒,但是的的确确给自己的程序性能带来了很大的影响。
- 对数组便利的情况可能会超时
-改进:可以采用贪心算法,从所有牌里找到最大的一墩作为后墩,然后从剩下的牌里继续找下去
7.单元测试
控制台输入:
[*2 #3 &5 &5 *6 &7 *9 $9 *10 $J *Q $Q #A]
控制台输出:
[*2 #3 $J,&5 &5 *6 &7 *10 ,*Q $Q $9 *9 #A]
- 异常:查找顺子时候,应为是对排序过的数组进行查找,在判断数字数组是否连续五个元素的值大于等于1时,可能出现对子或三条之类连续的情况,所以需要判断后一张牌是否与前一张牌大小相等
-改进:
if s[20] == 1:
bb[2] = ""
bb[2] = str(bb[2]) + str(card[t])
for x in ar[2:6]:
if card[t + 1] == card[t]:
t += 1
else:
bb[2] = str(bb[2]) + ' ' + str(card[t + 1])
t += 1
8.Github代码迁入记录
9.遇到的困难及解决办法:
我:在此次编程中,首先拿到题目后毫无头绪,不知从何下手。前端后端都需要学习很多的东西,在算法编程过程前,一开始连游戏规则都弄不懂,队友们于是相约一起玩扑克牌,在对规则熟悉后慢慢开始规划如何实现算法。在编程过程中,思路也很容易卡壳,于是在稿纸上先画出了流程图,再开始实现代码,后来很多次测试代码也一直出现问题,于是一直修改测试修改测试修改......后来大部分问题得到了解决,在此次作业之前,写一个算法题可能对大部分人不是什么困难的事情,但这次的任务,需要调用接口实现前后端的连动等等,对小白来说这也太难了吧。总之,巨累,但收获更多,加油吧!
10.队友评价
我:一开始我和队友对于前端一无所知,队友选择了做前端,后来很惊喜的给我看到了前端的成果,界面还有据说不是很简单拖拽功能,赞!在结对过程中,两个人如果再多一些讨论,可能会完成更好的作品!
11.学习进度条:
1 | 200 | 200 | 20 | 20 | 文本匹配和分类 |
2 | 0 | 200 | 10 | 30 | Axure Rp8原型设计工具 |
3 | 500 | 700 | 30 | 60 | 前段知识和前后端联动 |