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 true
ou 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-126
ou'!'
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 corretotrue
e 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")
H
e 9
são parte do "menor número".
"max"
/ "min"
, que é usado Math[b]
para se referir a Math.max
ou 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"
?