生成所有可能的单词(“ true”,“ false”)二进制组合

编程入门 行业动态 更新时间:2024-10-24 12:33:54
本文介绍了生成所有可能的单词(“ true”,“ false”)二进制组合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我正在寻找以下脚本的性能改进。我很确定它可以进行实质性的修改,因为它是我想到的第一件事,所以我做了它,这只是出于我要寻找的演示目的。

I am looking on performance improvement of the script below. I am pretty sure it can be substantially modified, I did it as it was first thing that came to my head and it is only for demonstration purposes on what I am looking for.

function pad(nn, width, z) { z = z || '0'; nn = nn + ''; return nn.length >= width ? nn : new Array(width - nn.length + 1).join(z) + nn; } var makeIntoBinary = function(ii, length) { return pad(ii.toString(2), length); } var makeIntoTrueFalse = function(binary) { var str = ''; for (iii = 0; iii < binary.length; iii++) { if (binary[iii] == '0') { str += ' false'; } else { str += ' true'; } }; console.log(str + ' ' + binary); } var runner = function(n) { var iter = Math.pow(2, n); for (i = 0; i < iter; i++) { makeIntoTrueFalse(makeIntoBinary(i, n)); } }

我要寻找的是生成单词集对于所有可能的组合,这些组合实际上是在执行上述二进制操作。 ( runner(2); 会产生 false false , false true , true假, true真),我正在寻找可以让我到达这一点的快速闪电算法。 / p>

What I am looking for is to generate sets of words for all possible combinations which is essentially doing the binary above. (runner(2); would produce false false, false true, true false, true true) I am looking for lightning fast algorithm that gets me to this point.

推荐答案

尝试直接操作位,而不进行多余的字符串转换。

Try manipulating bits directly, without extraneous string conversions.

function combinations(n) { var r = []; for(var i = 0; i < (1 << n); i++) { var c = []; for(var j = 0; j < n; j++) { c.push(i & (1 << j) ? 'true' : 'false'); } r.push(c.join(' ')); } return r; } r = combinations(prompt('size?')); document.write(JSON.stringify(r));

就记录而言,这可能会比较慢,但方法更好:

Number.prototype.times = function(fn) { var r = []; for(var i = 0; i < this; i++) r.push(fn(i)); return r; } function combinations(n) { return (1 << n).times(function(i) { return n.times(function(j) { return Boolean(i & 1 << j); }); }); }

更多推荐

生成所有可能的单词(“ true”,“ false”)二进制组合

本文发布于:2023-11-30 11:36:30,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1649826.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:组合   单词   true   false

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!