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); }
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; } } }