Sfida:
ingressi:
- Una stringa contenente ASCII stampabile (esclusi spazi, tabulazioni e nuove righe)
- Un booleano †
Produzione:
Le parti della stringa sono divise in quattro gruppi:
- Lettere minuscole
- Lettere maiuscole
- cifre
- Altro
Sulla base del valore booleano, produciamo la più alta occorrenza di uno (o più) di questi quattro gruppi, o il più basso, sostituendo tutto il resto con spazi.
Per esempio:
Input: "Just_A_Test!"
contiene:
- 3 lettere maiuscole: JAT
- 6 lettere minuscole: ustest
- 0 cifre
- 3 altre:__!
Questi sarebbero gli output per trueo false:
true: " ust est "
// digits have the lowest occurrence (none), so everything is replaced with a space
false: " "
(Nota: è consentito ignorare gli spazi finali, quindi anche gli output possono essere " ust est"e ""rispettivamente.)
Regole della sfida:
- L'input non sarà mai vuoto o con spazi e consisterà solo di ASCII stampabili nell'intervallo
33-126o'!'attraverso'~'. - Se lo si desidera, è possibile accettare input e / o output come array di caratteri o elenco.
- † Sono consentiti due valori coerenti e distinti per il valore booleano:
true/false;1/0;'H'/'L';"highest"/"lowest"; ecc. Nota che questi valori distinti dovrebbero essere usati (in qualche modo) come valori booleani! Quindi non è consentito inserire due programmi completi, uno che fornisce il risultato corretto pertruee l'altro perfalse, e quindi avere solo il codice effettivo<run input with parameter>. Ho aggiunto una nuova scappatoia predefinita, sebbene possa ancora usare molta ottimizzazione per quanto riguarda le definizioni. - Se la ricorrenza di due o più gruppi è la stessa, generiamo tutte quelle occorrenze.
- Gli spazi finali necessari sono facoltativi e anche una singola nuova riga finale è facoltativa. Gli spazi iniziali necessari sono obbligatori. E non sono ammessi altri spazi iniziali o nuove righe.
Regole generali:
- Questo è code-golf , quindi vince la risposta più breve in byte.
Non lasciare che le lingue di code-golf ti scoraggino dal pubblicare risposte con lingue non codegolfing. Prova a trovare una risposta il più breve possibile per "qualsiasi" linguaggio di programmazione. - Per la tua risposta valgono regole standard , quindi puoi usare STDIN / STDOUT, funzioni / metodo con i parametri corretti, programmi completi. La tua chiamata.
- Le scappatoie predefinite sono vietate.
- Se possibile, aggiungi un link con un test per il tuo codice.
- Inoltre, si prega di aggiungere una spiegazione, se necessario.
Casi test:
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 9fanno parte del "meno".
"max"/ "min", che viene quindi utilizzato come Math[b]riferimento a Math.maxo Math.min?
b?"max":"min"risposta. È una linea sottile, immagino, forse dovrei usare un valore di verità / falsità la prossima volta ..
"H "e" 9 "(con spazi appropriati) essere emesso anziché"H 9"?