Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import edu.princeton.cs.algs4.*;
- public class Quatar {
- // Constants defining map boundaries for the qatar dataset
- private static int yMin = 50766;
- private static int yMax = 51619;
- private static int xMin = 24748;
- private static int xMax = 26150;
- private static void drawPoints(Point2D[] quatarPoints) {
- // Draws the points with coordinates given by qatarPoints within
- // the boundaries defined by the constants above.
- for (Point2D p : quatarPoints) {
- StdDraw.point(p.x() - xMin, p.y() - yMin);
- }
- StdDraw.setCanvasSize(xMax - xMin, yMax - yMin);
- StdDraw.setXscale(xMin, xMax);
- StdDraw.setYscale(yMin, yMax);
- StdDraw.setPenRadius(0.01);
- }
- private static void drawMST(Point2D[] quatarPoints, KruskalMST net) {
- // Þessa aðferð þarf að klára. Bæta þarf við inntaksbreytum, líklega einni sem táknar
- // safn af punktum og annarri sem táknar spanntré.
- // Sem stendur teiknar hún bara kross til að sýna hvernig línuteiknifallið virkar.
- for(Edge e : net.edges()){
- int annar = e.either();
- int hinn = e.other(annar);
- Point2D p1 = quatarPoints[annar];
- Point2D p2 = quatarPoints[hinn];
- StdDraw.line(p1.x(), p1.y(), p2.x(), p2.y());
- }
- }
- public static void main(String[] args) {
- String[] lines = new In("qatar.txt").readAllLines();
- Point2D[] points = new Point2D[lines.length];
- int i = 0;
- for (String line : lines){
- String[] splitLine = line.split(" ");
- Double x = Double.parseDouble(splitLine[1]);
- Double y = Double.parseDouble(splitLine[2]);
- Point2D p = new Point2D(x,y);
- points[i] = p;
- i++;
- }
- EdgeWeightedGraph net = new EdgeWeightedGraph(lines.length);
- for (int j = 0; j<lines.length; j++){
- for (int k = j+1; k<lines.length; k++){
- Point2D punktur1 = points[j];
- Point2D punktur2 = points[k];
- Edge e = new Edge(j,k,punktur1.distanceTo(punktur2));
- net.addEdge(e);
- }
- }
- KruskalMST mst = new KruskalMST(net);
- drawPoints(points);
- drawMST(points, mst);
- // Hér er búið að lesa inn skrána og búa til fylki af hentugum Point2D tilvikum úr algs4.jar.
- // Nú á eftir að mynda evklíðskt net sem táknar punktana, reikna í því léttasta spanntré,
- // kalla á teiknifallið drawMST og skrifa út
- // Ábending: Point2D klasinn er með aðferðina distanceTo. Smiður klasans tekur inn x-hnit og y-hnit.
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement