Chapter 6

/*1*/import java.util.Arrays;

public class MyClass {

public static void main(String []args) {

int[] n = new int[]{1,2,3,4,5,6,7,8,9,10};

System.out.println(n); //toString

for (int i=0; i< n.length; i++) System.out.print(n[i]+" ");

System.out.println();

for (int i : n) System.out.print(i+" ");

System.out.println();

System.out.println(Arrays.toString(n));

}

}

/*2*/import java.util.ArrayList;

import java.util.Iterator;

public class MyClass {

public static void main(String []args) {

ArrayList<Integer> x = new ArrayList<Integer>();

for (int i=1; i<=10; i++) x.add(i);

System.out.println(x);

for (int i=0; i<10; i++) System.out.print(x.get(i)+" ");

System.out.println();

for (int i : x) System.out.print(i+" ");

System.out.println();

Iterator<Integer> it = x.iterator();

while (it.hasNext()) System.out.print(it.next()+" ");

System.out.println();

}

}

/*3*/import java.util.LinkedList;

import java.util.ListIterator;

public class MyClass {

public static void main(String []args) {

LinkedList<Integer> x = new LinkedList<Integer>();

for (int i=1; i<=10; i++) x.add(i);

System.out.println(x);

for (int i=0; i<10; i++) System.out.print(x.get(i)+" ");

System.out.println();

for (int i : x) System.out.print(i+" ");

System.out.println();

ListIterator<Integer> it = x.listIterator();

while (it.hasNext()) System.out.print(it.next()+" ");

System.out.println();

}

}

/*4*/import java.util.Arrays;

public class MyClass {

public static void main(String []args) {

int[][] x = new int[5][5];

for (int i=0; i<x.length; i++)

for (int j=0; j<x[i].length; j++)

x[i][j] = i*5+j+1;

for (int i=0; i<x.length; i++)

for (int j=0; j<x[i].length; j++)

System.out.print(x[i][j]+" ");

System.out.println();

for (int[] i : x)

for (int j : i) System.out.print(j+" ");

System.out.println();

System.out.println(Arrays.deepToString(x));

}

}

/*5*/import java.util.ArrayList;

import java.util.Iterator;

public class MyClass {

public static void main(String []args) {

ArrayList<ArrayList<Integer>> x = new ArrayList<ArrayList<Integer>>();

for (int i=0; i<5; i++) {

x.add(new ArrayList<Integer>());

for (int j=0; j<5; j++) x.get(i).add(i*5+j+1);

}

System.out.println(x);

for (int i=0; i<5; i++)

for (int j=0; j<5; j++)

System.out.print(x.get(i).get(j)+" ");

System.out.println();

for (ArrayList<Integer> i : x)

for (int j : i) System.out.print(j+" ");

System.out.println();

Iterator<ArrayList<Integer>> it = x.iterator();

while (it.hasNext()) {

Iterator<Integer> it2 = it.next().iterator();

while (it2.hasNext()) System.out.print(it2.next()+" ");

}

System.out.println();

}

}

/*6*/import java.util.Arrays;

public class MyClass {

public static int[] maxMin(int[] ar) {

int[] x = new int[]{Integer.MIN_VALUE, Integer.MAX_VALUE};

for (int i=0; i<ar.length; i++) {

if (ar[i] < x[1]) x[1] = ar[i];

if (ar[i] > x[0]) x[0] = ar[i];

}

return x;

}

public static void main(String []args) {

System.out.println(Arrays.toString(

maxMin(new int[]{5,63,7,19,21, 3,45,23,77})));

}

}

/*7*/import java.util.Arrays;

public class MyClass {

public static double[] solve(double a, double b, double c) {

double x = b*b-a*c*4.0;

double z = -b/(2.0*a);

if (x < 0) {

double y = Math.sqrt(-x)/(2.0*a);

return new double[]{z, y, -y};

}

x = Math.sqrt(x)/(2.0*a);

return new double[]{z+x, z-x};

}

public static void main(String []args) {

System.out.println(Arrays.toString(solve(1, 6, 9)));

System.out.println(Arrays.toString(solve(-2, 2, 1)));

System.out.println(Arrays.toString(solve(7, 4, 8)));

System.out.println(Arrays.toString(solve(1, 12, 11)));

System.out.println(Arrays.toString(solve(-11, -12, -41)));

}

}

/*8*/public class MyClass {

public static int runLength(int[] ar, int start) {

int count = 0, zero = ar[start];

for (; start<ar.length && ar[start]==zero; start++) count++;

return count;

}

public static int index(int[] ar) {

int i=0, spot=-1, n=0;

while (i < ar.length) {

int j = runLength(ar, i);

if (j > n) {spot=i; n=j;};

i += j;

}

return spot;

}

public static void main(String []args) {

int[] x = new int[]{1, 2, 5, 5, 3, 1, 2, 4, 3, 2, 2, 2, 2, 3, 6, 5, 5, 6, 3, 1};

System.out.println(index(x));

}

}

/*9*/import java.util.Arrays;

public class MyClass {

public static int[][] magic(int n) {

int[][] arr = new int[n][n];

int prevRow, prevCol;

int row = n - 1;

int col = n / 2;

for (int k = 1; k <= n*n; k++) {

prevRow = row;

prevCol = col;

arr[row++][col++] = k;

if (row == n) row = 0;

if (col == n) col = 0;

if (arr[row][col] != 0) {

row = prevRow-1;

col = prevCol;

}

} //for k

return arr;

}

public static void main(String []args) {

int[][] x = magic(7);

for (int i = 0; i < x.length; i++)

System.out.println(Arrays.toString(x[i]));

}

}

/*10*/import java.util.Arrays;

public class MyClass {

static void aiMerge(int x[], int r, int n1, int y[], int s, int n2, int out[], int t) {

while (n1 > 0 && n2 > 0)

if (x[r] <= y[s]) {

out[t++]=x[r++]; n1--;

} else {

out[t++]=y[s++]; n2--;

}

if (n1 > 0) System.arraycopy(x,r,out,t,n1);

else System.arraycopy(y,s,out,t,n2);

}


public static void sort(int x[], int r, int n1, int out[], int t) {

if (n1 == 1) out[t] = x[r];

else if (n1 == 2) {

if (x[r] <= x[r+1]) {out[t++] = x[r++]; out[t] = x[r];}

else {out[t++] = x[r+1]; out[t] = x[r];}

} else {

sort(x, r, n1/2, out, t);

sort(x, r+n1/2, n1-n1/2, out, t+n1/2);

aiMerge(out, t, n1/2, out, t+n1/2, n1-n1/2, x, r);

if (n1 != x.length) System.arraycopy(x,r,out,t,n1);

}

}

public static void main(String []args) {

int[] x = new int[]{5,7,9,13,18,24,34,56};

int[] y = new int[]{1,3,6,11,19,22,33,44,55,66,77};

int[] z = new int[x.length+y.length];

aiMerge(x, 0, x.length, y, 0, y.length, z, 0);

System.out.println(Arrays.toString(z));

int[] r = new int[]{17,8,3,5,6,11,14,21,6,9,34,56,19,42,55,67,98,76,43,21,22};

z = new int[r.length];

sort(r, 0, r.length, z, 0);

System.out.println(Arrays.toString(r));

}

}

/*11*/import java.util.LinkedList;

import java.util.ListIterator;

public class MyClass {

public static void main(String []args) {

int n = 1000;

LinkedList<Integer> primes = new LinkedList<Integer>();

for (int i=2; i<=n; i++) primes.add(i);

int sqrt = (int)Math.sqrt(n); //limit of test

int i = 0;

while (true) {

ListIterator<Integer> scan = primes.listIterator();

int j = i++;

while (j-- > 0) scan.next(); //get i th prime in list

int test = scan.next();

if (test > sqrt) break;

while (scan.hasNext()) { //remove multiples

if (scan.next() % test == 0) scan.remove();

}

} //while true

System.out.println(primes+" "+primes.size());

}

}