gon2

SixDegrees.java

Apr 3rd, 2018
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.73 KB | None | 0 0
  1. package heima10;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. import edu.princeton.cs.algs4.*;
  6.  
  7. public class SixDegrees {
  8.  
  9.     public static void main(String[] args) {
  10.         // búum til graf fyrir textaskránna okkar
  11.         String filename  = "./src/heima10/movies.txt";
  12.         String delimiter = "/";
  13.         String source    = "Bacon, Kevin";
  14.         SymbolGraph sg = new SymbolGraph(filename, delimiter);
  15.         Graph G = sg.graph();
  16.         // listi til að geyma leikara
  17.         ArrayList<String> actorList = new ArrayList<>();
  18.         // bætum leikurunum í skránni við í listann
  19.         In in = new In(filename);
  20.         while (!in.isEmpty()) {
  21.             String[] a = in.readLine().split(delimiter);
  22.             for (int i = 1; i < a.length; i++) {
  23.                 if (!actorList.contains(a[i]))
  24.                     actorList.add(a[i]);
  25.             }
  26.         }
  27.         // fylki til að geyma fjölda leikara fyrir hverja Bacon tölu
  28.         int[] arr = new int[6];
  29.         int bacon = 0;
  30.         int oskilgreint = 0;
  31.         int s = sg.indexOf(source);
  32.         // allar mögulegar leiðir frá Kevin Bacon
  33.         BreadthFirstPaths bfs = new BreadthFirstPaths(G, s);
  34.  
  35.         for (int i=0; i<actorList.size(); i++) {
  36.             String sink = actorList.get(i);
  37.             int t = sg.indexOf(sink);
  38.             if (bfs.hasPathTo(t)) {
  39.                 for (int v : bfs.pathTo(t)) {
  40.                     bacon++;
  41.                 }
  42.                
  43.                 /* ættum aldrei að fá slétta tölu þar sem Bacon, leikarinn sjálfur og leikarar á milli mynda eru taldir með,
  44.                    gerum samt svona bara til öryggis: */                
  45.                 if (bacon%2 != 0) {
  46.                     bacon /= 2; // fáum þá fjölda mynda (tökum út leikara)
  47.                     arr[bacon]++;
  48.                 }
  49.                
  50.                 bacon = 0;
  51.             }
  52.             else oskilgreint++; // ef það er ekki til leið
  53.         }
  54.         // prentum
  55.         int i = 0;
  56.         for (int j : arr) {
  57.             StdOut.println(i + ": " + j);
  58.             i++;
  59.         }
  60.         StdOut.println("Óskilgreint: " + oskilgreint);
  61.     }
  62.  
  63. }
Add Comment
Please, Sign In to add comment