私はCodeFightsでJavaScript問題のコードを記述しようとしています。配列の1対の要素を入れ替え、それらが等しいかどうかを調べるにはどうすればいいですか?
1つの配列の要素のスワップで別の配列を取得できる場合、2つの配列は同様に呼び出されます。
これはこれまで私が思い付いたことです。私が遭遇した問題は、このコードがすべてのテストに合格していないことです。
function areSimilar(a, b) {
if (a.join() === b.join()) {
return true;
}
for (var i = 0; i < a.length-1; i++) {
for (var j = 1; j < a.length; j++) {
if (swap(a, i, j).join()=== b.join()) {
return true;
}
}
}
return false;
}
function swap(target, start, end) {
var temp = target[start];
target[start] = target[end];
target[end] = temp;
return target;
}
私は(if文の後)10行目に次のコードを追加した場合、それはテストの過去ではなく、出力時間行います。誰かが正しい方向に私を指すことができれば
console.log(swap(a,i,j));
を何を研究するのか、なぜこれが起こっているのか、私はそれを高く評価します。
です。各スワップの前に配列のコピーを作成する必要があります。 – Barmar
すべての可能な順列を試すことは、この課題を解決するうえで貧弱な方法です。もっとスマートなものを考えてみてください。(コンピュータなしで2枚のカードがあれば、どうすればいいでしょうか?) – georg