Considérons une chaîne de longueur N, comme Peanut Butter
avec N = 13. Notez qu'il y a N-1 paires de caractères voisins dans la chaîne. Car Peanut Butter
, la première des 12 paires est Pe
, la seconde est ea
, la dernière est er
.
Lorsque les paires sont principalement des caractères différents, la chaîne a une qualité volumineuse, par exemple chUnky
.
Lorsque ces paires sont principalement le même caractère, la chaîne a une qualité lisse, par exemple sssmmsss
.
Définissez la grosseur d'une chaîne comme étant le rapport du nombre de paires avec deux caractères différents au nombre total de paires (N-1).
Définissez le lissage d'une chaîne comme étant le rapport du nombre de paires avec deux caractères identiques au nombre total de paires (N-1).
Par exemple, Peanut Butter
n'a qu'une seule paire avec des caractères identiques ( tt
), donc son lissage est 1/12 ou 0,0833 et son gros morceau est 11/12 ou 0,9167.
Les chaînes vides et les chaînes avec un seul caractère sont définies comme 100% lisses et 0% grosses.
Défi
Écrivez un programme qui accepte une chaîne de longueur arbitraire et génère son rapport de grosseur ou de lissage sous forme de valeur à virgule flottante.
- Prenez l'entrée via stdin ou la ligne de commande, ou vous pouvez écrire une fonction qui prend une chaîne.
- Vous pouvez supposer que la chaîne d'entrée ne contient que des caractères ASCII imprimables (et donc une seule ligne).
- Imprimez le flotteur à stdout à 4 décimales ou plus, ou vous pouvez choisir de le retourner si vous avez écrit une fonction. Les décimales qui ne transmettent aucune information ne sont pas nécessaires, par exemple,
0
c'est bien au lieu de0.0000
. - Choisissez la grosseur ou la douceur selon vos préférences. Assurez-vous simplement de dire lequel produit votre programme.
Le code le plus court en octets gagne.
Exemples
Peanut Butter
→ chunkiness: 0.91666666666
, Lissé: 0.08333333333
chUnky
→ chunkiness: 1.0
, Lissé: 0.0
sssmmsss
→ chunkiness: 0.28571428571
, Lissé: 0.71428571428
999
→ chunkiness: 0.0
, Lissé: 1.0
AA
→ chunkiness: 0.0
, Lissé: 1.0
Aa
→ chunkiness: 1.0
, Lissé: 0.0
!
→ chunkiness: 0.0
, Lissé: 1.0
[chaîne vide] → chunkiness: 0.0
, Douceur:1.0
Question bonus: laquelle préférez-vous , des cordes grosses ou lisses ?