Desafio:
Entradas:
- Uma sequência contendo ASCII imprimível (excluindo espaços, tabulações e novas linhas)
- Um booleano †
Resultado:
As partes da String são divididas em quatro grupos:
- Letras minúsculas
- Letras maiúsculas
- Dígitos
- De outros
Com base no booleano, produzimos a ocorrência mais alta de um (ou vários) desses quatro grupos, ou o menor, substituindo todo o resto por espaços.
Por exemplo:
Entrada: "Just_A_Test!"
Contém:
- 3 letras maiúsculas: JAT
- 6 letras minúsculas: ustest
- 0 dígitos
- 3 outras:__!
Estes seriam os resultados para trueou false:
true: " ust est "
// digits have the lowest occurrence (none), so everything is replaced with a space
false: " "
(Nota: Você tem permissão para ignorar espaços à direita, para que as saídas também possam ser " ust est"e ""respectivamente.)
Regras do desafio:
- A entrada nunca estará vazia ou conterá espaços e consistirá apenas em ASCII imprimível no intervalo
33-126ou'!'através dele'~'. - Você pode receber as entradas e / ou saídas como matriz ou lista de caracteres, se desejar.
- † São permitidos dois valores consistentes e distintos para o booleano:
true/false;1/0;'H'/'L';"highest"/"lowest"; etc. Observe que esses valores distintos devem ser usados (um pouco) como um booleano! Portanto, não é permitido inserir dois programas completos, um que forneça o resultado corretotruee o outro parafalse, e apenas ter o seu código real<run input with parameter>. Nova brecha padrão relevante que eu adicionei, embora ainda possa usar muitas afinações nas definições. - Se a ocorrência de dois ou mais grupos for a mesma, produzimos todas essas ocorrências.
- Os espaços à direita necessários são opcionais, e uma única nova linha à direita também é opcional. Os espaços de liderança necessários são obrigatórios. E quaisquer outros espaços à esquerda ou novas linhas não são permitidos.
Regras gerais:
- Isso é código-golfe , então a resposta mais curta em bytes vence.
Não permita que idiomas com código de golfe o desencorajem a postar respostas com idiomas que não sejam codegolf. Tente encontrar uma resposta o mais curta possível para 'qualquer' linguagem de programação. - As regras padrão se aplicam à sua resposta, para que você possa usar STDIN / STDOUT, funções / método com os parâmetros adequados, programas completos. Sua chamada.
- As brechas padrão são proibidas.
- Se possível, adicione um link com um teste para o seu código.
- Além disso, adicione uma explicação, se necessário.
Casos de teste:
Inputs: Output:
"Just_A_Test!", true " ust est " (or " ust est")
"Just_A_Test!", false " " (or "")
"Aa1!Bb2@Cc3#Dd4$", either "Aa1!Bb2@Cc3#Dd4$"
"H@$h!n9_!$_fun?", true " @$ ! _!$_ ?"
"H@$h!n9_!$_fun?", false "H 9 " (or "H 9")
"A", true "A"
"A", false " " (or "")
"H.ngm.n", true " ngm n"
"H.ngm.n", false " " (or "")
"H.ngm4n", false "H. 4 " (or "H. 4")
He 9são parte do "menor número".
"max"/ "min", que é usado Math[b]para se referir a Math.maxou Math.min?
b?"max":"min"sua resposta .. É uma linha tênue eu acho, talvez eu deveria usar apenas um valor truthy / Falsey próxima vez ..
"H "e" 9 "(com espaços apropriados) ser emitido em vez de"H 9"?