与流行的代码高尔夫挑战相反,这里展示了许多常客的天才,我希望看到这种天才以相反的方式得到体现。
挑战是成功执行“Hello World”,特别关注过于复杂的问题。不是冗长,不是晦涩,只是纯粹的草率/过于复杂。
将《Daily WTF》视为灵感。
function mb2($o){return (int)($o*2);}
$alphabet = str_split("abcdefghijklmnopqrstuvwxyz");
$alphabet[] = " ";
$output = "";
for ($i = 0; $i <= 10; $i++)
switch (mb2($i*.5)) {
case 0: $output = $output . $alphabet[07]; break;
case 1: $output = $output . $alphabet[04]; break;
case 2: $output = $output . $alphabet[11]; break;
case 3: $output = $output . $alphabet[11]; break;
case 4: $output = $output . $alphabet[14]; break;
case 5: $output = $output . array_pop($alphabet); break;
case …Run Code Online (Sandbox Code Playgroud) 我正在研究可以帮助我编写更小但更复杂的代码的算法.我可以设计一个20行的算法,而不是编写150行if-else语句.问题是很多这些算法都很复杂,需要大量的数学才能理解它们.我也是这里唯一了解他们的人.
为了代码的可维护性,像其他人一样编写代码会更好,还是使用算法更好?
algorithm maintainability cyclomatic-complexity code-complexity
只是好奇,我想知道你所经历过的所有程序员或新手(像我一样)都做了什么.那么你写的最复杂的程序是什么?
我发现维护性指数(MI)的推荐值如下:
这些价值取决于技术吗?例如,对于大型机来说,70的值是好的,但对于Java来说难以维护吗?
可以使用独立于技术的相同尺度吗?
我的项目是ES6(webpack + babel).柏拉图是伟大的,但不与ES6工作还没有.我看了一下escomplex和一系列相关软件包,但看起来作者不再维护它了,似乎它不支持ES6.
我正在使用ESLint复杂性规则至少警告我是否存在问题(它设置为在6处发出警告),但它与漂亮的报告不同.
有什么建议?
我知道两个完整矩阵乘法的下界是Ω(n ^ 2).矩阵乘法
我一直试图用问题转换方法证明两个下三角矩阵乘法的下界.
我最初的想法是(1)变换下三角矩阵,(2)估计这种变换的时间复杂度.
T(lower_triangular_matrix_multiplication(n))+O(lower_triangular_matrix_transformation(n))>?(full_matrix_multiplication(n)) = ?(n^2)
Run Code Online (Sandbox Code Playgroud)
现在,我只需要证明O(lower_triangular_matrix_transformation(n)),我需要使三角矩阵成为一个完整的矩阵,所以为了简单起见,我只是让这个三角矩阵乘以它自身的变化,比如转置.
原因是下三角矩阵的平方仍然是下三角矩阵,下三角矩阵乘以其转置变化是"全矩阵".
所以我只需要分析三角矩阵的复杂性乘以其转置变化.
任何人都可以表明我的想法是否"合理"?
我开始在谷歌上通过示例学习GWT ,我的第一个结论是:代码太多了
像这样:
stocks.add(symbol);
stocksFlexTable.setText(row, 0, symbol);
stocksFlexTable.setWidget(row, 2, new Label());
stocksFlexTable.getCellFormatter().addStyleName(row, 1,
"watchListNumericColumn");
stocksFlexTable.getCellFormatter().addStyleName(row, 2,
"watchListNumericColumn");
stocksFlexTable.getCellFormatter().addStyleName(row, 3,
"watchListRemoveColumn");
Run Code Online (Sandbox Code Playgroud)
GWT是否有任何扩展来减少代码大小和简化创建GWT表单?
我的朋友在接受采访时遇到了一个问题,他被告知有一个O(n)解决方案.但是,我们都不能想到它.这是一个问题:
有一个字符串,它包含just,(并)找到最长有效括号子串的长度,它应该很好地形成.
例如")()())",最长的有效括号是()(),长度是4.
我用动态编程想出来了,但它不是O(n).有任何想法吗?
public int getLongestLen(String s) {
if (s == null || s.length() == 0)
return 0;
int len = s.length(), maxLen = 0;
boolean[][] isValid = new boolean[len][len];
for (int l = 2; l < len; l *= 2)
for (int start = 0; start <= len - l; start++) {
if ((s.charAt(start) == '(' && s.charAt(start + l - 1) == ')') &&
(l == 2 || isValid[start+1][start+l-2])) …Run Code Online (Sandbox Code Playgroud) language-agnostic algorithm dynamic-programming code-complexity
Landscape.io提供了很好的Python代码测试,基于PEP8,PyLint,McCabe等.
我的一些解析器方法包含大的开关块,所以我想禁用所选方法的McCabe测试MC0001.我怎样才能做到这一点?
我为PyLint找到了这个语法:
for file in get_files(): # pylint:disable=redefined-builtin
Run Code Online (Sandbox Code Playgroud)
资料来源:https://docs.landscape.io/suppressing.html
...但没有显示语法mccabe.根据我的Google研究,可以为项目中的所有文件禁用McCabe规则,但这不是我的目标.这是一个全局禁用MC0001的yaml文件:
mccabe:
disable:
- MC0001
Run Code Online (Sandbox Code Playgroud)
我正在尝试集成lizard来跟踪 sonarqube 上 Android 应用程序的代码复杂性。用于从 lizard 获取复杂性报告的命令是:
\nlizard src/main -x"./test/*" -x"./androidTest" --xml >lizard/lizardReport.xml \nRun Code Online (Sandbox Code Playgroud)\n在build.gradle应用程序的文件中,sonarqube 属性配置如下:
lizard src/main -x"./test/*" -x"./androidTest" --xml >lizard/lizardReport.xml \nRun Code Online (Sandbox Code Playgroud)\r\n在此设置结束时,我运行命令gradle sonarqube来构建项目并运行声纳设置,但在 sonarqube 仪表板上查看报告时,没有发现代码复杂性的趋势。
我在这里缺少什么吗?
\ncomplexity-theory android code-complexity android-studio sonarqube
code-complexity ×10
algorithm ×2
android ×1
architecture ×1
babeljs ×1
ecmascript-6 ×1
gwt ×1
gwt-mvp ×1
landscape.io ×1
lower-bound ×1
mvp ×1
plato ×1
python ×1
sonarqube ×1
webpack ×1