示例#1
0
        public static (IMutableBidirectionalGraph <CyclicCluster, CondensedEdge <DisplayNode, DisplayEdge, CyclicCluster> > Clustered, IBidirectionalGraph <DisplayNode, DisplayEdge> Simple) GetFullClusteredGraph(this NodeGraph nodeGraph)
        {
            var rootNodes        = nodeGraph.Nodes.Values;
            var fullDisplayGraph = GetDisplaySubgraph(nodeGraph, rootNodes, SetUtils.GetEmpty <NodeKey>());

            return(fullDisplayGraph.GetClusteredGraph(), fullDisplayGraph);
        }
示例#2
0
        public static IEnumerable <long> Get()
        {
            var pandigitals =
                SetUtils.Permutations(Enumerable.Range(0, 10).Select(x => (long)x))
                .Select(d => d.Reverse())
                .Where(digits => digits.First() != 0);

            return(pandigitals.Where(HasSubstringDivisibility).Select(x => x.DigitsToNumber()));
        }
示例#3
0
        public void ConvertAllReturnCorrectValue()
        {
            ArraySet <int> arrSet = new ArraySet <int>();

            arrSet.Add(10);

            Assert.IsInstanceOfType(SetUtils.ConvertAll <int, MySet.HashSet <int> >(arrSet), typeof(MySet.HashSet <int>));
            Assert.IsInstanceOfType(SetUtils.ConvertAll <int, ArraySet <int> >(arrSet), typeof(ArraySet <int>));
            Assert.IsInstanceOfType(SetUtils.ConvertAll <int, LinkedSet <int> >(arrSet), typeof(LinkedSet <int>));
        }
示例#4
0
        public void ExistMustReturnFalseIfItemsNonExist()
        {
            ArraySet <int> arrSet = new ArraySet <int>();

            arrSet.Add(1);
            arrSet.Add(3);

            Assert.IsFalse(SetUtils.Exists(arrSet, (item) => {
                return(item == 2);
            }));
        }
示例#5
0
        public void ExistMustReturnTrueIfItemsExist()
        {
            ArraySet <int> arrSet = new ArraySet <int>();

            arrSet.Add(1);
            arrSet.Add(3);

            Assert.IsTrue(SetUtils.Exists(arrSet, (item) => {
                return(item == 1);
            }));
        }
示例#6
0
        public void ConvertAllReturnCorrectNumberOfElements()
        {
            ArraySet <int> arrSet        = new ArraySet <int>();
            int            numOfElements = 50;

            for (int i = 0; i < numOfElements; i++)
            {
                arrSet.Add(i);
            }

            Assert.AreEqual(numOfElements, SetUtils.ConvertAll <int, MySet.HashSet <int> >(arrSet).Count);
            Assert.AreEqual(numOfElements, SetUtils.ConvertAll <int, ArraySet <int> >(arrSet).Count);
            Assert.AreEqual(numOfElements, SetUtils.ConvertAll <int, LinkedSet <int> >(arrSet).Count);
        }
示例#7
0
        public void CheckForAllReturnTrue()
        {
            ArraySet <int> arrSet        = new ArraySet <int>();
            int            numOfElements = 50;

            for (int i = 0; i < numOfElements; i++)
            {
                arrSet.Add(i);
            }

            Assert.IsTrue(SetUtils.CheckForAll <int>(arrSet, (item) => {
                return(item >= 0 && item <= numOfElements);
            }));
        }
示例#8
0
        public void EternityInterrupted()
        {
            var items = new List <Interval>
            {
                new Interval(DateTimeOffset.MinValue, DateTimeOffset.MaxValue),
                new Interval(DateTime.Parse("2019/01/08"), DateTime.Parse("2019/01/10")),
            };

            var joines = SetUtils.Merge(items);

            joines.Select(x => x.ToString()).Should().BeEquivalentTo(

                "01/01/0001 => 08/01/2019",
                "08/01/2019 => 10/01/2019",
                "10/01/2019 => 31/12/9999");
        }
示例#9
0
        public static long Get()
        {
            var pandigit = 9;
            var prime    = 0;

            while (prime == 0)
            {
                var arr = SetUtils.LexicographicPermutations(Enumerable.Range(1, pandigit--))
                          .Select(x => x.Reverse().DigitsToNumber())
                          .Reverse()
                          .ToArray();
                prime = arr.FirstOrDefault(x => PrimeUtils.IsPrime(x));
            }

            return(prime);
        }
示例#10
0
        public void Breaking()
        {
            var input =
                @"01/01/2017 +00:00	31/01/2017 +00:00
01/02/2017 +00:00	28/02/2017 +00:00
";
            var intervals = from line in input.Lines()
                            let split                                                       = line.Split("\t")
                                                              let start                     = split[0]
                                                                                    let end = split[1]
                                                                                              select new Interval(DateTimeOffset.Parse(start), DateTimeOffset.Parse(end));

            var joines = SetUtils.Merge(intervals);

            joines.Select(x => x.ToString()).Should().BeEquivalentTo(
                "01/01/2017 => 31/01/2017",
                "01/02/2017 => 28/02/2017");
        }
示例#11
0
        public void FindAllReturnCorrectValue()
        {
            ArraySet <int> arrSet = new ArraySet <int>();

            for (int i = 0; i < 50; i++)
            {
                arrSet.Add(i);
            }

            ArraySet <int> newArrSet = SetUtils.FindAll <int, ArraySet <int> >(arrSet, (item) => {
                return(item % 2 == 0);
            });

            foreach (int item in newArrSet)
            {
                Assert.IsTrue(item % 2 == 0);
            }
            Assert.AreEqual(25, newArrSet.Count);
        }
示例#12
0
        public void ForEachRunFuncForEverItem()
        {
            ArraySet <int> arrSet        = new ArraySet <int>();
            int            numOfElements = 50;

            bool[] testArray = new bool[numOfElements];
            for (int i = 0; i < numOfElements; i++)
            {
                arrSet.Add(i);
                testArray[i] = false;
            }

            SetUtils.ForEach <int>(arrSet, (item) => {
                testArray[item] = true;
            });

            for (int i = 0; i < numOfElements; i++)
            {
                Assert.IsTrue(testArray[i]);
            }
        }
示例#13
0
        public void Complex()
        {
            var items = new List <Interval>
            {
                new Interval(DateTime.Parse("2019/01/1"), DateTime.Parse("2019/01/15")),
                new Interval(DateTime.Parse("2019/01/08"), DateTime.Parse("2019/01/10")),
                new Interval(DateTime.Parse("2019/01/16"), DateTime.Parse("2019/01/31")),
                new Interval(DateTime.Parse("2019/01/20"), DateTime.Parse("2019/01/20"))
            };

            var joines = SetUtils.Merge(items);

            joines.Select(x => x.ToString()).Should().BeEquivalentTo(new[]
            {
                "01/01/2019 => 08/01/2019",
                "08/01/2019 => 10/01/2019",
                "10/01/2019 => 15/01/2019",
                "16/01/2019 => 20/01/2019",
                "20/01/2019 => 20/01/2019",
                "20/01/2019 => 31/01/2019",
            });
        }
示例#14
0
        public static IEnumerable <string> Main()
        {
            var fourDigitPrimes = new HashSet <long>(PrimeUtils.Primes
                                                     .SkipWhile(x => x.ToString().Length < 4)
                                                     .TakeWhile(x => x.ToString().Length == 4));

            while (fourDigitPrimes.Any())
            {
                var prime             = fourDigitPrimes.First();
                var permutations      = SetUtils.Permutations(MiscUtils.GetDigits(prime)).Select(x => (long)x.DigitsToNumber()).Where(x => x > 1000);
                var primePermutations = fourDigitPrimes.Intersect(permutations).ToArray();

                if (primePermutations.Length >= 3)
                {
                    var threes = primePermutations.Choose(3).ToArray();
                    foreach (var special in threes.Where(HaveEqualDifference))
                    {
                        yield return(string.Join("", special.OrderBy(x => x)));
                    }
                }

                fourDigitPrimes.ExceptWith(primePermutations);
            }
        }
示例#15
0
        public async Task When_MultiDependency_Edge()
        {
            using (var workspace = WorkspaceUtils.GetSubjectSolution())
            {
                var project = workspace.CurrentSolution.Projects.Single(p => p.Name == "SubjectSolution");

                var graph = await NodeGraph.BuildGraph(CompilationCache.CacheWithSolution(workspace.CurrentSolution), ct : default);

                var someClassNode = graph.Nodes[TypeNodeKey.GetFromFullName("SubjectSolution.SomeClass")];
                var deepClassNode = graph.Nodes[TypeNodeKey.GetFromFullName("SubjectSolution.SomeClassDepth5")];

                var roots = new HashSet <Node>();
                roots.Add(someClassNode);
                roots.Add(deepClassNode);

                var paths = NodeGraphExtensions.GetMultiDependencyRootPaths(graph, roots).ToArray();
                var path  = paths.Single();

                var displayGraph = graph.GetDisplaySubgraph(subgraphNodes: roots, pinnedNodes: SetUtils.GetEmpty <NodeKey>());

                var multiEdges = displayGraph.Edges.OfType <MultiDependencyDisplayEdge>();

                AssertEx.ContainsSingle(multiEdges, m => m.Source.DisplayString.EndsWith("SomeClass") && m.Target.DisplayString.EndsWith("SomeClassDepth5"));
            }
        }
示例#16
0
 public static IEnumerable <int[]> PandigitalNumbers(int pandigital)
 {
     return(SetUtils.Permutations(Enumerable.Range(1, pandigital)));
 }
示例#17
0
 public static IBidirectionalGraph <DisplayNode, DisplayEdge> GetDisplaySubgraph(this NodeGraph nodeGraph, IList <ITypeSymbol> rootSymbols)
 => GetDisplaySubgraph(nodeGraph, rootSymbols.Select(tpl => nodeGraph.GetNodeForType(tpl)).Trim(), SetUtils.GetEmpty <NodeKey>());
示例#18
0
 public void Version1_Choose()
 {
     var res = SetUtils.Choose(new [] { 1, 2, 3, 4, 5 }, 3);
 }