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());
}
}