Basado en Chunky vs. Smooth Strings .
/\_/\/\__/\/\/\/\_/\_/\Es divertido hacer garabatos en un teclado cuando estás realmente aburrido. Pero no todos los garabatos son iguales. Algunos garabatos son suaves, como \___/, y algunos son gruesos, como /\/\/\/\. Otros están simplemente rotos, como////_\\\
Dentro de cada garabato de Npersonajes, hay N-1uniones de garabatos. Cada cruce de garabatos se clasifica en uno de tres tipos:
Lisa (ángulo> "90 grados"):
\_ __ _/Grueso (ángulo = "90 grados")
/\ \/Roto (todo lo que no se conecta)
// \\ /_ _\
Definamos la suavidad como la proporción de uniones que son lisas, con la fragilidad y la fragilidad definidas de manera similar. Cada valor oscila entre 0y 1. La suma de la suavidad, la fragilidad y la fragilidad de un garabato siempre es igual a 1.
Por ejemplo, el garabato /\/\\_//\_tiene 3 uniones lisas, 4 uniones gruesas y 2 uniones rotas. Por lo tanto 0.3333, es suave, 0.4444grueso y 0.2222roto.
Las cadenas vacías y las cadenas con un solo carácter tienen valores indefinidos, todas las entradas tendrán al menos 2 caracteres de longitud.
Desafío
Escriba un programa que tome un garabato de longitud arbitraria y genere dos de sus valores de suavidad, fragmentación y fragilidad.
- Puede escribir un programa o función, con entrada a través de STDIN, línea de comando o como un argumento de cadena.
- Puede suponer que la entrada tiene al menos una longitud> = 2 y consiste solo en los caracteres
/\_con una nueva línea final opcional. - Imprima (o devuelva si es una función) los dos flotantes con una precisión de al menos 4 decimales, redondeados o truncados. Si el valor verdadero es
2/3, los valores aceptables incluyen cualquier valor entre0.6666e0.6667incluso cosas como0.666637104. Si el valor exacto es1/3, cualquier respuesta que contenga0.3333es válida. Puede omitir los ceros finales o el cero inicial si el valor es menor que uno. - Imprima cualquier par de los tres valores que prefiera, solo asegúrese de indicar cuáles dos y en qué orden.
El código más corto en bytes gana.
Ejemplos
/\/\\/\//\\→ Suavidad 0, Chunkiness 0.7, Brokenness0.3
_/\\_/\\/__/\\\//_→ Suavidad 0.29411764705, Chunkiness 0.29411764705, Brokenness0.41176470588
//\\__/_\/→ Suavidad 0.3333333, Chunkiness 0.2222222, Brokenness0.4444444
Pregunta extra: ¿Qué prefieres, garabatos suaves, gruesos o rotos?