मैं दी गई चौड़ाई के भीतर 1 की जोड़ी के लिए सभी संभावित संयोजन उत्पन्न करने की कोशिश कर रहा हूं।1 बिट पर सेट बिट्स की जोड़ी के लिए सभी संयोजन उत्पन्न करें?
000000
000011
000110
001100
001111
011000
011011
011110
110000
110011
110110
111100
111111
अगर मैं चर है:
मान लीजिए कि बिट चौड़ाई 6 दो, यानी संख्या 32. यह मैं उत्पन्न करने के लिए चाहते हैं क्या है
var a = 1,
b = 2;
num = a | b;
और एक पाश बनाने कि मैं width - 1
बार लूप होगा, और जहां मैं a << 1
और b << 1
दोनों को स्थानांतरित करता हूं, मुझे एक जोड़ी के लिए सभी संयोजन मिलेंगे। उसके बाद, मैं बहुत ज्यादा अटक गया हूँ।
कोई, कृपया कुछ मदद प्रदान कर सकता है।
अद्यतन: काम कर रहे उदाहरण
Barmar के गणितीय दृष्टिकोण के आधार पर, यह है कि क्या मैं JSFiddle पर
var arr = [],
arrBits = [];
function getCombs(pairs, startIdx) {
var i, j, val = 0, tmpVal, idx;
if (startIdx + 2 < pairs) {
startIdx = arr.length - 1;
pairs -= 1;
}
if (pairs < 2) {
return;
}
for (i = 0; i < pairs-1; i++) {
idx = startIdx - (i * 2);
val += arr[idx];
}
for (j = 0; j < idx - 1; j++) {
arrBits.push((val + arr[j]).toString(2));
}
getCombs(pairs, startIdx-1);
}
(function initArr(bits) {
var i, val, pairs, startIdx;
for (i = 1; i < bits; i++) {
val = i == 1 ? 3 : val * 2;
arr.push(val);
arrBits.push(val.toString(2));
}
pairs = Math.floor(bits/2);
startIdx = arr.length - 1;
getCombs(pairs, startIdx);
console.log(arrBits);
}(9));
कार्य उदाहरण लागू करने के लिए
http://jsfiddle.net/zywc5/
आपकी संयोजन सूची में बहुत सारे संयोजन गायब हैं। 000001 की तरह। वास्तव में, यदि आप 0 और 1 और चौड़ाई 6 के सभी संयोजन चाहते हैं, तो आपके पास 64 संभावित संयोजन होना चाहिए। क्या आपकी सूची केवल एक नमूना है या कुछ और है जो आप नहीं कह रहे हैं? – lolol
1 में 1 की एक जोड़ी नहीं है। उनके उदाहरण के आधार पर, वह उन सभी अनुक्रमों की तलाश में है जिनमें आसन्न 1 के जोड़े की संख्या भी शामिल है। – Barmar
जैसा कि मैंने अपने प्रश्न पर कहा था, मैं केवल '1' की जोड़ी के लिए सभी संभावित संयोजन चाहता था ... इसलिए कहीं भी 1 लटकने की अनुमति नहीं है – micadelli