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


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

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

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

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

    同学们在如何判断题目重复上都花了不少心思,通过博客也表现出大家有相互交流,其中通过 运算结果不同来判定题目不同 的做法比较多。当然结果不同,题目肯定不同,但是结果相同,题目不一定相同,也就会出现很多误判的情况。这里带来的问题就是有可能无法完成条件苛刻的出题要求,比如限定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
    • 重复题目数计入成绩表(重复数越低分数越高)
    • 耗时计入成绩表(耗时越少分数越高)
    • 评分过程所有代码均在同一系统中进行,程序本身具有随机特性,加上环境不同,不保证与同学们自行测试结果相同,但理论上不会出现数量级差异。

    详细成绩表

    • 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
    分组 学号 姓名 JCF PSP XQFX SJSL DMJS KNJJ JDPJ CFS HS DYPF ZK CFSYS HSYS 合计 映射分数
    1 20162303 石亚鑫 5 5 3 2 2 3 2 267 747 48 1 43.14 19.31 74.71 95.43
    1 20162307 张韵琪 5 5 3 2 2 3 4 267 747 52 1 43.14 19.31 77.46 97.52
    2 20162324 春 旺 5 5 1 3 1 2 3 5000 10000 60 0.2 2 1 22.64 55.81
    2 20162312 张家铖 5 5 1 3 2 2 4 5000 10000 40 0.2 2 1 24.46 57.2
    3 20162330 刘伟康 5 5 4 4 4 4 2 9 3898 30 1 44.94 14.43 74.9 95.57
    3 20162329 张旭升 5 5 2 3 3 3 4 9 3898 70 1 44.94 14.43 79.03 98.71
    4 20162326 齐力锋 5 3 2 1 0 1 1 2700 10000 51 1 26.1 5 39.53 68.66
    4 20162320 刘先润 5 3 2 1 1 1 1 2700 10000 49 1 26.1 5 40.34 69.28
    5 20162325 金立清 5 5 2 2 3 1 1 234 298 35 1 43.37 20 70.01 91.85
    5 20162311 张之睿 5 5 3 2 3 3 3 234 298 65 1 43.37 20 80.72 100
    6 20162301 张师瑜 5 5 4 4 4 3 3 183 2128 35 1 43.73 17.17 77.02 97.19
    6 20162308 马平川 5 5 4 3 4 3 0 183 2128 65 1 43.73 17.17 78.51 98.32
    7 20162315 马 军 5 0 2 2 4 3 2 5000 10000 35 0 0 0 18 52.28
    7 20162317 袁逸灏 5 5 1 3 3 2 2 5000 10000 65 0 0 0 21 54.56
    8 20162306 陈是奇 5 5 2 2 0 2 2 9 4086 60 1 44.94 14.14 69.99 91.84
    8 20162305 李昱兴 5 5 3 4 2 1 3 9 4086 40 1 44.94 14.14 71.45 92.95
    9 20162327 王旌含 5 5 3 2 2 1 2 310 10000 30 0.9 38.55 4.5 54.01 79.68
    9 20162321 王 彪 5 5 0 1 3 1 1 310 10000 70 0.9 38.55 4.5 55.18 80.57
    10 20162310 林 臻 5 5 4 3 0 1 1 2 1943 22 0.7 31.5 12.22 52.49 78.52
    10 20162314 王译潇 5 5 2 2 2 1 1 2 1943 78 0.7 31.5 12.22 58.83 83.35
    11 20162309 邢天岳 5 5 1 2 1 2 1 1 1993 43 0.7 31.5 12.17 53.2 79.06
    11 20162313 苑洪铭 5 5 2 2 1 2 1 1 1993 57 0.7 31.5 12.17 56.04 81.22
    12 20162319 莫礼钟 5 5 1 1 1 0 0 176 595 20 1 43.77 19.54 61.12 85.09
    12 20162302 杨京典 5 5 2 1 2 2 0 176 595 80 1 43.77 19.54 76.51 96.8
    13 20162323 周 楠 5 5 2 2 1 2 4 272 521 40 1 43.1 19.66 72.46 93.72
    13 20162322 朱娅霖 5 5 2 2 1 2 3 272 521 60 1 43.1 19.66 75.23 95.82
    14 20162328 蔡文琛 5 5 2 1 0 2 0 5000 10000 45 0 0 0 15 50
    14 20162316 刘诚昊 5 5 2 1 0 1 1 5000 10000 55 0 0 0 15 50
    15 20162304 张浩林 5 5 3 4 3 0 2 38 4468 45 1 44.74 13.55 70.67 92.35
    15 20162318 张泰毓 5 5 3 4 3 0 1 38 4468 55 1 44.74 13.55 71.42 92.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截止)联系我进行复查,原则上仅处理环境相关问题,不予新提交的功能及问题修复代码进行重新评分。
  • 相关阅读:
    python之Socket网络编程
    python_异常处理
    python_面向对象编程
    Vue-cli3与springboot项目整合打包
    命令打开java控制面板
    后端记录用户登录失败次数
    跨域问题解决办法
    vue-i18n多语言文件归类的两种方法
    svn全局设置过滤文件没有作用的解决办法
    vue数据变化后页面刷新
  • 原文地址:https://www.cnblogs.com/vertextao/p/6978582.html
Copyright © 2020-2023  润新知