/*1*/import java.awt.Rectangle;
public class MyClass {
public static class BetterRectangle extends Rectangle {
BetterRectangle(int x,int y, int width, int height) {
super(x, y, width, height);
}
public int getArea() {
int area = width * height;
return area;
}
public int getPerimeter() {
int perim = 2* (width + height);
return perim;
}
}
public static void main(String []args) {
BetterRectangle r = new BetterRectangle(5,5,1,3);
System.out.println(r);
System.out.println("Area: " + r.getArea() + " should be 3");
System.out.println("Perimeter: " + r.getPerimeter() + " should be 8");
}
}
/*2*/import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class MyClass {
public static class Item { //Inner class Item
private String name;
private int quantity;
public Item(String itemName, int count) {
name = itemName;
assert(count >= 0);
quantity = count;
}
public int compareTo(String tag) {
return name.compareTo(tag);
}
public int compareTo(Item it) {
return name.compareTo(it.name);
}
public int add(int count) {
quantity += count;
assert(quantity >= 0);
return quantity;
}
public String toString() {
return name + "/" + quantity;
}
}
public static class Bag {
ArrayList<Item> inventory; //Array list of items
public Bag() { //Bag class constructor
inventory = new ArrayList<Item>();
}
public Item find(String name) { //Checks for duplicate items
for (int i = 0; i < inventory.size(); i++) {
if (inventory.get(i).compareTo(name)==0) return inventory.get(i);
}
return null;
}
public void add(String itemName, int count) { //Adds new Items to the arraylist
Item result = find(itemName);
if (result == null) inventory.add(new Item(itemName, count));
else result.add(count);
}
public void add(String itemName) {
add(itemName, 1);
}
public String toString() {
Collections.sort(inventory, new Comparator<Item>() {
public int compare(Item it1, Item it2) {
return it1.compareTo(it2);
}
});
return inventory.toString();
}
}
public static void main(String []args) {
Item x = new Item("apple", 3);
System.out.println(x);
Bag b = new Bag();
b.add("candy");
b.add("apple");
b.add("pizza");
b.add("candy", 4);
b.add("bread");
b.add("apple");
b.add("cola");
System.out.println(b);
}
}
/*3*/import java.util.ArrayList;public class MyClass {
public interface Circuit {
double getResistance();
}
public static class Resistor implements Circuit {
private double resistance;
public double getResistance() {
return resistance;
}
public Resistor(double r) {
resistance = r;
}
public String toString() {
return resistance + " ";
}
}
public static class Parallel implements Circuit {
ArrayList<Circuit> parallel = new ArrayList<Circuit>();
public Parallel add(Circuit f) {
parallel.add(f);
return this;
}
public double getResistance() {
double sum = 0;
for (int i = 0; i < parallel.size(); i++) {
sum += 1.0/parallel.get(i).getResistance();
}
return 1.0/sum;
}
public String toString() {
return getResistance() + " ";
}
}
public static class Serial implements Circuit {
ArrayList<Circuit> serialize = new ArrayList<Circuit>();
public Serial add(Circuit f) {
serialize.add(f);
return this;
}
public double getResistance() {
double sum = 0;
for (int i = 0; i < serialize.size(); i++) {
sum += serialize.get(i).getResistance();
}
return sum;
}
public String toString() {
return getResistance() + " ";
}
}
public static void main(String []args) {
Resistor resist = new Resistor(50);
System.out.println(resist);
System.out.println(resist.getResistance());
Serial serialResist = new Serial();
serialResist.add(resist);
serialResist.add(resist);
System.out.println(serialResist);
Parallel parallelResist = new Parallel();
parallelResist.add(serialResist);
parallelResist.add(resist);
System.out.println(parallelResist);
}
}
/*4*/public class MyClass {
public static class Fraction {
int num, denom; //0/n is zero
//a 0 denom freezes any fraction it touches
public Fraction(int numerator, int denominator) {
num = numerator;
denom = denominator;
}
public Fraction add(Fraction f) {
return add(0, num, denom);
}
public Fraction add(int whole, int num, int denom) {
num += whole * denom;
if (this.denom != denom) {
int n = this.num, d = this.denom;
this.num = this.num * denom + num * this.denom;
this.denom *= denom;
} else this.num += num;
return this;
}
public Fraction multiply(Fraction f) {
return multiply(0, num, denom);
}
public Fraction multiply(int whole, int num, int denom) {
this.num *= (whole * denom + num);
this.denom *= denom;
return this;
}
public Fraction reciprocal() {
if (denom == 0) return this;
int n = num;
num = denom;
denom = n;
return this;
}
public double toDouble() {
return num*1.0/denom;
}
public int compareTo(Fraction f) {
reduce();
f.reduce();
if (num == f.num && denom == f.denom) return 0;
double a = toDouble(), b = f.toDouble();
if (a <= b) return -1;
return 1;
}
public Fraction reduce() {
int d;
if (denom == 0) return this;
d = gcd(num, denom);
num /= d;
denom /= d;
if (num < 0 && denom < 0) {
num = -num; denom = -denom;
} else if (denom < 0) {
num = -num; denom = -denom;
}
return this;
}
public static int gcd(int a, int b) {
while (b != 0) {
int i = b;
b = a % b;
a = i;
}
return a;
}
public String toString() {
reduce();
String s = "";
int n = num;
if (num < 0) {
s = "-"; n = -n;
} else if (num ==0) return "0";
if (n == denom) return s+"1";
if (n > denom) {
int i = n/denom;
s += i+" ";
n -= i*denom;
}
s += n+"/"+denom;
return s;
}
}
public static void main(String args[]) {
Fraction f = new Fraction(3,4);
f.add(2,4,5).add(0,5,20);
System.out.println(f);
System.out.println(f.toDouble());
System.out.println(f.reciprocal());
System.out.println(f.reduce());
f = new Fraction(3,4);
f.multiply(1,1,2);
System.out.println(f);
f = new Fraction(-9,-4);
f.multiply(0,40,40);
System.out.println(f);
System.out.println(new Fraction(3,4).compareTo(new Fraction(15,20)));
System.out.println(new Fraction(3,4).compareTo(new Fraction(14,20)));
System.out.println(new Fraction(24,32).compareTo(new Fraction(16,20)));
}
}
/5*/import java.util.ArrayList;
public class MyClass {
public static class MatrixDiagonal<Type extends Number> {
public final int N;
ArrayList<Type> m;
public MatrixDiagonal(int N) {
assert(N>=0);
this.N=N;
m=new ArrayList<Type>(N);
for (int i=0; i<N; i++) {
m.add((Type)(Number)0);
}
}
public Type get(int i, int j) {
if (i==j) return m.get(i);
if (i<0 || i>=N) throw new ArrayIndexOutOfBoundsException();
if (j<0 || j>=N) throw new ArrayIndexOutOfBoundsException();
return (Type)(Number)0;
}
public void set(int i, int j, Type value) {
if (i==j) m.set(i,value);
else if (i<0 || i>=N) throw new ArrayIndexOutOfBoundsException();
else if (j<0 || j>=N) throw new ArrayIndexOutOfBoundsException();
}
}
public static void main(String args[]) {
MatrixDiagonal<Integer> m=new MatrixDiagonal<Integer>(5);
for (int i=0; i<5; i++) m.set(i, i, i+1);
System.out.println(m.get(4, 4)+m.get(3, 3));
MatrixDiagonal<Double> d=new MatrixDiagonal<Double>(5);
for (int i=0; i<5; i++) d.set(i, i, (double)i+1);
d.set(4,4,22.0);
System.out.println(d.get(4, 4)+d.get(3, 3));
}
}