문자열에 특정 수의 자음과 모음이 포함되어 있는지 확인하는 방법은 무엇입니까?
프로그래밍 방식으로 다음 문제의 답을 확인하려고합니다. 수동 계산이 가능해야하지만 내 질문이 아닙니다.
"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
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