そのため、0〜9の範囲の6つの数字のセットを指定して、可能な組み合わせを見つける関数を作成するように最初に求められました編集入力が変更または異なる可能性があるため、ユーザーには入力のプロンプトが表示されることに注意してください。つまり、入力は 123456 または 099384 END EDITになります。この関数は、入力された 6 桁を繰り返し可能な回数使用しながら、3 桁の結果に対して可能なすべての組み合わせを返す必要があります。したがって、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;
}
私の質問は..「組み合わせの重複」を除くすべての組み合わせを表示する同様の関数を作成するにはどうすればよいですか。つまり、関数は 112 が既に返されているため 211 を返しません。また、456 が既に返されているため、654 は返されません。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
}
}
}