Como verificar se uma string contém um certo número de consoantes e vogais?
Aug 17 2020
Estou tentando verificar a resposta do seguinte problema de forma programática. Um cálculo manual à mão deve ser possível, mas não é minha pergunta.
Dada uma string
"aeeiuchklpr"
de comprimento 11. O caractere "e" ocorre duas vezes. Não é um erro de digitação. Quantas 6 permutações da string dada existem? As restrições são fornecidas como segue
- o primeiro caractere deve ser "h"
- o último caractere deve ser uma vogal
- o número de consoantes deve ser exatamente 4
- o número de vogais deve ser exatamente 2
Tentativa
Não sei como verificar os dois últimos requisitos acima. Aqui está minha tentativa
Select[Permutations[StringSplit["aeeiuchklpr", ""], {6}],
First[#] == "h" &&
(Last[#] == "a" || Last[#] == "e" || Last[#] == "i" ||
Last[#] == "u") &] // Length
Respostas
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
Implementação ligeiramente diferente como uma linha, usando um padrão restrito:
Count[Permutations[
Characters["aeeiuchklpr"], {6}], {"h", m__,
vowels = ("a" | "e" | "i" | "o" | "u")} /; Count[{m}, vowels] == 1]
rendimentos
3120
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
Christopher Nolan uma vez se arrependeu de ter lido o 'roteiro de Pulp Fiction' de Quentin Tarantino