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?
la source
Réponses:
Pyth, 25 octets
Suite de tests
Rend la douceur, la grosseur. Fondamentalement, il prend la chaîne codée en dur et la coupe en deux. Chaque moitié est décomposée en ses deux sous-chaînes de caractères, et il en est de même pour l'entrée. Nous prenons l'intersection, résultant dans les paires sud et chunky. Ensuite, nous prenons la longueur, divisons par le nombre de paires et imprimons.
la source
Japt, 42 octets
Sorties cassure, chunkyness. Essayez-le en ligne!
Comment ça fonctionne
Version non concurrente, 36 octets
Fonctionne essentiellement de la même manière que l'autre, avec quelques modifications mineures:
ä
fonctionne maintenant sur les chaînes. Les caractères sont passés dans la fonction dans l'ordre(X, Y, X+Y)
.è
compte le nombre d'occurrences de l'argument dans la chaîne / tableau.la source
Python 3, 149 octets
Cela produit de la fluidité et de la grosseur.
Non golfé:
la source
Rubis, 71
Rend la douceur, la grosseur.
Prend les chaînes lisses et épaisses minimales et les recherche pour chaque chaîne de deux caractères dans la chaîne initiale.
Merci à Kevin Lau pour HUIT octets!
la source
(0..x.size-2).count{|i|t[x[i,2]]}
enregistre 5 octets de plusx.chars.each_cons(2).count{|i|t[i*'']}
. Et maintenant que vous utilisezx.size
deux fois la fonction, l'assignez à une variable et utilisez-la pour économiser un octet supplémentaire.