2011-03-01 18 views
3

javascriptで一意の列、行のペアのリストを生成する(個別に印刷する)方法は? 私は2つの変数セット、いくつかの列といくつかの行を持っています。私は各ペアを1回だけ表示したいだけで、0を入れることはできません。 3行3列あるとしたら、私は望むでしょう:一意の行、列のランダムなリストを生成するjavascript

 
1,2 
3,1 
2,3 
1,3 
1,1 
2,1 
3,2 
2,2 
3,3 

すべてランダムな順序です。どうすればいい?

+0

: "印刷" の要件を忘れましたか?グリッド内のすべての行と列のペアは何らかの順序で書き出されますか? –

+0

正確に。ランダムな順序で、最も重要です。 –

答えて

1

なく、私のアルゴリズムは

<script type="text/javascript"> 

     var array = Array(); 

     var i,j; 

     for(i=1; i <= 3; i++){ 
      for(j=1; j<=3; j++){  
       array.push(j+', '+i); 
      } 
     } 
     var newarr = shuffle(array); 
     console.log(newarr); 
     document.write(newarr); 

    function shuffle(array) 
    { //v1.0 
     for(var j, x, i = array.length; i; j = parseInt(Math.random() * i), x = array[--i], array[i] = array[j], array[j] = x); 
     return array; 
    }; 
</script> 
+0

ありがとう、ありがとう、ありがとう!チャームのように働いた! –

+0

@レティシア・メイヤーようこそ –

1

すべての可能な座標ペアの配列を生成する必要があります。shuffling algorithmを使用してランダムな順序に配置してから印刷してください。

+0

その関数のjavascriptバージョンはどこですか?また、私はjavascriptで本当にnoobです、あなたは配列を生成し、それをシャッフルの例を投稿できますか? –

+0

シャッフルについてはhttp://stackoverflow.com/questions/962802/is-it-correct-to-use-javascript-array-sort-method-for-shuffling/962890#962890をご覧ください。私は、JavaScriptを配列を作成するコードを記述するのに十分には知らない。 –

+0

Ok ...私は配列の作成方法を知りたかった。あなたの助けをありがとう、エレミヤ! –

0
Array.prototype.shuffle= function(force){ 
    var i, temp, L= this.length, 
    A= force? this: this.concat(); 
    while(--L){ 
     i= Math.floor(Math.random()*L); 
     temp= A[i]; 
     A[i]= A[L]; 
     A[L]= temp; 
    } 
    return A; 
} 

(オプション)パラメータの目的は、配列自体をシャッフルすることです。 デフォルトでは、配列はシャッフルされませんが、シャッフルされたコピーが返されます。

0

が、これは動作するはずです:

// New Array 
a = []; 
// 3 rows, 3 columns 
c = 3; 
r = 3; 
// fill array with every unique possibility 
for(var i = 1; i <= r; i++) { 
    for(var j = 1; j <= c; j++) { 
    a[a.length] = "" + i + "," + j; 
    } 
} 
// random pick into another array 
result = []; 
a_len = a.length; 
for(var i = 0; i < a_len; i++) { 
    result[result.length] = a.splice(Math.floor(Math.random()*a.length), 1)[0]; 
} 

あなただけだけではなく、結果[結果」の印字ん配列でそれらを持つのではなく、結果を印刷したい場合.length] "となります。ここで

1

は一つの方法です:

var answer = (function(width,height) { 
    var result = []; 
    for (var i = 1; i <= width; i++) { 
    for (var j = 1; j <= height; j++) { 
     result.push([i, j]); 
    } 
    } 
    return result.sort(function(a, b) { 
    return 0.5 - Math.random(); 
    }); 
}(3,3)); // enter width/height here, 1-indexed 

編集:何がしたいです

for(var k = 0, len = answer.length; k < len; k++){ 
    console.log(answer[k]); // or your preferred definition of "print" 
} 
関連する問題