วิธีตรวจสอบว่าสตริงมีพยัญชนะและสระจำนวนหนึ่งหรือไม่?
Aug 17 2020
ฉันกำลังพยายามตรวจสอบคำตอบของปัญหาต่อไปนี้โดยใช้โปรแกรม การคำนวณด้วยตนเองต้องทำได้ แต่ไม่ใช่คำถามของฉัน
กำหนดสตริง
"aeeiuchklpr"
ความยาว 11 อักขระ "e" เกิดขึ้นสองครั้ง ไม่ใช่การพิมพ์ผิด มี 6 เรียงสับเปลี่ยนของสตริงที่กำหนดมีกี่แบบ? ข้อ จำกัด มีดังนี้
- อักขระตัวแรกต้องเป็น "h"
- อักขระตัวสุดท้ายต้องเป็นเสียงสระ
- จำนวนพยัญชนะต้องเป็น 4 ตัว
- จำนวนสระต้องเป็น 2
พยายาม
ฉันไม่ทราบวิธีตรวจสอบข้อกำหนดสองข้อสุดท้ายข้างต้น นี่คือความพยายามของฉัน
Select[Permutations[StringSplit["aeeiuchklpr", ""], {6}],
First[#] == "h" &&
(Last[#] == "a" || Last[#] == "e" || Last[#] == "i" ||
Last[#] == "u") &] // Length
คำตอบ
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
การใช้งานที่แตกต่างกันเล็กน้อยเป็นซับเดียวโดยใช้รูปแบบที่ จำกัด :
Count[Permutations[
Characters["aeeiuchklpr"], {6}], {"h", m__,
vowels = ("a" | "e" | "i" | "o" | "u")} /; Count[{m}, vowels] == 1]
ผลตอบแทน
3120