总结难题:删除行和列从二进制矩阵

第一个难题(点击这里)是一个巨大的成功添加了33个评论今天在我写这篇文章。我想去评论和代码中的一些要点,人们提出了批评。

首先,我想说,有几个人发布代码,解决了这个问题。我不想进入任何的代码的细节,这是在评论区(点击这里]。我想以此为理由提出一些编码哲学。

  • 许多人没有完全测试他们的解决方案和经常失败的边界情况。金宝搏官方网站
  • 很难完全测试任何算法,特别是当答案是不知道,但是你怎么知道如果你的答案是正确的如果你不知道答案吗?我测试了所有提交的代码,通常只是一群随机测试用例运行导致“解决方案”,没有意义。金宝搏官方网站在这个谜题,一些解决方案带回来的答案像“删金宝搏官方网站除3 5 5行”。这是一个错误,因为你不能把同一行两次。在其他情况下,返回的矩阵有一个所有零列,所以这项工作还没有完成。

    很多测试用例运行很有帮助

  • 代码是“太聪明”
  • 我知道这里有一些非常聪明的程序员,而且有趣的是找到一个聪明的的一部分,简洁的方式解决代码的行数。我们有专门的竞赛,挑战过去。

    当我编码“真实的”,我知道其他人可能需要阅读和理解代码。那别人可能是在几周后我忘记了一切的代码!我喜欢有描述性的变量名,容易理解算法。

    我宁愿有十行代码易于理解,而不是五行,将我十分钟来理解。更简单、更直观的算法、边界情况的不太可能会失败。

    有时你想要的“聪明”代码效率内存或执行速度的原因。我的思想是把代码工作一次,然后概要文件看瓶颈在哪里。修复那些缓慢的地区,对执行速度只有在需要牺牲可读性。没有必要让投机改进的加速代码不需要。

  • 用手解决问题
  • 有些人误解了问题。我经常会用手解决问题在白板所以我相信我理解我打算使用的问题和解决方案。可以用手解决整个问题。

    许多问题,MATLAB用户正在不能由手工完成。然而,工程是把复杂问题分解成的艺术,可以解决的。这个问题最初从MATLAB用户来找我,和我强烈怀疑这只是一小部分的更大的问题解决。这是解决和测试后,他可以封装到一个MATLAB函数而不是担心了!

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。