ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Javaの課題丸投げコミュの二次元配列について 三つ目

  • mixiチェック
  • このエントリーをはてなブックマークに追加
二次元配列で9×9の配列を作り1〜3、4〜6、7〜9の3行を一つのかたまりとして、ランダムに入れ替えるプログラムを教えてください。お願いします。

111111111
222222222
333333333
444444444
555555555
666666666
777777777
888888888
999999999

777777777
888888888
999999999
444444444
555555555
666666666
111111111
222222222
333333333
こんな感じにしたいです。
ランダムでお願いします。

コメント(3)

import java.util.*;

public class Mixi {
  public static void main(String[] args) {

    int[][] tmp = {
      { 1, 1, 1, 1, 1, 1, 1, 1, 1 },
      { 2, 2, 2, 2, 2, 2, 2, 2, 2 },
      { 3, 3, 3, 3, 3, 3, 3, 3, 3 },
      { 4, 4, 4, 4, 4, 4, 4, 4, 4 },
      { 5, 5, 5, 5, 5, 5, 5, 5, 5 },
      { 6, 6, 6, 6, 6, 6, 6, 6, 6 },
      { 7, 7, 7, 7, 7, 7, 7, 7, 7 },
      { 8, 8, 8, 8, 8, 8, 8, 8, 8 },
      { 9, 9, 9, 9, 9, 9, 9, 9, 9 },
    };
    
    List<int[][]> groupList = new ArrayList<int[][]>();
    // 3つずつに区切った配列をListに格納
    groupList.add(Arrays.asList(tmp).subList(0, 3).toArray(new int[3][])); // 1〜3
    groupList.add(Arrays.asList(tmp).subList(3, 6).toArray(new int[3][])); // 4〜6
    groupList.add(Arrays.asList(tmp).subList(6, 9).toArray(new int[3][])); // 7〜9
    // 混ぜる
    Collections.shuffle(groupList);
    // tmpを初期化
    tmp = new int[tmp.length][];
    // tmpにListの中の配列をコピーする
    int idx = 0;
    for(int[][] tm : groupList) {
      System.arraycopy(tm, 0, tmp, idx, tm.length);
      idx += tm.length;
    }

    // debug
    for(int[] tm : tmp) {
      for(int t: tm) {
        System.out.print(t + " ");
      }
      System.out.println();
    }
  }
}
単純に1回入れ替えるだけの場合。n回入れ替えたいならn回ループさせる。

import java.util.*;

public class Mixi {
  public static void main(String[] args) {
    int[][] data = {
      {1, 1, 1, 1, 1, 1, 1, 1, 1},
      {2, 2, 2, 2, 2, 2, 2, 2, 2},
      {3, 3, 3, 3, 3, 3, 3, 3, 3},
      {4, 4, 4, 4, 4, 4, 4, 4, 4},
      {5, 5, 5, 5, 5, 5, 5, 5, 5},
      {6, 6, 6, 6, 6, 6, 6, 6, 6},
      {7, 7, 7, 7, 7, 7, 7, 7, 7},
      {8, 8, 8, 8, 8, 8, 8, 8, 8},
      {9, 9, 9, 9, 9, 9, 9, 9, 9},
    };
    Random random = new Random();
    int a = random.nextInt(3) * 3;
    int b = ((a / 3 + 1 + random.nextInt(2)) % 3) * 3;
    int[][] tmp = {data[a+0], data[a+1], data[a+2]};
    data[a+0] = data[b+0];
    data[a+1] = data[b+1];
    data[a+2] = data[b+2];
    data[b+0] = tmp[0];
    data[b+1] = tmp[1];
    data[b+2] = tmp[2];

    for (int[] line : data) {
      for (int i : line) {
        System.out.print(i + " ");
      }
      System.out.println();
    }
  }
}
b = (a + 3 + random.nextInt(2) * 3) % 9;
でもいいか。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Javaの課題丸投げ 更新情報

Javaの課題丸投げのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング