====== 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; } } } ~~DISCUSSION~~