Advertisement
Guest User

Untitled

a guest
Mar 30th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 KB | None | 0 0
  1. import edu.princeton.cs.algs4.*;
  2.  
  3. public class Quatar {
  4.  
  5. // Constants defining map boundaries for the qatar dataset
  6. private static int yMin = 50766;
  7. private static int yMax = 51619;
  8. private static int xMin = 24748;
  9. private static int xMax = 26150;
  10.  
  11. private static void drawPoints(Point2D[] quatarPoints) {
  12. // Draws the points with coordinates given by qatarPoints within
  13. // the boundaries defined by the constants above.
  14.  
  15.  
  16. for (Point2D p : quatarPoints) {
  17. StdDraw.point(p.x() - xMin, p.y() - yMin);
  18. }
  19. StdDraw.setCanvasSize(xMax - xMin, yMax - yMin);
  20. StdDraw.setXscale(xMin, xMax);
  21. StdDraw.setYscale(yMin, yMax);
  22. StdDraw.setPenRadius(0.01);
  23. }
  24.  
  25. private static void drawMST(Point2D[] quatarPoints, KruskalMST net) {
  26. // Þessa aðferð þarf að klára. Bæta þarf við inntaksbreytum, líklega einni sem táknar
  27. // safn af punktum og annarri sem táknar spanntré.
  28.  
  29. // Sem stendur teiknar hún bara kross til að sýna hvernig línuteiknifallið virkar.
  30.  
  31.  
  32. for(Edge e : net.edges()){
  33. int annar = e.either();
  34. int hinn = e.other(annar);
  35. Point2D p1 = quatarPoints[annar];
  36. Point2D p2 = quatarPoints[hinn];
  37. StdDraw.line(p1.x(), p1.y(), p2.x(), p2.y());
  38. }
  39.  
  40.  
  41.  
  42.  
  43.  
  44. }
  45.  
  46. public static void main(String[] args) {
  47. String[] lines = new In("qatar.txt").readAllLines();
  48. Point2D[] points = new Point2D[lines.length];
  49. int i = 0;
  50. for (String line : lines){
  51. String[] splitLine = line.split(" ");
  52. Double x = Double.parseDouble(splitLine[1]);
  53. Double y = Double.parseDouble(splitLine[2]);
  54. Point2D p = new Point2D(x,y);
  55. points[i] = p;
  56. i++;
  57. }
  58.  
  59. EdgeWeightedGraph net = new EdgeWeightedGraph(lines.length);
  60. for (int j = 0; j<lines.length; j++){
  61. for (int k = j+1; k<lines.length; k++){
  62. Point2D punktur1 = points[j];
  63. Point2D punktur2 = points[k];
  64. Edge e = new Edge(j,k,punktur1.distanceTo(punktur2));
  65. net.addEdge(e);
  66. }
  67. }
  68. KruskalMST mst = new KruskalMST(net);
  69. drawPoints(points);
  70. drawMST(points, mst);
  71.  
  72.  
  73.  
  74.  
  75. // Hér er búið að lesa inn skrána og búa til fylki af hentugum Point2D tilvikum úr algs4.jar.
  76. // Nú á eftir að mynda evklíðskt net sem táknar punktana, reikna í því léttasta spanntré,
  77. // kalla á teiknifallið drawMST og skrifa út
  78.  
  79. // Ábending: Point2D klasinn er með aðferðina distanceTo. Smiður klasans tekur inn x-hnit og y-hnit.
  80.  
  81. }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement