मान लीजिए कि हमारे पास एक संख्या है, हमें यह जांचना है कि संख्या के द्विआधारी प्रतिनिधित्व में 0 और 1 के लगातार ब्लॉकों की संख्या समान है या नहीं। हमें यह ध्यान रखना होगा कि 0 और सभी 1 वाली संख्या को 0 और 1 के ब्लॉक की संख्या नहीं माना जाता है।
इसलिए, यदि इनपुट संख्या =455 की तरह है, तो आउटपुट सही होगा, क्योंकि इस संख्या का द्विआधारी प्रतिनिधित्व 111000111 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- bin_form :=संख्या का द्विआधारी रूप
- one_count :=एक नया सेट
- गिनती :=1
- मैं के लिए 0 से लेकर bin_form-1 की बिट काउंट तक के लिए
- यदि bin_form[i] bin_form[i + 1] के समान है, तो
- गिनती :=गिनती + 1
- अन्यथा,
- गिनती को one_count में सम्मिलित करें
- गिनती :=1
- यदि bin_form[i] bin_form[i + 1] के समान है, तो
- यदि one_count का आकार 1 के समान है, तो
- सही लौटें
- झूठी वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण कोड
def solve(num): bin_form = bin(num).replace("0b", "") one_count = set() count = 1 for i in range(len(bin_form)-1): if bin_form[i] == bin_form[i + 1]: count += 1 else: one_count.add(count) count = 1 if len(one_count) == 1: return True return False num = 455 print(solve(num))
इनपुट
455
आउटपुट
True