コード例 #1
0
ファイル: Test.cs プロジェクト: CristalKenji/Knapsack
        public static void writeTestToFile(string fileName, InputSet inputSet, int testNum, int greedyResult, int dynamicResult, int memoryResult)
        {
            FileStream   ostrm;
            StreamWriter writer;
            TextWriter   oldOut = Console.Out;

            try
            {
                ostrm  = new FileStream("../../../OutputFile/" + fileName + ".txt", FileMode.Append, FileAccess.Write);
                writer = new StreamWriter(ostrm);
            }
            catch (Exception e)
            {
                Console.WriteLine("Cannot open Redirect.txt for writing");
                Console.WriteLine(e.Message);
                return;
            }
            Console.SetOut(writer);

            printTest(inputSet, testNum, greedyResult, dynamicResult, memoryResult);

            Console.SetOut(oldOut);
            writer.Close();
            ostrm.Close();
            Console.WriteLine("Write InputSet " + fileName + " - Done");
        }
コード例 #2
0
ファイル: InputParser.cs プロジェクト: CristalKenji/Knapsack
        public static InputSet ParseInputFile(string InputSetName)
        {
            int fieldIndex = 0;

            InputSet inputSet      = new InputSet();
            int      tempWeight    = 0;
            int      tempValue     = 0;
            int      itemNameIndex = 1;

            using (TextFieldParser parser = new TextFieldParser(@"..\..\..\InputCSV\" + InputSetName + ".csv"))
            {
                parser.TextFieldType = FieldType.Delimited;
                parser.SetDelimiters(" ");
                while (!parser.EndOfData)
                {
                    //Process row
                    string[] fields = parser.ReadFields();
                    foreach (string field in fields)
                    {
                        //Process field
                        if (parser.LineNumber == 2)
                        {
                            if (fieldIndex == 0)
                            {
                                inputSet.Capacity = int.Parse(field);
                                fieldIndex++;
                            }
                            else if (fieldIndex == 1)
                            {
                                inputSet.OptimalValue = int.Parse(field);
                                fieldIndex            = 0;
                            }
                        }
                        else
                        {
                            if (fieldIndex == 0)
                            {
                                tempValue = int.Parse(field);
                                fieldIndex++;
                            }
                            else if (fieldIndex == 1)
                            {
                                tempWeight = int.Parse(field);
                            }
                        }
                    }

                    if (parser.LineNumber != 2)
                    {
                        fieldIndex = 0;
                        inputSet.addItem(new Item("Item" + itemNameIndex, tempWeight, tempValue));
                        itemNameIndex++;
                    }
                }
            }
            return(inputSet);
        }
コード例 #3
0
ファイル: Test.cs プロジェクト: CristalKenji/Knapsack
        public static void printTest(InputSet inputSet, int testNum, int greedyResult, int dynamicResult, int memoryResult)
        {
            var table = new ConsoleTable("Test-Num: " + testNum, "Items: " + inputSet.Items.Count, "Capacity: " + inputSet.Capacity);

            table.AddRow("Algorithm", "Result", "OptimalValue: " + inputSet.OptimalValue);
            table.AddRow("Greedy", greedyResult, showResultDeviation(greedyResult, inputSet.OptimalValue));
            table.AddRow("Dynamic", dynamicResult, showResultDeviation(dynamicResult, inputSet.OptimalValue));
            table.AddRow("Memory", memoryResult, showResultDeviation(memoryResult, inputSet.OptimalValue));
            table.Write();
        }