समस्या विवरण
दो संख्याएं दी गई हैं। हमारा कार्य यह जांचना है कि क्या वे बाइनरी प्रतिनिधित्व में एक-दूसरे के एनाग्राम हैं या नहीं। हम इस समस्या को पायथन में Counter(iterable) विधि और डिक्शनरी तुलना का उपयोग करके जल्दी हल कर सकते हैं।
उदाहरण
इनपुट: a = 8, b = 16
आउटपुट: हां
दोनों संख्याओं के बाइनरी प्रतिनिधित्व में समान 0 और 1 हैं।
एल्गोरिदम
- दो संख्याएं दी गई हैं।
bin()फंक्शन का उपयोग करके दोनों संख्याओं को बाइनरी में बदलें औरbin()के कारण पहले दो वर्ण हटाएं।- चूंकि दोनों संख्याओं का बाइनरी प्रतिनिधित्व लंबाई में भिन्न हो सकता है, इसलिए हम छोटी स्ट्रिंग की शुरुआत में शून्य जोड़कर दोनों स्ट्रिंग को समान लंबाई का बनाएंगे।
- दोनों डिक्शनरी की तुलना करें, यदि दोनों डिक्शनरी में 0 और 1 के मान समान हैं तो दो संख्याओं के बाइनरी प्रतिनिधित्व एनाग्राम हैं अन्यथा नहीं।
उदाहरण कोड
# दो संख्याओं के बाइनरी प्रतिनिधित्व एनाग्राम हैं या नहीं जांचने का फंक्शन
from collections import Counter
def anagramoftwonumber(p1, p2):
# संख्याओं को बाइनरी में बदलें
# और आउटपुट स्ट्रिंग के पहले दो वर्ण हटाएं
bno1 = bin(p1)[2:]
bno2 = bin(p2)[2:]
# छोटी स्ट्रिंग में शून्य जोड़ें
zeros = abs(len(bno1) - len(bno2))
if (len(bno1) > len(bno2)):
bno2 = zeros * '0' + bno2
else:
bno1 = zeros * '0' + bno1
# बाइनरी प्रतिनिधित्व को डिक्शनरी में बदलें
dict1 = Counter(bno1)
dict2 = Counter(bno2)
# दोनों डिक्शनरी की तुलना करें
if dict1 == dict2:
print(p1, p2, "दो एनाग्राम संख्या हैं")
else:
print(p1, p2, "एनाग्राम संख्या नहीं हैं")
# ड्राइवर प्रोग्राम
if __name__ == "__main__":
n1 = int(input("पहली संख्या दर्ज करें ::>"))
n2 = int(input("दूसरी संख्या दर्ज करें ::>"))
anagramoftwonumber(n1, n2)
आउटपुट
पहली संख्या दर्ज करें ::>8
दूसरी संख्या दर्ज करें ::>16
8 16 दो एनाग्राम संख्या हैं
पहली संख्या दर्ज करें ::>3
दूसरी संख्या दर्ज करें ::>2
3 2 एनाग्राम संख्या नहीं हैं