Exemple #1
0
        public void TestSatisfy()
        {
            var r = Prim.Satisfy(c => c == 'x', "'x'").Parse("xbxcxdxe").Value.Single();

            Assert.True(r.Item1.Value == 'x');
            Assert.True(r.Item2.AsString() == "bxcxdxe");
        }
Exemple #2
0
        public void TestMany()
        {
            var r = Prim.Many(Prim.Character('a')).Parse("aaabcde").Value.Single();

            Assert.True(r.Item1.AsString() == "aaa");
            Assert.True(r.Item2.AsString() == "bcde");
        }
        public void PrimWithGraph()
        {
            char[] vertices = new char[] { 'a', 'b', 'c', 'd' };
            List <(int weight, char u, char v)> actualResult = new List <(int weight, char u, char v)>();

            actualResult.Add((1, 'a', 'b'));
            actualResult.Add((1, 'd', 'c'));
            actualResult.Add((2, 'b', 'd'));

            Prim <char> prim = new Prim <char>(vertices);

            prim.AddEdge(1, 'a', 'b');
            prim.AddEdge(5, 'a', 'c');
            prim.AddEdge(3, 'a', 'd');
            prim.AddEdge(4, 'b', 'c');
            prim.AddEdge(2, 'b', 'd');
            prim.AddEdge(1, 'c', 'd');

            List <(int weight, char u, char v)> result = prim.ExecutePrim('a');

            Assert.Equal(3, result.Count);

            for (int i = 0; i < result.Count; i++)
            {
                Assert.Equal(actualResult[i], result[i]);
            }
        }
        private void TestMstAlgorithm(IWeightedGraph <int, double> graph, double expectedMstWeight, double precision, ALGORITHM algorithm)
        {
            // Build minimum spanning tree with algorithm to test
            IWeightedGraph <int, double> msp;

            switch (algorithm)
            {
            case ALGORITHM.KRUSKAL:
                msp = Kruskal.FindMinimumSpanningTree(graph);
                break;

            case ALGORITHM.PRIM:
                msp = Prim.FindMinimumSpanningTree(graph, 0, double.MaxValue);
                break;

            default:
                throw new NotImplementedException($"No minimum spanning tree test implemented for algorithm {algorithm.ToString()}.");
            }

            // Check that all verteces are included
            Assert.AreEqual(graph.VertexCount, msp.VertexCount);

            // Count edges and compute total weight
            IEnumerable <IWeightedEdge <int, double> > edges = msp.GetAllEdges();
            int    edgeCount = edges.Count();
            double mspWeight = edges.Sum(e => e.Weight);

            // Check edge count
            Assert.AreEqual(graph.VertexCount - 1, edgeCount);

            // Check that the total weight is as expected
            AssertDoublesNearlyEqual(expectedMstWeight, mspWeight, precision);
        }
        public InCommentMulti(LanguageDef def)
            :
            base(
                inp =>
        {
            int depth = 1;
            while (depth > 0)
            {
                var res = Prim.String(def.CommentEnd).Parse(inp);
                if (!res.IsFaulted)
                {
                    depth--;
                    inp = res.Value.Head().Item2;
                    continue;
                }

                res = Prim.String(def.CommentStart).Parse(inp);
                if (!res.IsFaulted)
                {
                    depth++;
                    inp = res.Value.Head().Item2;
                    continue;
                }

                var resU = Prim.SkipMany(Prim.NoneOf(def.CommentStartEndDistinctChars.Value)).Parse(inp);
                if (resU.Value.Head().Item2.IsEmpty)
                {
                    return(Prim.Failure <Unit>(ParserError.Create("end of comment", inp)).Parse(inp));
                }
                inp = resU.Value.Head().Item2;
            }
            return(Prim.Return <Unit>(Unit.Default).Parse(inp));
        })
        {
        }
Exemple #6
0
        public void TestWhiteSpace()
        {
            var r = Prim.WhiteSpace().Parse(" ");

            Assert.False(r.IsFaulted);
            Assert.True(r.Value.Count() == 1);
        }
Exemple #7
0
        public Octal()
            :
            base(
                inp =>
        {
            var r = (from x in Prim.Character('o').Or(Prim.Character('O'))
                     from d in Prim.Many1(Prim.OctalDigit())
                     select d)
                    .Parse(inp);

            if (r.IsFaulted)
            {
                return(ParserResult.Fail <IntegerToken>(r.Errors));
            }
            else
            {
                var val = r.Value.First();
                return(ParserResult.Success <IntegerToken>(
                           Tuple.Create(
                               new IntegerToken(Convert.ToInt32(val.Item1.AsString(), 8), inp.First().Location),
                               val.Item2
                               ).Cons()
                           ));
            }
        }
                )
        { }
Exemple #8
0
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
            int n = Int32.Parse(inputLabel.Text);
            int tmp;

            if ((n - 1) % 2 == 0)
            {
                tmp = n - 2;
            }
            else
            {
                tmp = n - 1;
            }
            for (int i = tmp; i >= 2; i -= 2)
            {
                if (worker.CancellationPending == true)
                {
                    e.Cancel = true;
                    break;
                }
                if (Prim.IsPrim1(i))
                {
                    worker.ReportProgress(i);
                    break;
                }

                Thread.Sleep(200);
                worker.ReportProgress(i);
            }
        }
Exemple #9
0
 private void btnPrim_Click(object sender, EventArgs e)
 {
     this.ResetResolucion();
     this.resolucion = Prim.Ejecutar(g);
     this.Dibujar();
     this.ImprimirResultado();
 }
Exemple #10
0
        private void btnChayTuDong_Click(object sender, EventArgs e)
        {
            if (Check())
            {
                // kiểm tra time delay
                int timeDelay = 0;
                try
                {
                    timeDelay = Int32.Parse(txtDelay.Text);
                    if (timeDelay < 0)
                    {
                        MessageBox.Show("Time delay phải là số nguyên dương", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                }
                catch
                {
                    MessageBox.Show("Time delay phải là số nguyên dương", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                btnTamDung.Enabled            = true;
                btnKetThuc.Enabled            = true;
                btnBatDauChayTungBuoc.Enabled = false;

                listDoThi      = Prim.Run(Data.Data.graph_Prim);
                index          = 0;
                timer.Enabled  = true;
                timer.Interval = timeDelay;
                timer.Start();
                return;
            }
        }
Exemple #11
0
        private void btnKaydet_Click(object sender, EventArgs e)
        {
            double a;

            if (Double.TryParse(txtTutar.Text, out a) && Convert.ToInt32(txtTutar.Text) > 0 && txtPersonelID.Text != "" && txtDonem.Text != "")
            {
                Prim p = new Prim();

                p.PersonelID = Convert.ToInt32(txtPersonelID.Text);
                p.PrimTutar  = Convert.ToDouble(txtTutar.Text);
                p.Donem      = txtDonem.Text;
                if (p.PrimEkle(p))
                {
                    MessageBox.Show("Prim eklendi.");
                    Temizle();
                    btnDegistir.Enabled = false;
                    btnSil.Enabled      = false;
                    btnKaydet.Enabled   = false;
                }
                else
                {
                    MessageBox.Show("Prim eklenemedi.");
                }
            }
            else
            {
                MessageBox.Show("Lütfen kutuları doğru değerler ile doldurunuz.");
            }
        }
Exemple #12
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            Job           hello      = new Job(23, 23);
            JobFileReader fileReader = new JobFileReader();

            (int, Job[])myJobData = fileReader.ReadJobFile(@"C:\Users\Paul\Documents\Open Source Society for Computer Science (OSSU)\Algorithms Coursera\Programming Assignments\Week 9 Programming Assignment\TestCases\Test Case 1.txt");
            JobScheduler jobScheduler = new JobScheduler();

            Job[] gg = jobScheduler.DifferenceCriterion(myJobData.Item2);
            foreach (Job j in gg)
            {
                Console.WriteLine(j._jobValue);
            }
            Console.WriteLine("---------------------------");
            Week9FileReader fileReader2 = new Week9FileReader();

            Dictionary <int, List <(int?, int)> > adjacentGraph = fileReader2.GraphFileReader(@"C:\Users\Paul\Documents\Open Source Society for Computer Science (OSSU)\Algorithms Coursera\Programming Assignments\Week 9 Programming Assignment with DLL\Assignment9\MST Data.txt");
            Prim  prim  = new Prim();
            Graph graph = new Graph(adjacentGraph);

            Console.WriteLine("");
            List <Edge> tree = prim.Apply(graph, graph._vertices[1]);

            int myAnswer = 0;

            foreach (Edge ed in tree)
            {
                myAnswer += ed._length;
            }
            Console.WriteLine("MST Length: " + myAnswer);
            Console.ReadKey();
        }
Exemple #13
0
        private void btnBatDauChayTungBuoc_Click(object sender, EventArgs e)
        {
            if (btnBatDauChayTungBuoc.Text == "Bắt đầu chạy từng bước")
            {
                if (Check())
                {
                    listDoThi = Prim.Run(Data.Data.graph_Prim);
                    index     = 0;
                    HienThiDoThi();

                    btnChayTuDong.Enabled      = false;
                    btnPrev.Enabled            = true;
                    btnNext.Enabled            = true;
                    btnStart.Enabled           = true;
                    btnEnd.Enabled             = true;
                    btnBatDauChayTungBuoc.Text = "Kết thúc chạy từng bước";
                }
                return;
            }

            if (btnBatDauChayTungBuoc.Text == "Kết thúc chạy từng bước")
            {
                btnBatDauChayTungBuoc.Text = "Bắt đầu chạy từng bước";
                btnChayTuDong.Enabled      = true;
                btnPrev.Enabled            = false;
                btnNext.Enabled            = false;
                btnStart.Enabled           = false;
                btnEnd.Enabled             = false;
                return;
            }
        }
Exemple #14
0
        public void TestCase4ShouldPass()
        {
            //var textreader = new StreamReader(typeof(PrimTests).Assembly.GetManifestResourceStream("Tests.largeEWG.txt"));
            var result = Prim.Run(File.ReadLines("c:\\work\\largeEWG.txt"));//GetLines(textreader));

            Assert.AreEqual(new Decimal(647.66306955), result);
        }
Exemple #15
0
        public void TestDigitList()
        {
            var p = from open in Prim.Character('[')
                    from d in Prim.Digit()
                    from ds in
                    Prim.Many(
                from comma in Prim.Character(',')
                from digit in Prim.Digit()
                select digit
                )
                    from close in Prim.Character(']')
                    select d.Cons(ds);

            var r = p.Parse("[1,2,3,4]").Value.Single();

            Assert.True(r.Item1.First().Value == '1');
            Assert.True(r.Item1.Skip(1).First().Value == '2');
            Assert.True(r.Item1.Skip(2).First().Value == '3');
            Assert.True(r.Item1.Skip(3).First().Value == '4');

            var r2 = p.Parse("[1,2,3,4");

            Assert.True(r2.IsFaulted);
            Assert.True(r2.Errors.First().Expected == "']'");
            Assert.True(r2.Errors.First().Input.IsEmpty);

            var r3 = p.Parse("[1,2,3,4*");

            Assert.True(r3.IsFaulted);
            Assert.True(r3.Errors.First().Expected == "']'");
            Assert.True(r3.Errors.First().Location.Line == 1);
            Assert.True(r3.Errors.First().Location.Column == 9);
        }
Exemple #16
0
        public void TestBetween()
        {
            var r = Prim.Between(Prim.Character('['), Prim.Character(']'), Prim.String("abc")).Parse("[abc]");

            Assert.True(!r.IsFaulted);
            Assert.True(r.Value.First().Item1.AsString() == "abc");
        }
Exemple #17
0
 public ParseEsc(char c, char code)
     :
     base(
         inp =>
 {
     var r = Prim.Character(c).Parse(inp);
     if (r.IsFaulted)
     {
         return(r);
     }
     else
     {
         var tuple = r.Value.First();
         return(ParserResult.Success <ParserChar>(
                    Tuple.Create <ParserChar, ImmutableList <ParserChar> >(
                        new ParserChar(
                            code,
                            tuple.Item1.Location
                            ),
                        tuple.Item2
                        ).Cons()
                    ));
     }
 }
         )
 { }
        public void TopLevelParserTest()
        {
            //TODO: Test Parser

            ScrapeQLParser parser = new ScrapeQLParser();
            Parser <Query> top    = parser.TopLevelParser();
            Parser <ImmutableList <Query> > tops =
                from qs in Prim.Many(top)
                from _ in Prim.WhiteSpace()
                select qs;

            var result = tops.Parse("LOAD \"asda\" AS asdsd \n SELECT \"asdsd\" AS asdas FROM asds");

            if (result.IsFaulted)
            {
                //Console.WriteLine("Error: " + result.Errors.First().Message);
                //Console.WriteLine("Expected: " + result.Errors.First().Expected);
                //Console.WriteLine("In Line: " + result.Errors.First().Location.Line + " In Column: " + result.Errors.First().Location.Column);
            }
            else
            {
                //Console.WriteLine(result.Value.First().Item1.ParsedObjectDisplayString());
                foreach (Query q in result.Value.First().Item1)
                {
                    //Console.WriteLine("HIT:" + q.ParsedObjectDisplayString());
                }
            }

            Assert.Fail();
        }
Exemple #19
0
        public ActionResult DeleteConfirmed(int id)
        {
            Prim prim = db.Prim.Find(id);

            db.Prim.Remove(prim);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Exemple #20
0
        public void PrimWithEmptyGraph()
        {
            char[]      vertices = new char[] {};
            Prim <char> prim     = new Prim <char>(vertices);
            List <(int weight, char u, char v)> result = prim.ExecutePrim('a');

            Assert.Equal(0, result.Count);
        }
Exemple #21
0
        public void DeberiaRetornarListaVaciaSiElGrafoEstaVacio()
        {
            var g = new Grafo();
            var l = Prim.Ejecutar(g);

            Assert.IsNotNull(l);
            Assert.AreEqual(0, l.Count);
        }
Exemple #22
0
 public Symbol(string name)
     :
     base(
         inp => (from sym in Tok.Lexeme <ImmutableList <ParserChar> >(Prim.String(name))
                 select new SymbolToken(sym))
         .Parse(inp)
         )
 {
 }
Exemple #23
0
 public HaskellDef()
 {
     IdentLetter   = IdentLetter.Or(Prim.Character('#'));
     ReservedNames = Enumerable.Concat(
         ReservedNames,
         new string[] { "foreign", "import", "export", "primitive"
                        , "_ccall_", "_casm_"
                        , "forall" });
 }
Exemple #24
0
        static void Main(string[] args)
        {
            var graph = new Graph <int>();
            var nodes = new List <Node <int> >();
            var edges = new List <Edge <int> >();

            while (true)
            {
                Console.Write("Додати нову вершину?\n-> ");
                if (Console.ReadLine() == "y")
                {
                    nodes.Add(new Node <int>()
                    {
                        Value = 1 + nodes.Count
                    });
                    Console.WriteLine($"Додали вершину {nodes.Last().ToString()}");
                }
                else
                {
                    break;
                }
            }
            while (true)
            {
                Console.Write("Додати нове ребро?\n-> ");
                if (Console.ReadLine() == "y")
                {
                    Console.Write("Номер першої вершини\n-> ");
                    int node1Num = Int32.Parse(Console.ReadLine());
                    Console.Write("Номер другої вершини\n-> ");
                    int node2Num = Int32.Parse(Console.ReadLine());
                    Console.Write("Вага ребра\n-> ");
                    int weight = Int32.Parse(Console.ReadLine());
                    edges.Add(new Edge <int>()
                    {
                        Node1  = nodes[node1Num - 1],
                        Node2  = nodes[node2Num - 1],
                        Weight = weight
                    });
                }
                else
                {
                    break;
                }
            }
            graph.Nodes = nodes;
            graph.Edges = edges;
            Console.WriteLine("Алгоритм Краскала");
            var res = Kruskal.Run(graph);

            ShowCarcass(res);
            Console.WriteLine("Алгоритм Прима");
            var resprim = Prim.Run(graph);

            ShowCarcass(resprim);
            Console.ReadLine();
        }
Exemple #25
0
 public WsChrParser(char c)
     :
     base(
         inp => Prim.WhiteSpace()
         .And(Prim.Character(c))
         .Parse(inp)
         )
 {
 }
Exemple #26
0
        public void TestReturn()
        {
            var r = Prim.Return(1).Parse("abc").Value.Single();

            Assert.True(
                r.Item1 == 1 &&
                r.Item2.AsString() == "abc"
                );
        }
        private static int RunPrim(Vertex[] vertices)
        {
            foreach (Vertex v in vertices)
            {
                v.Reset();
            }

            return(Prim.Run(vertices).Sum(e => e.Weight));
        }
Exemple #28
0
        private static void PrimAlgorithmn()
        {
            List <Vertex> graph = new List <Vertex>();

            Vertex a = new Vertex("A");
            Vertex b = new Vertex("B");
            Vertex c = new Vertex("C");
            Vertex d = new Vertex("D");
            Vertex e = new Vertex("E");

            Edge ab = new Edge(2);

            a.AddEdge(b, ab);
            b.AddEdge(a, ab);
            Edge ac = new Edge(3);

            a.AddEdge(c, ac);
            c.AddEdge(a, ac);
            Edge bc = new Edge(2);

            b.AddEdge(c, bc);
            c.AddEdge(b, bc);
            Edge be = new Edge(5);

            b.AddEdge(e, be);
            e.AddEdge(b, be);
            Edge cd = new Edge(1);

            c.AddEdge(d, cd);
            d.AddEdge(c, cd);
            Edge ce = new Edge(1);

            c.AddEdge(e, ce);
            e.AddEdge(c, ce);

            graph.Add(a);
            graph.Add(b);
            graph.Add(c);
            graph.Add(d);
            graph.Add(e);

            Console.WriteLine("****************");
            Console.WriteLine("\n");
            Prim MyPrimAlgo = new Prim(graph);

            Console.WriteLine("Graph before Prim");
            Console.WriteLine(MyPrimAlgo.OriginalGraphToString());
            Console.ReadLine();
            Console.WriteLine("Graph after Prim");
            MyPrimAlgo.Run();
            MyPrimAlgo.ResetPrintHistory();
            Console.WriteLine(MyPrimAlgo.MinimumSpanningTreeToString());
            Console.WriteLine("****************");
            Console.WriteLine("\n");
            Console.ReadLine();
        }
Exemple #29
0
        internal override void WriteJsonSchema(Utf8JsonWriter writer)
        {
            writer.WriteString("type", "array");

            writer.WriteStartObject("items");
            Item.WriteJsonSchema(writer);
            writer.WriteEndObject();

            writer.WriteString("$comment", Prim.ToString());
        }
Exemple #30
0
 public CharEscape()
     :
     base(
         inp => (from c in Prim.Character('\\')
                 from ec in Tok.Chars.EscapeCode()
                 select ec)
         .Parse(inp)
         )
 {
 }
 public void Init()
 {
     _graphBuilder = new PrimGraphBuilder("prim_hw.txt");
     _graph = _graphBuilder.Build();
     _prim = new Prim(_graph);
 }