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); }
public void AndNot(MyBitArray other) { for (int i = 0; i < bits.Length; ++i) { bits[i] &= ~other.bits[i]; } }
public object Clone() { MyBitArray n = new MyBitArray(bits.Length * 64); for (int i = 0; i < bits.Length; ++i) { n.bits[i] = bits[i]; } return(n); }
public bool NotAndIsZero(MyBitArray other) { for (int i = 0; i < bits.Length; ++i) { if (((~bits[i]) & other.bits[i]) != 0) { return(false); } } return(true); }
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; } } }