package stablemarriage; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.Reader; import lib.Maybe; import com.google.gson.Gson; public class Main { private static void usage() { System.out.println("Usage: java StableMarriage -r n"); System.out.println("creates random preference of size n"); System.out.println("Usage: java StableMarriage -f preferenceFile"); System.out.println("reads preference from f"); } /** * Creates and solves a random stable marriage problem of * size n, where n is given on the command line. * or solves a stable marriage problem where preferences are read * from a file * @throws FileNotFoundException */ public static void main(String[] args) throws FileNotFoundException { if (args.length != 2) { usage(); }else if(args[0].equals("-r")){ int n = Integer.parseInt(args[1]); mainRandom(n); }else if(args[0].equals("-f")){ mainFile(args[1]); }else{ usage(); } } private static void mainFile(String file) throws FileNotFoundException { Gson gson = new Gson(); Reader contents = new FileReader(file); Preference pref = gson.fromJson(contents, Preference.class); Maybe isValidPref = pref.valid(); if(isValidPref.isSome()){ System.out.println(isValidPref.get()); }else{ StableMarriage.GaleShapley(pref); } } private static void mainRandom(int n) { Preference pref = Preference.randomPrefs(n); if (n <= 10) System.out.println(pref); Marriages marriages = StableMarriage.GaleShapley(pref); if (n <= 10) System.out.println(marriages); } }