问题的评论
-
25日评论
大多数解决金宝搏官方网站方案将失败测试超过2变量的表达式,例如,“a b c”。
下面一个随机生成的测试用例列表(与两个变量),以防这些帮助:断言(isequal(同义反复(’((0 & 1)| ~ B) & ~ B”),假));
断言(isequal(重言式(((0 & ~ B) & ~ B)”),假));
断言(isequal(同义反复('(0 | & ~)”),假));
断言(isequal(同义反复('(0 | | 1)'),真的));
断言(isequal(重言式(((0 | ~ B) | 1)”),真的));
断言(isequal(重言式(((1四维)| B)”),假));
断言(isequal(重言式(((1 & 1)和)),假));
断言(isequal(重言式(((1 | 0)|)”),真的));
断言(isequal(同义反复(((1 |)| 0)'),真的));
断言(isequal(同义反复('((1 | ~)和乙)”),假));
断言(isequal(重言式(((1)| ~)|”),真的));
断言(isequal(重言式(((一个~)& ~ B) | ~“),假));
断言(isequal(重言式(((一~ B) & 1) | B”),假));
断言(isequal(重言式(((| 0)& 1 & ~ B”),假));
断言(isequal(重言式(((|)和)| ~“),真的));
断言(isequal(同义反复(“((B | 0)和乙)”),假));
断言(isequal(同义反复(' ((B | 1)和乙)和'),假));
断言(isequal(重言式(((B |) | ~)”),真的));
断言(isequal(重言式(((~一~四维)和乙”),假));
断言(isequal(重言式(((~一~一个)| 0)”),假));
断言(isequal(重言式(((~一~一个)| ~)| 1 '),真的));
断言(isequal(同义反复(' ()(~ | | ~ B) & 1”),真的));
断言(isequal(重言式(((~ | B) |)”),真的));
断言(isequal(重言式(((~ | ~)| 1)”),真的));
断言(isequal(重言式(((~ | ~ B)四维)”),假));
断言(isequal(重言式(((~ b 0)和)),假));
断言(isequal(同义反复(“(0 & 1)| 1 & 1”),真的));
断言(isequal(同义反复(“(0 | ~方式)”),假));
断言(isequal(同义反复('(1 | 0)”),真的));
断言(isequal(同义反复(“(一个~ B)”),假));
断言(isequal(同义反复(“(一个~ | 1)”),真的));
断言(isequal(重言式((| 1)| B),真的));
断言(isequal(同义反复('(|)| | 1 '),真的));
断言(isequal(重言式((B&1) | ~ B),真的));
断言(isequal(同义反复(“(B - B) & ~ B 0”),假));
断言(isequal(同义反复(“(B | ~ B) | B”),真的));
断言(isequal(同义反复(' (~ A&B&0) '),假));
断言(isequal(同义反复(' (~ | 0)| ~ b ~“),假));
断言(isequal(同义反复('(~ | 1)| 1 '),真的));
断言(isequal(同义反复(' (~ | B&B) '),假));
断言(isequal(同义反复(' (~ | B) | ~ B”),真的));
断言(isequal(同义反复('(~ | ~)| 0”),假));
断言(isequal(同义反复(' (~ b 0) & 1 | 1 '),真的));
断言(isequal(同义反复(1乙| ~ B | 0),真的));
断言(isequal(同义反复(“B&1&A&1”),假));
断言(isequal(同义反复(' ~ A&0&1 | 1 '),真的));
断言(isequal(同义反复(~ B 0 ~ | B),假));
断言(isequal(同义反复(' ~ B | 1 | 1 | ~ B”),真的));
断言(isequal(同义反复(' B ~ | ~ B&1 | 1 '),真的));
我相信新的测试16定义错误(应该是y_correct = true)
很无聊,如果你改变测试。
测试16仍然是错误的。
对不起,固定。
@Jean-Marie——之间的各种测试套件,我认为这是我第四次来解决这个问题。你怎么能称之为无聊吗?),但说真的,我认为这是伟大的,简想测试套件具有挑战性的和正确的。一个健壮的测试套件是比只有几个测试,很容易被骗。
@James。第三次尝试对我来说,它是无聊的,因为这些更新(测试15和16特别是)是棘手的和无用的。我建议这个问题的努力创建一个版本。
@Jean——指责彭抚养“超过2变量”的警告,导致我所有的解决方案要么时间(至少一打我的消失由于超时而改)或彻底失败!金宝搏官方网站:-)我同意拥有26个变量是轻微的杀伤力,但这是这个“硬”的问题。我把它们都等于0,那么等于1,然后跑一堆0和1的随机排列。我评估所有这些条件来确定其中的任何一个假回来。并不完美,但足以满足测试套件和更快的比2 ^ 26组合所需的所有的所有可能的组合。
@James。怪我“超过2变量”的评论?绝对胡说八道!评论是科迪的一个核心功能,允许玩家,即。我们所有人,有效讨论,分享,和交流在任何方面的问题或解决方案,这就是我们的球员帮助科迪一个激动人心的世界。记住,“评论任何问题或解决方案”是出现在第五高级特性的定义科迪(//www.tatmou.com/matlabcentral/about/cody/)。
@Peng——我很抱歉。你的解决方金宝搏官方网站案通常是最好的问题,和我的意思没有进攻。“彭责任”部分的评论是一个笑点。你是100%正确的,大多数早期的解决方案(包括所有我的!)用超过两个变量将会失败。金宝搏官方网站我说过让我之前的评论,这一事实1月试图想出一个更健壮的测试套件是一件好事,因为它会帮助所有人获得更好的MATLAB。再一次道歉。
我不同意你的评论。我不喜欢改因为流程不尊重球员的解决方案已经提交。金宝搏官方网站Cody5是一个挑战,一个最后期限。这些问题是特别的。如果你想更新测试,为社区创造另一个版本。测试15和16只,以避免建立一个表与regexp / dec2bin攀岩者。我不知道你为什么要排除这种正确的方法(人造的26个字母序列)。但这只是我的意见。
@James。谢谢你的解释,我很欣赏。简的方法我没有问题,逐渐强化了testsuite,让问题越来越困难。事实上,他所做的只是解决所有评论从动力学方面(这里)因此,无可责备。但我个人犹豫了这样重大的改变我自己的问题一旦发表在Cody5周年集团,因为解决不通知当他们的解决方案失败的新添加的测试用例。金宝搏官方网站如果解决不回来检查自己,他们永远不会知道,因此错过这个机会来完成这个问题。以我自己的问题为例子(//www.tatmou.com/matlabcentral/cody/problems/44353),我收到评论是否存在一种方法使地图更好的解决解决方案。我有一个简单的方法来解决这个问题通过删除评论非常大的解决方案规模较小的上限(100),这将导致更高的分辨率地图上的解决方案。但是我没有这样做,因为它可能会改变当前排名的解决方案(如我的问题的解决方案是衡量运行时的速度,在不同的运行可能会有所不同)。金宝搏官方网站我不想失望任何解决我的问题,所以我没有进行任何更改我的测试套件。 I do understand the dilemma here because it is extremely hard to make a perfect test suite for a hard problem, which is perhaps much harder than solving the problem.
已经说过,我将建议科迪团队无论何时更新和改问题,解决所有,或者至少的解决方案新测试不及格,应通知。金宝搏官方网站
我同意让-玛丽•Cody5问题有些特别,或许我们应该把他们更仔细一点关于改。在我看来有点不幸,科迪徽章可能会丢失后获得(这当一个问题被改,你所有的解决这一问题失败)。金宝搏官方网站我相信这是有时由科迪管理员直接固定,但它仍然创造了一些挥之不去的问题(例如徽章事件得到从时间轴,所以他们没有删除日期/时间)。此外,除非你经常回到科迪,只是很难注意到当一个问题被改和一个或所有的解决方案现在没有新testsuite(如你可能回到科迪和注意,你的分数有所下降,但很难知道为什么),这使得这一个特别棘手的问题挑战像Cody5与一个明确的最后期限和很多新球员。金宝搏官方网站以任何方式,因为这一切,也许我们,作为创造者的问题,应该更小心当特别处理Cody5问题只是为了确保玩家不散他们的成就/解决方案有点“不公平的”。金宝搏官方网站这并不意味着,在我看来,我们不应该re-score(例如,我个人还是觉得它非常好re-score多少次就需要为了解决/改善你的testsuite,以及改只是为了消除作弊条目如查表解决方案有限只testsuite情况下),但这可能意味着我们应该小心(也许有点保守)testsuite变化只是为了确保我们不是无效否则合理(即使不完美)的解决方案。金宝搏官方网站在这种特殊情况下,测试15和16个可能躺在这个边缘的场景中,在那里我可以看到他们是如何帮助改善testsuite,但他们也可以删除有些不公平,否则好解决方案,根本不考虑这个相当极端的所有26个变量同时被包含在逻辑语句,所以也许这两个测试可以删除或更改其他情况并非如此征税?。金宝搏官方网站很乐意听到你的想法吗
@Jean——它确实是可以2 ^ 26真值表,你只需要做到有效率;)
我也同意阿方索关于改,你可以失去你的解决问题,你不会注意到,直到一个星期已经过去了,例如。
@Daniel,这是真的,但其他方法(如@James随机抽样方法)还将在测试时15/16,或任何看起来像断言(isequal(同义反复(strjoin (arrayfun (@ (i)[‘~’*的(兰德> 5)char (A +张)],1:26、“大学”,0),“|”)),假)),同时仍然工作很好耗电量较少的场景。关键是原testsuite不包括例这种极端的场景(确切地说是原始testsuite只包括两变量A / B)所以感觉有点不公平的期望原始解决方案一般足以支付这样的场景。金宝搏官方网站例如,1月可能无效* *当前的解决方案如果他认为“A”和“A”是两个不同的变量,并创建一些测试,包括52个大小写混合变量。金宝搏官方网站我相信可能不是一个好主意在Cody5的背景下,尽管我认为这将是一个非常好的点子显式地创建一个新的问题,问你解决这个相当困难larger-number-of-variables情况。
@Daniel,有趣,你应该提及我的道歉,这发生在你身上! !如果我没记错的话,你已经有了所有cody5:困难的问题解决在10月21日,尽管你徽章显示10月31日日期现在,所以适当的炫耀你:)
@Alfonso -你是对的。但不管怎么说,我不打你,你真是太好了。最后我很确定我不会一样好第二个如果其他早点开始的问题。
就我个人而言,我保持一个很好的记忆科迪系列马拉松和奇点的阿方索和频域得到我的困难已经逐渐增加。非常的说教,因为你必须研究其他解决方案要真正了解你的算法的局限性。金宝搏官方网站同时,你有感觉玩一个游戏,你必须进步。困难可以将非常困难。在相同的想法,你有Codejam竞争与小型和大型数据集。但是它的很多工作的创造者。
我是唯一一个认为测试用例49是不正确的?如何:
(1 | 0)
总是对的吗?1 |永远是1,但是1四维总是0。我缺少什么?
不要紧。我看到MATLAB给出&优先于|。这很打击我的解决方案从水里拉出来。想重新开始。顺便说一句,为什么科迪不让我删除我的评论吗?
这个问题忽略了算符优先,恕我直言,这当然是邪恶的。我所知道的所有编译器使用运算符优先级,因为如果他们不导致矛盾。测试用例49和51演示了这一点:(1 | 0)是一个同义反复只有评估从右到左(1 | 0 - > 1,但是1四维- > 0)、(一个~ | 1)是一个同义反复只有评估从左到右(0 | 1 - > 1,但& 1 - > 0)。假设和我有相同的优先级。
它将会是一个好的措施增加运算符优先级的问题描述自作者请求解析器。我们不能假设每一种语言都是一样的。恕我直言,同义反复是真的不管我们评估它的顺序如| ~ ~ 0。如果有一种方法可以让它假,那么它不是一个同义反复。和不同的语言可以评估不同。
解决方案的评论
-
1评论
我认为这个解决方案会失败”| ~ B”(另一方面,+ 1寻找技巧解决方案在我认为是一个相当完整的testsuite,至少对于A / B变量情况!)
-
1评论
使用str2num是一个黑客绕过规则,禁止使用eval。
-
2的评论
我认为测试16是错误的,谁能确认吗?
它是正确的,因为一个| ~其他字母不会因为是或问题。
-
1评论
Freepass仍活跃? ? ?
-
1评论
如果有问题,应该允许“eval”被使用,这应该是一个。
-
1评论
这将会失败“A | ~”
-
1评论
好赶上(这个解决方案会失败”~“)
-
2的评论
隐式扩张增值!
虽然是一个创造性的解决方案,自eval函数应该被放逐str2num科迪是不允许的。