Basé sur Chunky vs Smooth Strings .
Les gribouillis /\_/\/\__/\/\/\/\_/\_/\
sont amusants à faire sur un clavier lorsque vous vous ennuyez vraiment. Mais tous les gribouillis ne sont pas créés égaux. Certains gribouillis sont lisses, comme \___/
, et certains sont gros, comme /\/\/\/\
. D'autres sont carrément cassés, comme////_\\\
À l'intérieur de chaque squiggle de N
personnages, il y a N-1
des jonctions de squiggle. Chaque jonction de gribouillis est classée dans l'un des trois types suivants:
Lisse (angle> "90 degrés"):
\_ __ _/
Chunky (angle = "90 degrés")
/\ \/
Cassé (tout ce qui ne se connecte pas)
// \\ /_ _\
Définissons la douceur d'être la proportion des jonctions qui sont lisses, avec chunkiness et brisement définis de façon similaire. Chaque valeur est comprise entre 0
et 1
. La somme de la douceur, de la grosseur et de la cassure d'un gribouillis est toujours égale à 1.
Par exemple, le squiggle /\/\\_//\_
a 3 jonctions lisses, 4 jonctions grosses et 2 jonctions cassées. Il est donc 0.3333
lisse, 0.4444
trapu et 0.2222
cassé.
Les chaînes vides et les chaînes avec un seul caractère ont des valeurs non définies, toutes les entrées auront au moins 2 caractères.
Défi
Écrivez un programme qui prend un gribouillis de longueur arbitraire et génère deux de ses valeurs de lissage, de grosseur et de cassure.
- Vous pouvez écrire un programme ou une fonction, avec une entrée via STDIN, une ligne de commande ou comme argument de chaîne.
- Vous pouvez supposer que l'entrée est au moins de longueur> = 2 et se compose uniquement des caractères
/\_
avec un retour à la ligne facultatif. - Imprimer (ou retourner si une fonction) les deux flottants avec une précision d'au moins 4 décimales, arrondis ou tronqués. Si la vraie valeur est
2/3
, les valeurs acceptables incluent toute valeur entre0.6666
et0.6667
, même des choses comme0.666637104
. Si la valeur exacte est1/3
, toute réponse contenant0.3333
est valide. Vous pouvez laisser des zéros de fin ou le zéro de tête si la valeur est inférieure à un. - Sortez n'importe quelle paire des trois valeurs comme vous préférez, assurez-vous simplement d'indiquer lesquelles et dans quel ordre.
Le code le plus court en octets gagne.
Exemples
/\/\\/\//\\
→ douceur 0
, grosseur 0.7
, cassure0.3
_/\\_/\\/__/\\\//_
→ douceur 0.29411764705
, grosseur 0.29411764705
, cassure0.41176470588
//\\__/_\/
→ douceur 0.3333333
, grosseur 0.2222222
, cassure0.4444444
Question bonus: Que préférez-vous, des gribouillis lisses ou trapus ou cassés?