मान लीजिए कि हमारे पास एक सकारात्मक संख्या n है, हमें यह जांचना है कि दी गई संख्या n के बिट पैटर्न में निरंतर 1s की संख्या बाएं से दाएं बढ़ रही है या नहीं।
इसलिए, यदि इनपुट n =1775 जैसा है, तो आउटपुट सही होगा, क्योंकि n का बाइनरी प्रतिनिधित्व 11011101111 है, इसलिए निरंतर 1s की संख्या [2, 3, 4] है जो बढ़ रही है
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- bits_pattern :=n के बिट्स की एक नई सूची
- bit_count :=bit_pattern का आकार
- p_cnt:=0, c_cnt:=0
- मैं :=0
- जबकि मैं
- यदि bit_pattern[i] 1 के समान है, तो
- c_cnt:=c_cnt + 1, i:=i + 1
- अन्यथा जब bit_pattern[i - 1] 0 है, तब
- i :=i + 1, c_cnt :=0
- अगले पुनरावृत्ति के लिए जाएं
- अन्यथा,
- अगर c_cnt
- वापसी 0
- i :=i + 1, p_cnt :=c_cnt, c_cnt :=0
- यदि bit_pattern[i] 1 के समान है, तो
- झूठी वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
def solve(n): bits_pattern = list(bin(n)) bit_count = len(bits_pattern) p_cnt = 0 c_cnt = 0 i = 0 while i < bit_count: if bits_pattern[i] == '1': c_cnt += 1 i += 1 elif bits_pattern[i - 1] == '0': i += 1 c_cnt = 0 continue else: if c_cnt < p_cnt: return 0 i += 1 p_cnt = c_cnt c_cnt = 0 if p_cnt > c_cnt and c_cnt != 0: return False return True n = 1775 print(solve(n))
इनपुट
1775
आउटपुट
True