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]));
        }
Esempio n. 3
0
        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();
            }
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
        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()));
        }
Esempio n. 7
0
 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");
 }
Esempio n. 8
0
 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));
        }
Esempio n. 10
0
        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);
        }
Esempio n. 12
0
        /**
         * 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);
        }
Esempio n. 14
0
        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();
            }
        }
Esempio n. 15
0
 protected abstract string doExecute(IAlgorithmInput input);
Esempio n. 16
0
 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));
        }