Generátor

Kdyby někdo potřeboval udělal jsem jednoduchý generátor podobný tomu, co jsem dělal na první příklad.

public class MatrixGenerator {

  /**
   * @param args the command line arguments
   */
  public static void main(String[] args) {
      if (args.length != 3) {
          System.out.println("Run the program with [nodes] [edges] [full/random/noconn/negative] params.");
          return;
      }
      final int NODES = Integer.parseInt(args[0]);
      final int EDGES = Integer.parseInt(args[1]);
      final String type = args[2];
      if ("full".equals(type.toLowerCase())) {
          makeFullGraph(NODES);
      } else if ("random".equals(type.toLowerCase())) {
          makeRandomGraph(NODES, EDGES);
      } else if ("negative".equals(type.toLowerCase())){
          makeFullGraphWithAllNegative(NODES);
      }else{
          makeNotConnectableFullGraph(NODES);
      }
  }
  public static void makeRandomGraph(int NODES, int EDGES) {
      final boolean random = true;
      StringBuilder sb = new StringBuilder();
      sb.append(NODES);
      sb.append("\n");
      System.out.print(sb.toString());
      for (int i = 0; i <= EDGES; i++) {
          sb = new StringBuilder();
          int x = (int) (((Math.random() * NODES) % (NODES)));
          int y = (int) (((Math.random() * NODES) % (NODES)));
          if (x == y) {
              i--;
              continue;
          }
          sb.append(x);
          sb.append(" ");
          sb.append(y);
          sb.append(" ");
          sb.append(getWeight(random));
          sb.append("\n");
          System.out.print(sb.toString());
      }
      System.out.print("0 0 0\n");
  }
  public static void makeNotConnectableFullGraph(int NODES) {
      final boolean random = true;
      StringBuilder sb = new StringBuilder();
      sb.append(NODES + 1);
      sb.append("\n");
      System.out.print(sb.toString());
      for (int i = 0; i < NODES; i++) {
          sb = new StringBuilder();
          for (int y = 0; y < NODES; y++) {
              if (i != y) {
                  sb.append(y);
                  sb.append(" ");
                  sb.append(i);
                  sb.append(" ");
                  sb.append(getWeight(random));
                  sb.append("\n");
              }
          }
          System.out.print(sb.toString());
      }
      System.out.print("0 0 0\n");
  }
  public static void makeFullGraph(int NODES) {
      final boolean random = true;
      StringBuilder sb = new StringBuilder();
      sb.append(NODES);
      sb.append("\n");
      System.out.print(sb.toString());
      for (int i = 0; i < NODES; i++) {
          sb = new StringBuilder();
          for (int y = 0; y < NODES; y++) {
              if (i != y) {
                  sb.append(y);
                  sb.append(" ");
                  sb.append(i);
                  sb.append(" ");
                  sb.append(getWeight(random));
                  sb.append("\n");
              }
          }
          System.out.print(sb.toString());
      }
      System.out.print("0 0 0\n");
  }
  public static void makeFullGraphWithAllNegative(int NODES) {
      final boolean random = true;
      StringBuilder sb = new StringBuilder();
      sb.append(NODES);
      sb.append("\n");
      System.out.print(sb.toString());
      for (int i = 0; i < NODES; i++) {
          sb = new StringBuilder();
          for (int y = 0; y < NODES; y++) {
              if (i != y) {
                  sb.append(y);
                  sb.append(" ");
                  sb.append(i);
                  sb.append(" ");
                  sb.append(getWeight(random));
                  sb.append("\n");
              }
          }
          System.out.print(sb.toString());
      }
      for (int i = 0; i < NODES; i++) {
          sb = new StringBuilder();
          for (int y = 0; y < NODES; y++) {
              if (i != y) {
                  sb.append(y);
                  sb.append(" ");
                  sb.append(i);
                  sb.append(" ");
                  sb.append("-1");
                  sb.append("\n");
              }
          }
          System.out.print(sb.toString());
      }
      System.out.print("0 0 0\n");
  }
  
  public static int getWeight(boolean random) {
      if (random) {
          return (int) (Math.random() * 5000 + 1);
      } else {
          return 10;
      }
  }

}

courses/a4m33pal/uloha3/generator.txt · Poslední úprava: 2025/01/03 18:29 (upraveno mimo DokuWiki)
Nahoru
chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0