@Override public List<Variable> next() { BitSet resultBitSet = (BitSet) nextBitSet.clone(); int b = nextBitSet.previousClearBit(n - 1); int b1 = nextBitSet.previousSetBit(b); if (b1 == -1) { advanceToNextK(); } else { nextBitSet.clear(b1); nextBitSet.set(b1 + 1, b1 + (n - b) + 1); nextBitSet.clear(b1 + (n - b) + 1, n); } resultList.clear(); for (int i = 0; i < n; ++i) { if (resultBitSet.get(i)) { resultList.add(permuteThis.get(i)); } } return unmodifyableViewOfResult; } }
public int previousClearBit(int i) {return myBits.previousClearBit(i);} public boolean intersects(BitSet set) {return myBits.intersects(set);}
private static int getLastUnusedPos(BitSet used, int lastPos) { return used.previousClearBit(lastPos); }
public int previousClearBit(int i) {return myBits.previousClearBit(i);} public boolean intersects(BitSet set) {return myBits.intersects(set);}
@Override public int previousValueOut(int aValue) { int val = aValue - offset; if(val <= -1 || val > values.length()){ return aValue - 1; }else{ val = values.previousClearBit(val - 1); return val + offset; } }
int maxNumberOfConsecutiveBits(BitSet bs) { int maxLength = 0; int onesI = bs.length(); // Points to the prior 0. for (int i = onesI; (i = bs.previousClearBit(i - 1)) >= 0; ) { int length = onesI - 1 - i; maxLength = Math.max(maxLength, length); i = bs.previousSetBit(i - 1) + 1; // Heuristic, optional. onesI = i; } return maxLength; }
static void genCombinations(int n, int k) { BitSet bs = new BitSet(n); bs.set(0, k); while(true) { // output for(int i=0; i<n; i++) System.out.print(bs.get(i) ? "1" : "0"); System.out.println(); int b = bs.previousClearBit(n-1); // the last zero int b1 = bs.previousSetBit(b); // the last one before that zero if(b1 == -1) return; bs.clear(b1); bs.set(b1+1, b1+(n-b)+1); bs.clear(b1+(n-b)+1, n); } } public static void main(String[] args) { genCombinations(5, 3); }
@Override public List<Variable> next() { BitSet resultBitSet = (BitSet) nextBitSet.clone(); int b = nextBitSet.previousClearBit(n - 1); int b1 = nextBitSet.previousSetBit(b); if (b1 == -1) { advanceToNextK(); } else { nextBitSet.clear(b1); nextBitSet.set(b1 + 1, b1 + (n - b) + 1); nextBitSet.clear(b1 + (n - b) + 1, n); } resultList.clear(); for (int i = 0; i < n; ++i) { if (resultBitSet.get(i)) { resultList.add(permuteThis.get(i)); } } return unmodifyableViewOfResult; } }
private int tryFindAvailableCode(int code) { int next = codesFilter.nextClearBit(code); if (next != -1 && next < max(maxRandomSize)) return add(next); next = codesFilter.previousClearBit(code); if (next != -1) return add(next); return -1; }
private int tryFindAvailableCode(int code) { int next = codesFilter.nextClearBit(code); if (next != -1 && next < max(maxRandomSize)) return add(next); next = codesFilter.previousClearBit(code); if (next != -1) return add(next); return -1; }
private int tryFindAvailableCode(int code) { int next = codesFilter.nextClearBit(code); if (next != -1 && next < max(maxRandomSize)) return add(next); next = codesFilter.previousClearBit(code); if (next != -1) return add(next); return -1; }
for (int i = 0; i < n; i++) res[i] = bs.get(i) ? '1' : '0'; int b = bs.previousClearBit(n - 1); int b1 = bs.previousSetBit(b); if (b1 == -1)
if (!bits.isEmpty()) { to = bits.previousSetBit(bits.length()); from = bits.previousClearBit(to) + 1; bits.clear(from, to + 1); BitSet old = bits;
int commentLine = getNodeLine(childNode); if (myCommentsLines.get(commentLine)) { return myCommentsAlignmentMap.get(myCommentsLines.previousClearBit(commentLine));