कैसे जांचें कि क्या एक स्ट्रिंग में कुछ निश्चित व्यंजन और स्वर हैं?
मैं निम्नलिखित समस्या के उत्तर को प्रोग्रामेटिक रूप से जाँचने का प्रयास कर रहा हूँ। हाथ से मैन्युअल गणना संभव है लेकिन यह मेरा सवाल नहीं है।
"aeeiuchklpr"
लंबाई की एक स्ट्रिंग को देखते हुए 11. चरित्र "ई" दो बार होता है। यह एक टाइपो नहीं है। दिए गए तार के कितने 6-क्रमपरिवर्तन हैं? अड़चनें इस प्रकार दी गई हैं
- पहला वर्ण "h" होना चाहिए
- अंतिम चरित्र एक स्वर होना चाहिए
- व्यंजन की संख्या ठीक 4 होनी चाहिए
- स्वरों की संख्या ठीक 2 होनी चाहिए
प्रयास
मुझे नहीं पता कि ऊपर की अंतिम दो आवश्यकता को कैसे जांचना है। यहाँ मेरा प्रयास है
Select[Permutations[StringSplit["aeeiuchklpr", ""], {6}],
First[#] == "h" &&
(Last[#] == "a" || Last[#] == "e" || Last[#] == "i" ||
Last[#] == "u") &] // Length
जवाब
6 Hausdorff
VowelQ[s_String] := MatchQ[s, "a" | "e" | "i" | "o" | "u"];
Select[Permutations[StringSplit["aeeiuchklpr", ""], {6}],
First[#] == "h" && VowelQ[Last@#] && Count[VowelQ /@ #, True] == 2 &] // Length
3120
3 ArminVollmer
प्रतिबंधित पैटर्न का उपयोग करके एक-लाइनर के रूप में थोड़ा अलग कार्यान्वयन:
Count[Permutations[
Characters["aeeiuchklpr"], {6}], {"h", m__,
vowels = ("a" | "e" | "i" | "o" | "u")} /; Count[{m}, vowels] == 1]
पैदावार
3120