System.out.println("Usage: java Main <n>"); | System.out.println("Usage: java Main <n>"); | ||||
System.exit(1); | System.exit(1); | ||||
} | } | ||||
NPunkter17 points = new NPunkter17(Integer.parseInt(args[0])); | |||||
Sequential s = new Sequential(points); | |||||
s.solve(); | |||||
s.draw(); | |||||
} | } | ||||
} | } |
abstract class Oblig4 { | abstract class Oblig4 { | ||||
// Required for TegnUt | // Required for TegnUt | ||||
public int x[]; | |||||
public int y[]; | |||||
public int n; | |||||
public int MAX_Y; | |||||
public int MAX_X; | |||||
int x[]; | |||||
int y[]; | |||||
int n; | |||||
int MAX_Y; | |||||
int MAX_X; | |||||
int minX; | |||||
int maxX; | |||||
int minY; | |||||
int maxY; | |||||
IntList coHull; | |||||
NPunkter17 points; | NPunkter17 points; | ||||
String name = "Oblig4"; | |||||
Oblig4(NPunkter17 points) { | Oblig4(NPunkter17 points) { | ||||
this.points = points; | this.points = points; | ||||
n = points.n; | |||||
x = new int[n]; | |||||
y = new int[n]; | |||||
coHull = new IntList(); | |||||
points.fyllArrayer(x, y); | |||||
} | } | ||||
abstract void solve(); | abstract void solve(); | ||||
void draw() { | |||||
TegnUt t = new TegnUt(this, coHull, name); | |||||
t.setVisible(true); | |||||
} | |||||
} | } |
class Parallel extends Oblig4 { | class Parallel extends Oblig4 { | ||||
Parallel(NPunkter17 points) { | |||||
super(points); | |||||
name = "Parallel"; | |||||
} | |||||
void solve() { | void solve() { | ||||
System.out.println("Solving in parallel"); | System.out.println("Solving in parallel"); | ||||
} | } |
class Sequential extends Oblig4 { | class Sequential extends Oblig4 { | ||||
Sequential(NPunkter17 points) { | |||||
super(points); | |||||
name = "Sequential"; | |||||
} | |||||
@Override | |||||
void solve() { | void solve() { | ||||
System.out.println("Solving sequentially"); | System.out.println("Solving sequentially"); | ||||
findMinMaxX(); | |||||
MAX_X = x[maxX]; | |||||
MAX_Y = y[maxY]; | |||||
coHull.add(minX); | |||||
coHull.add(maxY); | |||||
coHull.add(maxX); | |||||
coHull.add(minY); | |||||
} | |||||
void findMinMaxX() { | |||||
minX = 0; | |||||
maxX = 0; | |||||
minY = 0; | |||||
maxY = 0; | |||||
for (int i = 1; i < n; ++i) { | |||||
int px = x[i]; | |||||
if (px < x[minX]) | |||||
minX = i; | |||||
if (px > x[maxX]) | |||||
maxX = i; | |||||
int py = y[i]; | |||||
if (py < y[minY]) | |||||
minY = i; | |||||
if (py > y[maxY]) | |||||
maxY = i; | |||||
} | |||||
} | } | ||||
} | } |