问题的评论
-
9日评论
我认为这是一个非常有趣的提议。
所以这种把戏在科迪还是被允许的,但它们会被公平地计算在内。
我用过几次,我觉得学习这种编码方法是有用的,但这不是Cody的真正意义。
我使用最多的技巧是“str2num”。把里面的数都数出来有点难,但我也接受这个方法。这是公平的!: -)
我相信您需要在所有测试套件案例中重新定义“换行符”变量?
总的来说,这是一个很难解决的问题。例如,考虑以下情况(前三种情况的分数应额外扣分4分,而后三种情况不应扣分):1)regexp(",strcat('(?','@a=1)'));2) str = (? @a = 1),正则表达式(str);3) regexp(' ',char(')@Ab>2*'-1));4)正则表达式(“strcat(“(? ',' = 1)));5) str = (? @a = 1),正则表达式(str,”);6) regexp(' ',char(')@Ab>2*'+1));
阿方索,谢谢你在这个问题上的出色思考。您说得很对,仅基于解析程序文本的方法很难完善。至少可以让人们更努力地工作来绕过评分系统!但是您认为另一种方法如何:修改Cody机器上regexp及其同类的定义,以便它们在使用类eval参数调用时动态地更改分数?
嗨Nicholas,这是一个非常好的想法,主要的问题是解决不同时间之间的对应regexp被调用和不同的时间,它可能出现在代码中,但也许使用dbstack我们可以解决这个问题?(当然,我们可以只惩罚每次它被调用,即使这可能会产生非常高的惩罚循环等)想法?
相同的regexp表达式可能会多次调用,每次都使用不同的动态代码。最好从每个单独的调用点计算每个惟一代码字符串的分数——这似乎最符合当前规则的精神。你说得对,要跟踪它是相当复杂的。
顺便说一下,谢谢你指出换行符的问题。我想现在已经修好了。
最简单的方法是在使用regexp函数时添加固定大小长度的惩罚,例如,1000点。当一个问题需要regexp函数时,每个玩家都有相同的惩罚,因此它没有意义。当问题不需要它时,Cody玩家就不鼓励使用它。
PS:不是像Cody目前所做的那样禁止函数,而是对某些函数进行固定的积分惩罚,这将阻止它们的滥用,同时允许玩家充分探索MATLAB的特性。
作为奖励,黑客都有很高的分数,使它们都成为最糟糕的解决方案。万博 尤文图斯从来都不是领头的。
这方面我喜欢你的想法,拉斐尔。
解决方案的评论
-
1评论
我认为这个解决方案没有抓住重点!: -)