我正在做黑客等级问题。
function or(a, b){return (a || b);}
function acmTeam(topic) {
var arr = topic;
for(var i=0; i<arr.length; i++) {
var iItem = arr[i];
for(var j=i+1; j<arr.length; j++) {
var jItem = arr[j];
var orItem = or(iItem, jItem);
console.log(iItem);
console.log(jItem);
console.log('----');
console.log(orItem);
console.log();
}
}
}
var topic = [ '10101', '11100', '11010', '00101' ];
var out = acmTeam(topic);
我从here
复制了或门操作我想我有这样的事情。这似乎不是我所期望的门操作。有什么想法吗?
10101
11100
----
10101
10101
11010
----
10101
10101
00101
----
10101
11100
11010
----
11100
11100
00101
----
11100
11010
00101
----
11010
答案 0 :(得分:0)
首先使用parseInt将字符串变量转换为base 2变量,然后执行按位OR运算。
结果将以基数10的形式出现。因此,使用toString(2)
再次转换为base 2 function or(a, b){return (parseInt(a, 2) | parseInt(b,2)).toString(2);}
function or(a, b){return (parseInt(a, 2) | parseInt(b,2)).toString(2);}
function acmTeam(topic) {
var arr = topic;
for(var i=0; i<arr.length; i++) {
var iItem = arr[i];
for(var j=i+1; j<arr.length; j++) {
var jItem = arr[j];
var orItem = or(iItem, jItem);
console.log(iItem);
console.log(jItem);
console.log('----');
console.log(orItem);
console.log();
}
}
}
var topic = [ '10101', '11100', '11010', '00101' ];
var out = acmTeam(topic);
&#13;