intの配列をチャンクでシャッフルしようとしていますが、これまでのところほとんど成功していません。intのチャンクをintのシャフリング
私は0から17
array = new int[18];
for(int i = 0; i < 18; i++){
array[i] = i;
}
そして、私はintの配列は、0のように起動し
int[] chunks = {2, 3, 10, 3};
をシャッフルしたいintの各チャンクの配列に18個のintの配列を持っています1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17 2のチャンク配列の最初の要素が選択されると、最初の2つの要素配列の要素である0と1が選択されます。 1が配列の最後に移動し、0が続きます。
今順序は第二のために2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,0,1
です要素の値が3であるため2,3,4が選択され、0と1の上に置かれます。
今度は5,6,7,8,9、 intの配列が完全にチャンクの全て
アレイでシャッフルされるまでこれが継続10,11,12,13,14,15,16,17,2,3,4,0,1
チャンクで完全にシャッフルされているのは15,16,17,5,6,7,8,9,10,11,1です2,13,14,2,3,4,0,1
研究
は、私はこれをプログラミングしようとしたこれまでに
for(int i = 0; i < chunks[0] i++) {
int first = array[0];
System.arraycopy(array, 1, array, 0, array.length-1);
array[array.length - 1] = first;
}
とされている方法を更新
これは、私が今作業しているコードは、次の結果を得ています。 10,11,12,13,14,15,3,4,5,6,7,8,9,1,1,1,1,1 、代わりに 15,16,17,5,6,7,8,9,10,11,12,13,2,4,2,3,4,0,1
012の代わりにint[] array2 = array.clone();
int temp = array2[0];
int chunkIndex = 0;
int count = 0;
int chunkCount = 0;
//Loops 4 times
for(int i = 0; i < chunks.length; i++) {
//Loops as many times for the chunk element
while(chunks[i] > count) {
for(int k = 1; k < array2.length; k++) {
//Move all the elements back
array2[k-1] = array2[k];
}
chunkIndex = array2.length-1 - chunkCount;
array2[chunkIndex] = temp;
temp = array2[0];
count++;
}
//Increment the limit
chunkCount += chunks[i];
//System.out.println(chunkCount);
}
ご迷惑をおかけして申し訳ございません。
ありがとうございます。
これまでに試したことがあるコードを教えていただければ役に立ちますか? –
'for'ループの文法エラーでさえ、これは' int'に '配列 'を割り当てる最後の行のためにコンパイルされません('配列[...] 'は' int' ) –
はい、あなたは正しい、それは私の部分のミスタイプだった。私は配列ではなく最初に置くことを意味します。 – user221