Considérons une chaîne de longueur N, comme Peanut Butteravec 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 Buttern'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,
0c'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 ?