Пример #1
0
        static LinkedList <MyBitArray> GetAllCandidates(int[] numbers, int length)
        {
            LinkedList <MyBitArray> result = new LinkedList <MyBitArray>();

            if (numbers.Length == 0)
            {
                result.AddLast(new MyBitArray(length));
            }
            else
            {
                foreach (int[] spaces in EnumNumberSpaces(numbers, length))
                {
                    MyBitArray can = new MyBitArray(length);
                    int        pos = 0;
                    for (int i = 0; i < spaces.Length; ++i)
                    {
                        pos += spaces[i];
                        for (int j = 0; j < numbers[i]; ++j)
                        {
                            can.Set(pos++);
                        }
                    }
                    result.AddLast(can);
                }
            }
            return(result);
        }
Пример #2
0
        void GetRowSlice(int rowIndex, out MyBitArray on, out MyBitArray off)
        {
            int size = pixelStates.GetLength(0);

            on  = new MyBitArray(size);
            off = new MyBitArray(size);
            for (int i = 0; i < size; ++i)
            {
                switch (pixelStates[i, rowIndex])
                {
                case PixelStateEnum.ON:
                    on.Set(i);
                    break;

                case PixelStateEnum.OFF:
                    off.Set(i);
                    break;
                }
            }
        }