मान लीजिए हमारे पास n अलग-अलग अंग्रेजी अक्षरों की एक सरणी है। हमारे पास एक और मान k भी है। हम एक समान वितरण के साथ k अलग-अलग इंडेक्स (1-इंडेक्स्ड) चुन सकते हैं। हमें वह संभावना ज्ञात करनी है कि चुने गए k इंडेक्स में से कम से कम एक में 'a' अक्षर होगा।
उदाहरण के लिए, यदि इनपुट letters = ['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z'] k = 2 है, तो आउटपुट 64.28% होगा। (1, 2), (1, 3) जैसे संयोजन हैं जैसे 28 संयोजन हैं लेकिन उनमें से कुछ जैसे (1,2), (1,3), (6,7) ऐसे 18 जोड़े हैं जो 'a' रखते हैं, तो 18/28 = 0.6428।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- contain := 0
- total := 0
- letters के k तत्वों वाले प्रत्येक संयोजन c के लिए, करें
- यदि "a" c में मौजूद है, तो
- contain := contain + 1
- total := total + 1
- यदि "a" c में मौजूद है, तो
- contain/total लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
from itertools import combinations
def solve(letters, k):
contain = 0
total = 0
for c in combinations(letters, k):
if "a" in c:
contain += 1
total += 1
return contain/total
letters = ['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z']
k = 2
print(solve(letters, k))इनपुट
['a', 'c', 'a', 'b', 'l', 'a', 'b', 'z'], 2
आउटपुट
0.6428571428571429