Exemplo n.º 1
0
        public void TestSurroundedRegions()
        {
            var board1 = BuildBoard1();

            SurroundedRegions.Solve_dfs(board1);
            Assert.AreEqual(board1[1, 1], 'x');
            Assert.AreEqual(board1[1, 2], 'x');
            Assert.AreEqual(board1[1, 3], 'x');
            Assert.AreEqual(board1[2, 2], 'x');
            Assert.AreEqual(board1[5, 1], 'o');


            var board2 = BuildBoard2();

            SurroundedRegions.Solve_dfs(board2);
            Assert.AreEqual(board2[1, 1], 'x');
            Assert.AreEqual(board2[1, 2], 'x');
            Assert.AreEqual(board2[1, 3], 'x');
            Assert.AreEqual(board2[2, 2], 'x');
            Assert.AreEqual(board2[3, 1], 'o');
            Assert.AreEqual(board2[4, 1], 'o');
            Assert.AreEqual(board2[5, 1], 'o');
        }
Exemplo n.º 2
0
        //[["O","X","O","X","O","X","O"],["O","X","O","O","X","O","O"],["X","O","O","X","X","X","O"],["X","X","O","O","O","O","X"],["X","X","O","O","O","O","O"],["X","O","O","X","X","X","X"],["X","X","O","X","O","X","O"]]
        //[["O","X","O","X","O","X","O"],["O","X","O","O","X","X","O"],["X","O","O","X","X","X","O"],["X","X","O","O","O","O","X"],["X","X","O","O","O","O","O"],["X","O","O","X","X","X","X"],["X","X","O","X","O","X","O"]]

        void InternalTest(char[][] board, char[][] expected)
        {
            SurroundedRegions.Solve(board);
            AssertHelper.AssertMatrixes(expected, board);
        }
Exemplo n.º 3
0
        static void Main(string[] args)
        {
            GCD g = new GCD();

            Console.WriteLine(g.GcdCalc(15, 25));

            /*DoublyEndedCircularQueue dcq = new DoublyEndedCircularQueue(5);
             * dcq.EnqueueFront(1);
             * dcq.EnqueueRear(3);
             * dcq.EnqueueFront(2);
             * dcq.EnqueueRear(5);
             * dcq.EnqueueFront(20);
             * dcq.EnqueueRear(10);
             * bool status = true;
             * int val;
             * dcq.PrintQueue();
             *
             * int val = dcq.PeekFront(ref status);
             * if (status)
             *  Console.WriteLine(val);
             * status = true;
             * val = dcq.PeekRear(ref status);
             * if (status)
             *  Console.WriteLine(val);
             *
             * status = true;
             * val = dcq.DequeueRear(ref status);
             * if (status)
             *  Console.WriteLine(val);
             * status = true;
             * val = dcq.DequeueRear(ref status);
             * if (status)
             *  Console.WriteLine(val);
             * status = true;
             * val = dcq.DequeueRear(ref status);
             * if (status)
             *  Console.WriteLine(val);
             *
             * dcq.EnqueueFront(15);
             * dcq.EnqueueFront(16);
             * dcq.EnqueueFront(17);
             *
             * dcq.PrintQueue();
             *
             * dcq.EnqueueRear(19);*/

            /*status = true;
             * val = dcq.DequeueFront(ref status);
             * if (status)
             *  Console.WriteLine(val);
             * status = true;
             * val = dcq.DequeueFront(ref status);
             * if (status)
             *  Console.WriteLine(val);*/


            // HappyNumber h = new HappyNumber();
            //h.IsHappy(79);

            /*for(int i=1;i<=100;i++)
             *  Console.WriteLine(h.IsHappy(i)?i.ToString():"");*/
            /* DisjointSetRankCompression d = new DisjointSetRankCompression();
             * Subset[] subsets = new Subset[5] { new Subset(0, 0), new Subset(1, 0), new Subset(2, 0), new Subset(3, 0), new Subset(4, 0) };
             *
             * int[][] edges = new int[4][];
             * edges[0] = new int[] { 0, 1 };
             * edges[1] = new int[] { 2, 3 };
             * edges[2] = new int[] { 1, 3 };
             * edges[3] = new int[] { 4, 0 };
             *
             * foreach(var edge in edges)
             * {
             *   d.Union(subsets, edge[0], edge[1]);
             * }*/

            /*CountCommunicatingServers c = new CountCommunicatingServers();
             * int[][] input = new int[4][];
             * input[0] = new int[] {1,1,0,0 };
             * input[1] = new int[] { 0,0,1,0};
             * input[2] = new int[] { 0,0,1,0};
             * input[3] = new int[] { 0,0,0,1};
             * Console.WriteLine(c.func(input));*/

            /*IList<IList<int>> rooms = new List<IList<int>>();
             * rooms.Add(new List<int>() { 2});
             * rooms.Add(new List<int>() );
             * rooms.Add(new List<int>() { 1});
             * KeysAndRooms kr = new KeysAndRooms();
             * Console.WriteLine(kr.func(rooms));*/

            /*int n = 1;
             * int[][] input = new int[0][];
             * //input[0] = new int[] { 0,0 };
             * input[1] = new int[] { 1,2 };
             * input[2] = new int[] { 0,3 };
             * input[3] = new int[] { 3,2 };
             * input[4] = new int[] { 2,1 };
             * int s = 0;
             * int d = 0;
             * AllPathsFromSourceToDestination t = new AllPathsFromSourceToDestination();
             * Console.WriteLine(t.LeadsToDestination(n, input, s, d));*/

            char[][] input = new char[6][];

            SurroundedRegions sr = new SurroundedRegions();
            //test case 1

            /*input[0] = new char[] { 'X', 'X', 'X', 'X'};
             * input[1] = new char[] { 'X', 'O', 'O', 'X'};
             * input[2] = new char[] { 'X', 'X', 'O', 'X'};
             * input[3] = new char[] { 'X', 'O', 'X', 'X'};
             *
             * sr.Solve(input);
             *
             * //test case 2
             * input[0] = new char[] { 'X', 'O', 'X', 'X' };
             * input[1] = new char[] { 'X', 'O', 'O', 'X' };
             * input[2] = new char[] { 'X', 'X', 'O', 'X' };
             * input[3] = new char[] { 'X', 'O', 'X', 'X' };
             *
             * sr.Solve(input);
             *
             * //test case 3
             * input[0] = new char[] { 'X', 'X', 'X', 'X' };
             * input[1] = new char[] { 'X', 'X', 'O', 'X' };
             * input[2] = new char[] { 'X', 'X', 'O', 'X' };
             * input[3] = new char[] { 'X', 'X', 'O', 'X' };
             *
             * sr.Solve(input);
             *
             * //test 4
             * input[0] = new char[] { 'X', 'X', 'X', 'X' };
             * input[1] = new char[] { 'X', 'X', 'O', 'O' };
             * input[2] = new char[] { 'X', 'X', 'O', 'X' };
             * input[3] = new char[] { 'X', 'X', 'X', 'X' };
             *
             * sr.Solve(input);
             *
             * input[0] = new char[] { 'X', 'X', 'X', 'X', 'O', 'X' };
             * input[1] = new char[] { 'O', 'X', 'X', 'O', 'O', 'X' };
             * input[2] = new char[] { 'X', 'O', 'X', 'O', 'O', 'O' };
             * input[3] = new char[] { 'X', 'O', 'O', 'O', 'X', 'O' };
             * input[4] = new char[] { 'O', 'O', 'X', 'X', 'O', 'X' };
             * input[5] = new char[] { 'X', 'O', 'X', 'O', 'X', 'X' };
             *
             * sr.Solve(input);*/

            /*RedundantConnection rc = new RedundantConnection();
             * int[][] edges = new int[10][];
             * edges[0] = new int[2] { 9, 10 };
             * edges[1] = new int[2] { 5, 8 };
             * edges[2] = new int[2] { 2, 6 };
             * edges[3] = new int[2] { 1, 5 };
             * edges[4] = new int[2] { 3, 8 };
             * edges[5] = new int[2] { 4, 9 };
             * edges[6] = new int[2] { 8, 10 };
             * edges[7] = new int[2] { 4, 10 };
             * edges[8] = new int[2] { 6, 8 };
             * edges[9] = new int[2] { 7, 9 };
             *
             * int[][] edges = new int[3][];
             * edges[0] = new int[] { 1, 2 };
             * edges[1] = new int[] { 1, 3 };
             * edges[2] = new int[] { 2, 3 };
             * rc.FindRedundantConnection(edges);*/

            /*TimeNeededToInform t = new TimeNeededToInform();
             * t.NumOfMinutes(11, 4, new int[] { 5, 9, 6, 10, -1, 8, 9, 1, 9, 3, 4 }, new int[]{ 0, 213, 0, 253, 686, 170, 975, 0, 261, 309, 337 });*/

            FrogPositionAfterTSeconds f = new FrogPositionAfterTSeconds();

            /*int[][] edges = new int[2][];
             * edges[0] = new int[2] { 2, 1 };
             * edges[1] = new int[2] { 2, 3 };
             * /*edges[2] = new int[2] { 4, 1 };
             * edges[3] = new int[2] { 5, 1 };
             * edges[4] = new int[2] { 6, 4 };
             * edges[5] = new int[2] { 7, 1 };
             * edges[6] = new int[2] { 8, 7 };
             * f.FrogPosition(3, edges, 1, 2);*/

            /*DSUTester dst = new DSUTester();
             * dst.Test();*/

            /*NumberOfIslands n = new NumberOfIslands();
             * char[][] grid = new char[4][];
             * grid[0] = new char[] { '1', '1', '1', '1', '0' };
             * grid[1] = new char[] { '1', '1', '0', '1', '0' };
             * grid[2] = new char[] { '1', '1', '0', '0', '0' };
             * grid[3] = new char[] { '0', '0', '0', '1', '1' };
             * n.NumIslands(grid);*/

            //PrimePalindrome pp = new PrimePalindrome();
            //pp.PalindromeGenerator(999);

            /*Console.WriteLine(pp.PrimePalindromeCalc(2));
             * Console.WriteLine(pp.PrimePalindromeCalc(6));
             * Console.WriteLine(pp.PrimePalindromeCalc(8));
             * Console.WriteLine(pp.PrimePalindromeCalc(13));
             * Console.WriteLine(pp.PrimePalindromeCalc(99));*/
            //Console.WriteLine(pp.PrimePalindromeCalc(10));


            //ReverseInteger r = new ReverseInteger();

            /*r.func(123);
            *  r.func(-123);
            *  r.func(120);*/
            //r.func(1534236469);

            /*NumberOfCandies n = new NumberOfCandies();
             * n.func(20, 3);*/

            //CircularPermutation c = new CircularPermutation();
            //c.func(3,2);



            //NaryTreeTester.Test();
            //GraphTester.Test();

            /*MonkAndChamberOfSecrets t1 = new MonkAndChamberOfSecrets();
             * t1.func();*/

            /*BinaryTree bt = new BinaryTree();
             * bt.InsertNode( 1);
             * bt.InsertNode( 2);
             * bt.InsertNode( 3);
             * bt.InsertNode( 4);
             * bt.InsertNode( 5);
             * bt.InsertNode( 6);
             * bt.InsertNode(7);
             * /*bt.InsertNode(8);
             * bt.InsertNode(9);
             * bt.InsertNode(10);
             * bt.InsertNode(11);
             * bt.InsertNode(12);
             * bt.InsertNode(13);
             * bt.InsertNode(14);
             * bt.InsertNode(15);
             *
             * Console.WriteLine("Preorder traversal");
             * bt.PreOrderTraversal();
             * Console.WriteLine("Level order traversal");
             * bt.LevelOrderTraversal();
             * Console.WriteLine("Postorder traversal");
             * bt.PostOrderTraversal();
             * Console.WriteLine("Inorder traversal");
             * bt.InOrderTraversal();
             *
             * /*Console.WriteLine("count of nodes: " + bt.CountNodes());
             * Console.WriteLine("Height of the tree: " + bt.CalculatHeight());
             *
             * Console.WriteLine("Deepest Node: " +  (bt.DeepestNode()!=null? bt.DeepestNode().val.ToString():"Empty tree"));*/

            /*BTNode ElementNode = bt.SearchElement(4);
             * if (ElementNode != null)
             *  Console.WriteLine("found");
             * else
             *  Console.WriteLine("not found");*/

            //Console.WriteLine("number of occurences: " + bt.NumberOfOccurencesOfElement(3));

            /*Console.Write("deepest Node of given element: ");
             * BTNode ElementNode = bt.DeepestNodeOfElement(1);
             * if (ElementNode != null)
             *  Console.WriteLine(ElementNode.val);
             * else
             *  Console.WriteLine("not found");*/

            /*bt.DeleteElement(6);
             * Console.WriteLine("Inorder traversal");
             * bt.InOrderTraversal();*/

            //Console.WriteLine("Count of leaf nodes: " + bt.LeafNodesCountRec());

            //Console.WriteLine("print all ancestor");
            //bt.PrintAllAncestor(5);

            //bt.FindTilt();

            /*bt.DeleteElement(4);
             * Console.WriteLine("left most node");
             * BTNode res = bt.LeftMostNode();
             * Console.WriteLine(res!=null? res.val.ToString() : "empty tree");
             *
             * bt.DeleteElement(15);
             * Console.WriteLine("right most node");
             * BTNode res = bt.RightMostNode();
             * Console.WriteLine(res != null ? res.val.ToString() : "empty tree");
             *
             * //Console.WriteLine("leaf nodes");
             * //bt.PrintLeafNodes();
             *
             * bt.DeleteElement(6);
             * Console.WriteLine("flattened list");
             * LinkedList<int> node = bt.FlattenTree();
             * foreach (int i in node)
             * {
             *  Console.WriteLine(i);
             * }*/

            Console.Read();


            /*Stack s = new Stack();
             * s.Push(10);
             * s.Push(1);
             * s.PrintStack();
             * Console.WriteLine(s.Pop());
             * Console.WriteLine(s.Pop());
             * Console.WriteLine(s.Pop());
             * Console.WriteLine(s.TopElement());
             * s.Push(11);
             * Console.WriteLine(s.TopElement());
             * s.PrintStack();
             * Console.Read();*/

            /*Queue q = new Queue();
             * q.Enqueue(10);
             * q.Enqueue(100);
             * q.PrintQueue();
             * Console.WriteLine(q.Dequeue());
             * q.PrintQueue();
             * Console.WriteLine(q.Dequeue());
             * Console.WriteLine(q.Dequeue());
             * Console.Read();*/

            /*LinkedList l = new LinkedList();
             * l.Add(1);
             * l.Add(3);
             * l.Add(2);
             * l.Add(4);
             * l.Add(0);
             * l.PrintList();
             * Console.Read();*/


            /*BST bst = new BST();
             * bst.insert(15);
             * bst.insert(6);
             * bst.insert(7);
             * bst.insert(3);
             * bst.insert(2);
             * bst.insert(4);
             * bst.insert(13);
             * bst.insert(9);
             * bst.insert(18);
             * bst.insert(20);
             * bst.insert(17);
             * bst.inorderTraversal();
             * Element element = bst.Search(4);
             * if (element != null)
             * {
             *  Console.WriteLine("found " + element.value.ToString());
             * }
             * else
             * {
             *  Console.WriteLine("not found ");
             * }
             *
             * element = bst.Search(10);
             * if (element != null)
             * {
             *  Console.WriteLine("found " + element.value.ToString());
             * }
             * else
             * {
             *  Console.WriteLine("not found ");
             * }
             *
             * Console.WriteLine(bst.TreeMinimum().value);
             * Console.WriteLine(bst.TreeMaximum().value);
             *
             * Console.WriteLine(bst.SuccessorFinder(13).value);
             * Console.WriteLine(bst.SuccessorFinder(15).value);
             *
             * Console.WriteLine(bst.PredecessorFinder(15).value);
             * Console.WriteLine(bst.PredecessorFinder(17).value);
             *
             * bst.Delete(2);
             *
             * Console.WriteLine("After deletion of 2");
             * bst.inorderTraversal();
             *
             * bst.Delete(3);
             *
             * Console.WriteLine("After deletion of 3");
             * bst.inorderTraversal();
             *
             * bst.Delete(13);
             *
             * Console.WriteLine("After deletion of 13");
             * bst.inorderTraversal();
             *
             * bst.Delete(15);
             *
             * Console.WriteLine("After deletion of 15");
             * bst.inorderTraversal();*/

            //Heap heap = new Heap();
            //List<int> arrList = new List<int>() { 16, 4, 10, 14, 7, 1, 3, 2, 8, 9 };
            //int len = arrList.Count;
            //heap.MaxHeapify(arr, 1);
            //heap.BuildMaxHeap(arrList);
            //for (int i = 0; i < arrList.Count; i++)
            //    Console.Write(arrList[i] + " ");
            //Console.WriteLine("");

            //Console.WriteLine("Max element: " + heap.ExtractMax(arrList));

            //for (int i = 0; i < arrList.Count; i++)
            //    Console.Write(arrList[i] + " ");
            //Console.WriteLine("");
            //Console.WriteLine("Max element: " + heap.ExtractMax(arrList));

            //for (int i = 0; i < arrList.Count; i++)
            //    Console.Write(arrList[i] + " ");
            //Console.WriteLine("");
            //heap.DecreaseKey(arrList, 0, 5);
            //for (int i = 0; i < arrList.Count; i++)
            //    Console.Write(arrList[i] + " ");

            /*LastStoneWeight lastStoneWeight = new LastStoneWeight();
             * Console.Write(lastStoneWeight.LastStoneWeightCalc(new [] {0}));*/

            /*Heap heap = new Heap();
             * List<int> arrList = new List<int>() { 8, 5, 7, 4, 2, 6, 1 };
             * int len = arrList.Count;
             * //heap.MinHeapify(arrList, 1);
             * heap.BuildMinHeap(arrList);
             * for (int i = 0; i < arrList.Count; i++)
             *  Console.Write(arrList[i] + " ");
             * Console.WriteLine("");
             *
             * Console.WriteLine("Min element: " + heap.ExtractMin(arrList));
             * for (int i = 0; i < arrList.Count; i++)
             *  Console.Write(arrList[i] + " ");
             * Console.WriteLine("");
             * Console.WriteLine("Min element: " + heap.ExtractMin(arrList));
             * for (int i = 0; i < arrList.Count; i++)
             *  Console.Write(arrList[i] + " ");
             * Console.WriteLine("");
             * Console.WriteLine("Min element: " + heap.ExtractMin(arrList));
             * for (int i = 0; i < arrList.Count; i++)
             *  Console.Write(arrList[i] + " ");
             * Console.WriteLine("");*/
        }
Exemplo n.º 4
0
        public static void Main(string[] args)
        {
            WordDictionary wd = new WordDictionary();

            wd.AddWord("bad");
            wd.AddWord("dad");
            wd.AddWord("mad");
            Console.Write(wd.Search("pad"));
            Console.Write(wd.Search("bad"));
            Console.Write(wd.Search(".ad"));
            Console.Write(wd.Search("b.."));
            KClosedToOrigin kC = new KClosedToOrigin();
            //int[][] points = new int[2][];
            //points[0] = new int[] { 1, 0 };
            //points[1] = new int[] { 0, 1 };
            //kC.KClosest(points, 2);
            TopKWithSortedDictionary topK = new TopKWithSortedDictionary();
            //topK.TopKFrequent(new int[] {1,1,1,2,2,3 }, 2);
            CourseScheduling_AdjMatrix_Courses courses = new CourseScheduling_AdjMatrix_Courses();
            //char[][] grid = new char[4][];
            //grid[0] = new char[] {'X', 'X', 'O', 'O'}; // { '1','1','0','0', '0'};
            //grid[2] = new char[] { 'X', 'O', 'O', 'X' }; // { '1', '1', '0' , '0', '0' };
            //grid[3] = new char[] { 'X', 'X', 'O', 'X' }; // { '0','0','1','0','0' };
            //grid[1] = new char[] { 'X', 'O', 'X', 'X' }; // { '0','0','0','1','1'};
            SurroundedRegions s = new SurroundedRegions();
            //s.Solve(grid);
            NumberOfIslands n = new NumberOfIslands();
            //var arr = new int[5, 4]
            //                    {
            // {1,1, 0, 0},
            // {0,0, 1, 0},
            // {0,0, 0, 0},
            // {1,0, 1, 1},
            // {1,1, 1, 1},
            //                    };
            //n.numberAmazonGoStores(5, 4, arr);

            MinCostInAGrid minC = new MinCostInAGrid();

            int[][] grid = new int[4][];
            grid[0] = new int[] { 1, 1, 1, 1 };
            grid[1] = new int[] { 2, 2, 2, 2 };
            grid[2] = new int[] { 1, 1, 1, 1 };
            grid[3] = new int[] { 2, 2, 2, 2 };
            //minC.MinCost(grid);

            //n.NumIslands(grid);
            CriticalRoutersInANetwork rt = new CriticalRoutersInANetwork();
            //List<List<int>> ls = new List<List<int>> {
            //    new List<int> {1,2},
            //    new List<int> {2,3},
            //    new List<int> {3,4},
            //    new List<int> {4,5},
            //    new List<int> {5,1},
            //};
            //rt.CriticalRouters(6,7,ls);


            // courses.FindOrder(4, prerequisites);
            // example ex = new example();
            // int[] arr = new int[] {4,5,2,7,8 };
            //Console.Write(ex.heapSort(arr, 5));
            LevelOrder_BottomUp lvlOrder = new LevelOrder_BottomUp();
            //TreeNode root = new TreeNode(5);
            //root.left = new TreeNode(4);
            //root.right = new TreeNode(8);
            //root.right.left = new TreeNode(13);
            //root.right.right = new TreeNode(4);
            //root.left.left = new TreeNode(11);
            //root.left.left.left = new TreeNode(7);
            //root.left.right = new TreeNode(2);
            //Solution sl = new Solution();
            //sl.HasPathSum(root, 22);
            // lvlOrder.LevelOrderBottom(root);
            WordLadder_BFS wl = new WordLadder_BFS();

            wl.LadderLength_BFS("hit", "cog", new string[] { "hot", "dot", "dog", "lot", "log", "cog" });
            // WordLadder_BFS_LessEfficient wlbfs = new WordLadder_BFS_LessEfficient();
            // wlbfs.FindLadders("hit","cog",new string[] { "hot", "dot", "dog", "lot", "log", "cog" });
            TrieDataStructure obj = new TrieDataStructure();
            // obj.InsertWord("spinclass");
            //bool exists = obj.Search("spin");
            //   bool startsWith = obj.StartsWith("spin");

            //int nodes = 3;
            List <List <int> > graph = new List <List <int> >();
            //graph = CreateGraph(nodes);

            //AddEdge(graph, 0, 1);
            //AddEdge(graph, 0, 2);
            // AddEdge(graph, 1, 2);
            //AddEdge(graph, 2, 3);
            //AddEdge(graph, 3, 4);
            //AddEdge(graph, 2, 5);
            //AddEdge(graph, 5, 6);
            //AddEdge(graph, 6, 7);
            //AddEdge(graph, 7, 8);
            //AddEdge(graph, 8, 5);
            //BridgesAjacencyList bridge = new BridgesAjacencyList(graph, nodes);
            //List<int> bridges = bridge.FindBridges();

            // print the bridges
            //for (int i = 0; i < bridges.Count/2; i++)
            //{
            //    int node1 = bridges[2*i];
            //    int node2 = bridges[2 * i + 1];
            //    Console.WriteLine("Bridge is between node1: " + node1.ToString() + " and node2: " + node2.ToString());
            //}

            //ArticulationPointAdjacencyList artAdj = new ArticulationPointAdjacencyList(graph, nodes);
            //bool[] isArticulationPoint = artAdj.FindArticulationPoints();

            //for (int i = 0; i < nodes; i++)
            //{
            //    if (isArticulationPoint[i])
            //    {
            //        Console.WriteLine("ArticulationPoint is at index : " + i);
            //    }
            //}
            CriticalConnectionsInANetwork cr = new CriticalConnectionsInANetwork();
            //IList<IList<int>> connections = new List<IList<int>>();
            //connections.Add(new List<int>() {0,1 });
            //connections.Add(new List<int>() { 1, 2 });
            //connections.Add(new List<int>() { 2,0 });
            //connections.Add(new List<int>() { 1,3 });
            //cr.CriticalConnections(4, connections);


            PrimsAlgorithm prims = new PrimsAlgorithm();

            //int[,] pm = new int[,] { { 0, 2, 0, 6, 0 },
            //                          { 2, 0, 3, 8, 5 },
            //                          { 0, 3, 0, 0, 7 },
            //                          { 6, 8, 0, 0, 9 },
            //                          { 0, 5, 7, 9, 0 } };
            //prims.PrimsMinSpanningTree(pm, 5);

            Console.ReadKey();
        }