是否有一种类似代数的工具可以将你的代码简化为高效的代码
Is there an algebraic like tool that can reduce your code down to something efficient?
例如,我正在进行http://eloquentjavascript.net's练习,其中一个教程是创建输出:
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
给出的答案是:
var size = 8;
var board = "";
for (var y = 0; y < size; y++) {
for (var x = 0; x < size; x++) {
if ((x + y) % 2 == 0)
board += " ";
else
board += "#";
}
board += "'n";
}
console.log(board);
我的回答是:
var tile = "#";
var piece = "";
var switche = false;
var columns = prompt("enter number of columns","");
var rows = prompt("enter number of rows","");
var lastPiece = "blank";
for (var x = 0; x < columns; x++)
{
if (lastPiece == "#")
{
piece += tile;
lastPiece = "blank";
}
else if (lastPiece == "blank")
{
piece += " ";
lastPiece = "#";
}
var row1 = piece;
}
var lastPiece = "#";
var piece = "";
for (var x = 0; x < columns; x++)
{
if (lastPiece == "#")
{
piece += tile;
lastPiece = "blank";
}
else if (lastPiece == "blank")
{
piece += " ";
lastPiece = "#";
}
var row2 = piece;
}
for (var i = 1; i <= rows; i++)
{
if (!switche){
document.write(' '+ row1 + '<br>');
switche = true;}
else if(switche){
document.write(' ' + row2 + '<br>');
switche = false;}
}
我没有经验,但我已经可以看到,将来会有很多我写不必要的代码。是否有一些好的方法或工具来防止这种情况?
(Un?)幸运的是,没有工具可以优化一些任意的JS代码,你的大脑是你真正需要的(正如Greg Hewgill已经说过的)。
作为一个挑剔的选择,下面是一个代码,它应该比你练习中给出的答案更有效。
var line = ' # # # #',
n,
str = '';
for (n = 0; n < 8; n++) {
str += ((n % 2 === 0) ? line : line.trim()) + ''n';
}
console.log(str); // Could be also put as element.innerHTML when replacing 'n with <br> and replacing the leading space in line with
我想这取决于你所说的高效是什么意思。很明显,打印输出是"最快的",你可以这样做:
console.log (" # # # #' n # # # # # # # # ' n ' n ' n # # # # # # # # # # # # ' n ' n ' n # # # # # # # # # # # # ' n ' n ' n # # # # # # # # # # # # ' n ' n ' n # # # # # # # # # # # # ' n ' n # # # #")//不会打这个速度。
但是,您可以选择使用另一种表示效率的含义:程序占用了多少空间。理想情况下,我们希望它比输出占用更少的空间。上面的程序虽然非常快,但比输出多占用了13个字符(那么为什么不直接存储输出呢?)如果我们稍微调整一下:
a=" # # # #'n# # # #'n";console.log([…]. join ()
现在,我们已经从原始输出大小中节省了整整16个字符。当然,这比我们最初的"只打印答案"的解决方案要慢。
对于一台计算机来说,总是能够找出我们的最佳解决方案是"非常困难的"。但是,计算机有时可以将其优化到这一点,并且不需要更改实际代码(在底层)。
- 从桌面读取python文件时高亮显示代码
- 如何将函数包装在函数中以避免代码重复
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 货币代码为欧元-金额的格式不应包含小数
- Regex代码只允许一个空格
- 如何将屏幕分辨率乘以 80%,然后在代码中使用
- 从var向代码隐藏函数传递值
- 如何动态插入jquery代码
- 如何在php变量中嵌入JQuery代码
- 代码不会验证
- 如何从rails中的代码中删除新行( )
- Angularjs代码未在匿名函数中运行
- 更高效的回文代码
- 如何使JavaScript代码更高效
- 简单的javascript-如何使代码更高效
- 我如何在jQuery中组合这三个代码块,并将它们写得更优雅/更高效?
- 我如何将这个javascript逻辑代码编写成更高效/紧凑的方式
- 是否有一种类似代数的工具可以将你的代码简化为高效的代码
- JQuery:结合click / trigger元素来编写更高效的代码
- 如何高效地逐步完成jQuery代码