【发布时间】:2013-09-10 14:59:35
【问题描述】:
所以我首先被要求创建一个函数来查找可能的组合给定一组 6 个数字,范围可以从 0 到 9 EDIT 请记住,用户会收到提示输入,因此输入可以更改或不同.. 换句话说,输入将是 123456 或 099384 END EDIT。此函数必须返回 3 位数结果的所有可能组合,同时使用输入的 6 位数重复次数。所以它会返回 111 112 113 等。
。我是 php/javascript 用户并选择了 javascript,以便它可以在浏览器中的离线文件上运行。
这是我在下面构建的,效果很好。
function findthree(nums) {
for (var i = 0; i < 10; i++) {
if (in_array(i, nums)) {
for (var ii = 0; ii < 10; ii++) {
if (in_array(ii, nums)) {
for (var iii = 0; iii < 10; iii++) {
if (in_array(iii, nums)) {
$('body').append('<div>' + i + '' + ii + '' + iii + '</div>');
}
}
}
}
}
}
}
function in_array(needle, haystack) {
var length = haystack.length;
for (var i = 0; i < length; i++) {
if (haystack[i] == needle) return true;
}
return false;
}
我的问题是..我将如何创建一个类似的函数来显示每个组合,除了“组合重复”。换句话说,该函数不会返回 211,因为 112 已经返回,并且不会返回 654,因为 456 已经返回。我打算尝试使用 array_difference 函数,但无法完全弄清楚它是如何工作的。
提前感谢您的帮助。
在我选择的答案的帮助下找到答案
function findthreenodupe(nums) {
nums = $.distinct(nums);
nums.sort(function(a, b) {
return a - b
});
alert(nums);
for (var i = 1; i < 10; i++) {
if (in_array(i, nums)) {
for (var ii = i; ii < 10; ii++) {
if (in_array(ii, nums)) {
for (var iii = ii; iii < 10; iii++) {
if (in_array(iii, nums)) {
$('body').append('<div>' + i + '' + ii + '' + iii + '</div>');
}
} // end of iii for loop
} // end of ii for loop
} // end of i for loop
}
}
}
【问题讨论】:
-
如果这是您的要求,只需返回所有数字都相同的那些组合。
标签: javascript arrays algorithm math for-loop