问题的评论
-
9日评论
我认为这是一个非常有趣的提议。
所以这类把戏在Cody中仍然是允许的,但它们会以一种公平的方式计算。
我用过几次,我觉得学习这种编码方法是有用的,但这不是Cody的真正意义。
我使用最多的技巧是“str2num”。数里面所有的数字有点难,但我也接受这个方法。这是公平的!: -)
我相信你需要在所有的测试套件案例中重新定义'newline'变量?
这是一个很难解决的问题。例如,考虑以下情况(前三种情况的分数应该被额外扣分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的功能。
作为奖励,hack都有很高的分数,这使得它们都是最糟糕的解决方案。万博 尤文图斯从来没有领先的。
我喜欢你这方面的想法,拉斐尔。
解决方案的评论
-
1评论
我认为这个解决方案没有抓住重点!: -)