Exemple #1
0
        static void Main(string[] args)
        {
            var config = new SearchConfiguration();
            var repo   = new BitBucket(config);
            var search = new Search(repo);

            var projects = repo.GetProjects().Result;
            int i        = 0;

            while (true)
            {
                i = 0;
                projects.ForEach(p => Console.WriteLine($"{i++}. {p.Name}"));
                Console.Write("Selection : ");
                int projectNumber = Convert.ToInt32(Console.ReadLine());

                var repos = repo.GetRepos(projects[projectNumber]).Result;
                i = 0;
                repos.ForEach(r => Console.WriteLine($"{i++}. {r.Name}"));
                Console.Write("Selection : ");
                int repoNumber = Convert.ToInt32(Console.ReadLine());

                var files    = search.FindFiles(repos[repoNumber], config.FileSearchPattern).Result; //.*.csproj
                var grouping = search.GroupByPattern(files, config.ContentMatchPattern);             //TargetFramework (.*) TargetFramework
                Console.Clear();
                RunReport(grouping);
                Console.WriteLine(); Console.WriteLine();
            }
        }
Exemple #2
0
        /// <summary>
        /// Count number of consecutive 0s and 1s and group them into buckets.
        /// Iterate through the buckets and calculate longest sequence of 1s when landing on bucket of 0s.
        /// <para>Time Complexity: O(b), where b is number of bits</para>
        /// <para>Space Complexity: O(k), where k is number of bit buckets</para>
        /// </summary>
        /// <param name="number"></param>
        /// <returns></returns>
        public static int FindLongestSequence(int number)
        {
            var bitBuckets = new LinkedList <BitBucket>();

            // Convert decimal number to bits and store in the BitBucket Linked List - runtime O(b), where b is number of bits
            while (number != 0)
            {
                int bit = number & 1;
                if (bitBuckets.First == null || bitBuckets.First.Value.BitValue != bit)
                {
                    var newBucket = new BitBucket(bit);
                    bitBuckets.AddFirst(newBucket);
                }
                else
                {
                    bitBuckets.First.Value.Count++;
                }
                number >>= 1;
            }

            if (bitBuckets.First == null || bitBuckets.First.Value.IsBit1)
            {
                bitBuckets.AddFirst(new BitBucket(0));
            }

            // Loop through each bit bucket and calculate max length on each 0 - runtime O(m), where m is the number of buckets and m <= b
            int maxLength = 1;
            LinkedListNode <BitBucket> temp = bitBuckets.First;

            while (temp != null)
            {
                if (!temp.Value.IsBit1)
                {
                    int prevCount = temp.Previous?.Value.Count ?? 0;
                    int nextCount = temp.Next?.Value.Count ?? 0;
                    if (temp.Value.Count == 1)
                    {
                        maxLength = Math.Max(maxLength, prevCount + nextCount + 1);
                    }
                    else
                    {
                        maxLength = Math.Max(maxLength, Math.Max(prevCount + 1, nextCount + 1));
                    }
                }
                temp = temp.Next;
            }
            return(maxLength);
        }