/************************************************************************* * Compilation: javac Permutation.java * Execution: java Permutation N * * Prints a pseudorandom permution of the integers 0 through N. * * % java Shuffle 6 * 5 0 2 3 1 4 * . * . . . . * . . . . * . * . . * . . . * . . . * . . * . . . . . * * * . . . . . * *************************************************************************/ public class Permutation { public static void main(String[] args) { int N = Integer.parseInt(args[0]); int[] a = new int[N]; // insert integers 0..N-1 for (int i = 0; i < N; i++) a[i] = i; // shuffle for (int i = 0; i < N; i++) { int r = (int) (Math.random() * (i+1)); // int between 0 and i int swap = a[r]; a[r] = a[i]; a[i] = swap; } // print permutation for (int i = 0; i < N; i++) System.out.print(a[i] + " "); System.out.println(""); // print checkerboard visualization for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { if (a[j] == i) System.out.print("* "); else System.out.print(". "); } System.out.println(""); } } }