コード例 #1
0
        public static List <MatrixItem> generatePossiblityMatrix(this List <item> squares)
        {
            List <int>        UniquePossibles = squares.getPossibleUnique();
            List <MatrixItem> returnMe        = new List <MatrixItem>();

            //Trace.WriteLine(string.Format("Generating possibility matrix for {0} items", squares.Count.ToString()));

            if (squares.Count == 0)
            {
                return(null);
            }

            if (squares.Count == 2)
            {
                MatrixItem newGuy = new MatrixItem();
                newGuy.ControlPossibles = new List <int>();
                newGuy.ControlPossibles.Add(UniquePossibles[0]);
                newGuy.ControlPossibles.Add(UniquePossibles[1]);
                newGuy.items          = squares.Where(x => x.possibles.Contains(UniquePossibles[0])).Where(y => y.possibles.Contains(UniquePossibles[1])).ToList();
                newGuy.UnquePossibles = newGuy.items.getPossibleUnique();
                returnMe.Add(newGuy);
            }
            else
            {
                //generate the items for the list
                for (int outer = 0; outer < UniquePossibles.Count - 1; outer++)
                {
                    for (int inner = outer + 1; inner < UniquePossibles.Count; inner++)
                    {
                        //Trace.WriteLine(string.Format("Creating Matrix items {0}-{1}", outer.ToString(), inner.ToString()));
                        MatrixItem newGuy = new MatrixItem();
                        newGuy.ControlPossibles = new List <int>();
                        newGuy.ControlPossibles.Add(UniquePossibles[outer]);
                        newGuy.ControlPossibles.Add(UniquePossibles[inner]);
                        newGuy.items          = squares.Where(x => x.possibles.Contains(UniquePossibles[outer])).Where(y => y.possibles.Contains(UniquePossibles[inner])).ToList();
                        newGuy.UnquePossibles = newGuy.items.getPossibleUnique();
                        returnMe.Add(newGuy);
                    }
                }
            }

            return(returnMe);
        }
コード例 #2
0
        public static List <MatrixItem> generateSimpleMatrix(this List <item> squares)
        {
            List <MatrixItem> returnMe = new List <MatrixItem>();

            //Trace.WriteLine(string.Format("Generating possibility matrix for {0} items", squares.Count.ToString()));

            if (squares.Count == 0)
            {
                return(null);
            }

            for (int i = 1; i < 10; i++)
            {
                MatrixItem newGuy = new MatrixItem();
                newGuy.ControlPossibles = new List <int>();
                newGuy.ControlPossibles.Add(i);
                newGuy.items          = squares.Where(x => x.possibles.Contains(i)).ToList();
                newGuy.UnquePossibles = newGuy.items.getPossibleUnique();
                returnMe.Add(newGuy);
            }

            return(returnMe);
        }