Bir dizenin belirli sayıda ünsüz ve sesli harf içerip içermediği nasıl kontrol edilir?
Aug 17 2020
Aşağıdaki sorunun cevabını programlı olarak kontrol etmeye çalışıyorum. Elle hesaplama yapmak mümkün olmalı ama bu benim sorum değil.
"aeeiuchklpr"
11 uzunluğunda bir dizi verildiğinde . "E" karakteri iki kez geçer. Bu bir yazım hatası değildir. Verilen dizenin kaç tane 6-permütasyonu var? Kısıtlamalar aşağıdaki gibi verilmiştir
- ilk karakter "h" olmalıdır
- son karakter sesli harf olmalıdır
- ünsüzlerin sayısı tam olarak 4 olmalıdır
- ünlülerin sayısı tam olarak 2 olmalıdır
Girişim
Yukarıdaki son iki gereksinimi nasıl kontrol edeceğimi bilmiyorum. İşte benim girişimim
Select[Permutations[StringSplit["aeeiuchklpr", ""], {6}],
First[#] == "h" &&
(Last[#] == "a" || Last[#] == "e" || Last[#] == "i" ||
Last[#] == "u") &] // Length
Yanıtlar
6 Hausdorff Aug 17 2020 at 12:26
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 Aug 18 2020 at 18:23
Kısıtlı bir model kullanarak, tek satırlık olarak biraz farklı uygulama:
Count[Permutations[
Characters["aeeiuchklpr"], {6}], {"h", m__,
vowels = ("a" | "e" | "i" | "o" | "u")} /; Count[{m}, vowels] == 1]
verim
3120
Nicole Kidman, Michael Keaton ve Val Kilmer'in Batman Olarak Paylaştığı Bu 1 Çekici Özelliğe Bayıldı
Gene Simmons, KISS Çizgi Romanlarının Potansiyel Olarak "İnsanlığı Yeniden Yaratabileceğini" Söyledi
Tom Girardi Dolandırıcılık Suçlamalarından Yargılanma Yetkisinin Belirlenmesi İçin Duruşmaya Katıldı
Kevin Jonas'ın Kızı Alena, Doğum Günü Fotoğrafında Büyümüş Görünüyor: '9 Yaşında Gerçek Hissetmiyor'