protected override string doExecute(IAlgorithmInput input) { // read input int[,] inputMatrix = readInput(input); Matrix A = new Matrix(inputMatrix); Matrix A_seq = A * A; Matrix ResM = A + A_seq; List <int> result = new List <int>(); for (int i = 0; i < A.Size; i++) { bool hasX = true; for (int j = 0; j < A.Size; j++) { if (i != j && ResM[i, j] == 0) { hasX = false; } } if (hasX) { result.Add(i); } } return(string.Join(",", result.ToArray())); }
protected override string doExecute(IAlgorithmInput input) { List <Activity> inputs = readInput(input); inputs.Sort(Comparer <Activity> .Create((Activity x, Activity y) => x.End - y.End)); int n = inputs.Count; int?[,] c = new int?[n, n]; int[,] z = new int[n, n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i >= j) { c[i, j] = 0; } else { caculateMaxC(inputs, c, i, j, z); } } } executeObserver.printConsole(string.Format("total activity count = {0}", c[0, n - 1])); printResult(z, 0, n - 1, inputs); return(string.Format("total activity count = {0}", c[0, n - 1])); }
public void execute(CancellationToken token) { IAlgorithmInput input = GetInputSingleFiles(); putCancellToken(token); executeObserver.startTask(); executeObserver.printDebugToConsole($"[{input.FileName}] Start at {DateTime.Now}"); try { var startTime = DateTime.Now; string result = doExecute(input); var endTime = DateTime.Now; writeFile(result, input.InputFilePath.Replace(".input", ".output")); executeObserver.printResult("execute result: " + result, true); executeObserver.printDebugToConsole($"[{input.FileName}] End at {DateTime.Now}"); executeObserver.SetStatitcis(GetInputSingleFiles(), (long)(endTime - startTime).TotalMilliseconds, -1); test(result, input.InputFilePath.Replace(".input", ".result")); } catch (OperationCanceledException E) { executeObserver.printConsole(E.Message); } finally { executeObserver.finishTask(); } }
protected override string doExecute(IAlgorithmInput input) { List <Activity> inputs = readInput(input); inputs.Sort(Comparer <Activity> .Create((Activity x, Activity y) => x.End - y.End)); int n = inputs.Count; int?[,] c = new int?[n, n]; int[,] z = new int[n, n]; List <Activity> selectedActivity = new List <Activity>(); Activity lastSelectedActivity = inputs[0]; //selectedActivity.Add(inputs[i]); for (int i = 1; i < n - 1; i++) { if (lastSelectedActivity.End <= inputs[i].Start) { selectedActivity.Add(inputs[i]); lastSelectedActivity = inputs[i]; executeObserver.printDebugToConsole(string.Format("Activity:({0}) start:{1}, end:{2}", i, inputs[i].Start, inputs[i].End)); } } return(string.Format("total activity count = {0}", selectedActivity.Count)); }
protected override string doExecute(IAlgorithmInput input) { int[] p = readInput(input); int n = p.Length - 1; Matrix <int> m = new Matrix <int>(new int[n, n]); Matrix <int> s = new Matrix <int>(new int[n, n]); for (int i = 1; i <= n; i++) { m[i, i] = 0; } for (int len = 2; len <= n; len++) { for (int i = 1; i <= n - len + 1; i++) { int j = i + len - 1; m[i, j] = int.MaxValue; for (int k = i; k < j; k++) { int q = m[i, k] + m[k + 1, j] + p[i - 1] * p[k] * p[j]; if (q < m[i, j]) { m[i, j] = q; s[i, j] = k; } } } } //executeObserver.printConsole(string.Format("total activity count = {0}",c[0,n-1])); return(input.FileName + " : " + getResult(s, 1, n)); }
protected override string doExecute(IAlgorithmInput input) { // read input int[,] A = readInput(input); int[,] A_seq; if (input.ExecuteCompairAlgorithm) { A_seq = A.NaiveMultiplication(A); } else { A_seq = A.Multiply(A); } int[,] ResM = A.Add(A_seq); List <int> result = new List <int>(); for (int i = 0; i < A.GetLength(0); i++) { bool hasX = true; for (int j = 0; j < A.GetLength(1); j++) { if (i != j && ResM[i, j] == 0) { hasX = false; } } if (hasX) { result.Add(i); } } return(string.Join(",", result.ToArray())); }
public static void renderListVieTime(ListViewItem lvi, IAlgorithmInput input) { lvi.Text = input.FileName; lvi.SubItems.Add(input.N != null ? input.N.ToString() : "-"); lvi.SubItems.Add(input.ExecuteTime != null ? input.ExecuteTime.ToString() : "-"); (bool?res, string desc) = input.Result; lvi.SubItems.Add(desc != null ? desc : "waiting"); }
public void SetStatitcis(IAlgorithmInput input, long time, int index = -1) { input.ExecuteTime = time; input.Result = (true, "Finished"); if (index != -1) { // update list updateTask(input, index); } }
protected override string doExecute(IAlgorithmInput input) { List <Point> inputs = readInput(input); inputs.Sort(Comparer <Point> .Create((Point a, Point b) => a.X - b.X)); Point[] X = inputs.ToArray(); inputs.Sort(Comparer <Point> .Create((Point a, Point b) => a.Y - b.Y)); Point[] Y = inputs.ToArray(); (double distance, Point a, Point b)result = CloestedDistance(X, Y); return(string.Format("point {0} and {1} has the mini distance of {2}", result.a, result.b, result.distance)); }
protected int[] readInput(IAlgorithmInput input) { string[] lines = System.IO.File.ReadAllLines(input.InputFilePath); int n = int.Parse(lines[0]); input.N = n; int[] p = new int[n + 1]; for (int i = 1; i < lines.Length; i++) { p[i - 1] = int.Parse(lines[i]); } return(p); }
private List <Point> readInput(IAlgorithmInput input) { string[] lines = System.IO.File.ReadAllLines(input.InputFilePath); int n = int.Parse(lines[0]); input.N = n; List <Point> result = new List <Point>(n); for (int i = 1; i < lines.Length; i++) { string[] splits = lines[i].Split(','); result.Add(new Point(splits[0], splits[1])); } return(result); }
/** * read input file to a Matrix */ private int[,] readInput(IAlgorithmInput input) { string[] lines = System.IO.File.ReadAllLines(input.InputFilePath); int n = int.Parse(lines[0]); input.N = n; int[,] res = new int[n, n]; for (int i = 1; i < lines.Length; i++) { string[] splits = lines[i].Split(','); for (int j = 0; j < splits.Length; j++) { res[i - 1, j] = int.Parse(splits[j]); } } return(res); }
protected List <Activity> readInput(IAlgorithmInput input) { string[] lines = System.IO.File.ReadAllLines(input.InputFilePath); int n = int.Parse(lines[0]); input.N = n; List <Activity> result = new List <Activity>(n + 2); result.Add(new Activity(0, 0)); for (int i = 1; i < lines.Length; i++) { string[] splits = lines[i].Split(','); result.Add(new Activity(splits[0], splits[1])); } result.Add(new Activity(int.MaxValue, int.MaxValue)); return(result); }
public void updateTask(IAlgorithmInput input, int index) { if (index != -1) { // update list mainform.fileListView.BeginUpdate(); ListViewItem lvi = mainform.fileListView.Items[index]; //lvi.Text = input.GetFileName(); lvi.SubItems[1].Text = input.N != null?input.N.ToString() : "-"; lvi.SubItems[2].Text = input.ExecuteTime != null?input.ExecuteTime.ToString() : "-"; (bool?res, string desc) = input.Result; lvi.SubItems[3].Text = desc != null ? desc : "waiting"; mainform.fileListView.EndUpdate(); } }
protected abstract string doExecute(IAlgorithmInput input);
public void SetInputSingleFiles(IAlgorithmInput input) { this.singleInput = input; }
protected (char[] X, char[] Y) readInput(IAlgorithmInput input) { string[] lines = System.IO.File.ReadAllLines(input.InputFilePath); return(lines[0].ToCharArray(), lines[1].ToCharArray()); }
protected override string doExecute(IAlgorithmInput input) { (char[] X, char[] Y) = readInput(input); int m = X.Length; int n = Y.Length; input.N = m; int[,] C = new int[m + 1, n + 1]; Matrix <Direction> L = new Matrix <Direction>(new Direction[m, n]); for (int i = 1; i <= m; i++) { C[i, 0] = 0; } for (int i = 1; i <= n; i++) { C[0, i] = 0; } for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { if (X[i - 1] == Y[j - 1]) { C[i, j] = C[i - 1, j - 1] + 1; L[i, j] = Direction.LEFT_UP; // Left UP, } else if (C[i - 1, j] >= C[i, j - 1]) { C[i, j] = C[i - 1, j]; L[i, j] = Direction.UP; // UP, } else { C[i, j] = C[i, j - 1]; L[i, j] = Direction.LEFT; // Left, } } } int row = m; int column = n; List <char> result = new List <char>(); while (row > 0 && column > 0) { switch (L[row, column]) { case Direction.LEFT_UP: result.Add(X[row - 1]); row--; column--; break; case Direction.UP: row--; break; case Direction.LEFT: column--; break; default: break; } } return(input.FileName + " : " + getResult(result)); }