结对编程-四则运算(挑战出题)成绩及点评

结对编程-四则运算(挑战出题)成绩及点评

本次作业的题目博客 结对编程-四则运算(挑战出题)

先谈谈判断题目重复的问题

本次题目在题目去重上并没有给大家明确的提示,目的是希望大家自己思考出有一定可行性的方法,并且在评分上也没有严格要求一定不能有重复,只是重复越少得分越高。

同学们在如何判断题目重复上都花了不少心思,通过博客也表现出大家有相互交流,其中通过 运算结果不同来判定题目不同 的做法比较多。当然结果不同,题目肯定不同,但是结果相同,题目不一定相同,也就会出现很多误判的情况。这里带来的问题就是有可能无法完成条件苛刻的出题要求,比如限定3个运算符,出题10000道不重复题目,这个过程可能因为误判太多题目,最终找不到符合条件的题目,死循环,无法完成任务。

这里在公布成绩的同时,也给大家一个参考方法(只提供思路,不讲具体实现,通过搜索相关资料丰富,建议同学们自行参考并动手实现):

  • 首先,同学们都会将中缀表达式转换为后缀表达式
  • 接下来我们根据后缀表达式构建一棵表达式树也是非常容易的,参考Binary expression tree
  • 按照题目描述1+2+33+(2+1)是同一道题目,那么如何判断呢?我们按照上面的方式构建表达式树:
    expr-tree
    expr-tree-1
  • 接下来操作就很简单了,看看是否能通过 有限次交换左右子树 来使得两棵树相同,如果可以,则两个表达式相同,反之不同。以上例子的实际操作如下:
    我们尝试将1+2+3转换成3+(2+1)(当然反过来也是可以的)
    expr-tree-flip
  • 按上面的操作,2次子树交换就完成了转换就达到目的,因此两个表达式是相同的,这样的两棵树也称为 同构

  • 下面也有另一对表达式树,大家可以自己动手尝试看能否通过 有限次交换左右子树 来使得两棵树相同
    not-isomorphic

如何交换两颗子树呢?

其实我们仅仅是要比较交换后的结果是否相同(是否同构),不必真正交换,伪代码如下:

bool isomorphic(tree1, tree2)
    # 两棵树都为空,视作相同
    if tree1 is NIL and tree2 is NIL
        then return true

    # 经过以上条件,一定有一棵树不为空,这时候有任意一棵树为空,则不同
    if tree1 is NIL or tree2 is NIL
        then return false

    # 两棵树都不为空,比较当前节点
    if tree1.value is not equal to tree2.value
        then return false

    # 如果当前节点相同,看看左子树与左子树比较,右子树与右子树比较的情况(即不交换比较一下)
    if isomorphic(tree1.left, tree2.left) and isomorphic(tree1.right, tree2.right)
        then return true

    # 不交换的情况下比较结果不同,我们再试试交换左右子树比较一下
    # 等等!加法和乘法有交换律,可是减法和除法交换后就有问题,因此我们只对加法和乘法做交换比较
    if tree1.value is '+' or tree1.value is '*' # tree1和tree2当前节点的值都是一样的
        then if isomorphic(tree1.left, tree2.right) and isomorphic(tree1.right, tree2.left)
            then return true

    # 交换比较也不同,则不同
    return false

成绩

  • 本次成绩以实际运行结果为准,除了同学们自己使用测试工具的几组测试参数(不能完成之前预设的测试参数,分数按题目要求折扣),本次主要评分使用另一组参数
  • 评分使用的参数10000 3 10000-3.txt,即:
    • 生成10000道题目
    • 3个运算符
    • 输出结果至10000-3.txt
  • 重复题目数计入成绩表(重复数越低分数越高)
  • 耗时计入成绩表(耗时越少分数越高)
  • 评分过程所有代码均在同一系统中进行,程序本身具有随机特性,加上环境不同,不保证与同学们自行测试结果相同,但理论上不会出现数量级差异。

1115357-20170611010429747-424172604.jpg

详细成绩表

  • JCF 基础分(按时提交)5分
  • PSP PSP表格 5分
  • XQFX 需求分析 5分
  • SJSL 设计思路 5分
  • DMJS 实现过程中的关键代码解释 5分
  • KNJJ 遇到的困难及解决方法 5分
  • JDPJ 对结对小伙伴做出评价 5分
  • CFS 重复数
  • HS 耗时
  • DYPF 队友评分
  • ZK 分数折扣
  • CFSYS 重复数映射分数 10~45
  • HSYS 耗时映射分数5~20
分组学号姓名JCFPSPXQFXSJSLDMJSKNJJJDPJCFSHSDYPFZKCFSYSHSYS合计映射分数
120162303石亚鑫553223226774748143.1419.3174.7195.43
120162307张韵琪553223426774752143.1419.3177.4697.52
220162324春 旺5513123500010000600.22122.6455.81
220162312张家铖5513224500010000400.22124.4657.2
320162330刘伟康55444429389830144.9414.4374.995.57
320162329张旭升55233349389870144.9414.4379.0398.71
420162326齐力锋532101127001000051126.1539.5368.66
420162320刘先润532111127001000049126.1540.3469.28
520162325金立清552231123429835143.372070.0191.85
520162311张之睿553233323429865143.372080.72100
620162301张师瑜5544433183212835143.7317.1777.0297.19
620162308马平川5543430183212865143.7317.1778.5198.32
720162315马 军5022432500010000350001852.28
720162317袁逸灏5513322500010000650002154.56
820162306陈是奇55220229408660144.9414.1469.9991.84
820162305李昱兴55342139408640144.9414.1471.4592.95
920162327王旌含553221231010000300.938.554.554.0179.68
920162321王 彪550131131010000700.938.554.555.1880.57
1020162310林 臻554301121943220.731.512.2252.4978.52
1020162314王译潇552221121943780.731.512.2258.8383.35
1120162309邢天岳551212111993430.731.512.1753.279.06
1120162313苑洪铭552212111993570.731.512.1756.0481.22
1220162319莫礼钟551110017659520143.7719.5461.1285.09
1220162302杨京典552122017659580143.7719.5476.5196.8
1320162323周 楠552212427252140143.119.6672.4693.72
1320162322朱娅霖552212327252160143.119.6675.2395.82
1420162328蔡文琛5521020500010000450001550
1420162316刘诚昊5521011500010000550001550
1520162304张浩林553430238446845144.7413.5570.6792.35
1520162318张泰毓553430138446855144.7413.5571.4292.92
备注
  • 【第2组】在100 1 100.txt参数时无法完成生成(长时间不结束)。评分的用例10000 3 10000-3.txt也无法完成。重复数按5000计,耗时按10s计。
  • 【第4组】评分的用例10000 3 10000-3.txt也无法完成,重复数按100 3 100.txt的重复率计,耗时按10s计。
  • 【第7组】没能找到生成的题目,重复数按5000计,耗时按10s计,折扣计0。
  • 【第9组】
    • 30 1 30.txt未生成题目,分数得90%。
    • 10000 3 10000-3.txt评分用例无法完成,按照 1000 3 1000.txt的重复率来评估重复数,耗时10s计。
  • 【第10组】有分数,随机空间增大,按约定得分比为70%。
  • 【第11组】有分数,随机空间增大,按约定得分比为70%。
  • 【第14组】生成题目不符合输入输出规范,重复数按5000计,耗时按10s计,折扣计0。

点评

  • 张旭升同学本次作业率先完成作业,去重思路也有其他组引用(比如陈是奇/李昱兴组),并且在评分测试中也取得较好的去重效果。不过张旭升同学在博客上对自己的思路描述并不是很清楚,有待改进。
  • 张师瑜同学在博客撰写上较为认真,并在“设计思路”中也体现对不同去重方法的效果进行实测,望继续保持并改进。
  • 张浩林/张泰毓组在“设计思路”上描述简单清晰,评分测试中去重效果也不错,希望继续改进。
  • 还有其他优秀的同学在这里就不一一提出了。希望大家多思考,多实践!

注意

  • 需要核对代码实际运行情况的同学可以单独联系我取得执行结果。
  • 对成绩有疑问的同学请在成绩发布后次日一天内(至2017-6-11 23:59截止)联系我进行复查,原则上仅处理环境相关问题,不予新提交的功能及问题修复代码进行重新评分。

转载于:https://www.cnblogs.com/vertextao/p/6978582.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值