Baseado em Chunky vs. Smooth Strings .
Rabiscos /\_/\/\__/\/\/\/\_/\_/\são divertidos de fazer no teclado quando você está realmente entediado. Mas nem todos os rabiscos são criados iguais. Alguns rabiscos são suaves, tipo \___/, e alguns são grossos, tipo /\/\/\/\. Outros são simplesmente quebrados, como////_\\\
Dentro de cada rabisco de Ncaracteres, há N-1junções de rabiscos. Cada junção de rabisco é classificada em um dos três tipos:
Suave (ângulo> "90 graus"):
\_ __ _/Robusto (ângulo = "90 graus")
/\ \/Quebrado (qualquer coisa que não se conecte)
// \\ /_ _\
Vamos definir a suavidade como a proporção de junções que são suaves, com robustez e quebra definidas de maneira semelhante. Cada valor varia entre 0e 1. A soma da suavidade, robustez e quebra de um rabisco é sempre igual a 1.
Por exemplo, o rabisco /\/\\_//\_possui 3 junções suaves, 4 junções grossas e 2 junções quebradas. É, portanto 0.3333, suave, 0.4444robusto e 0.2222quebrado.
Seqüências de caracteres vazias e com apenas um caractere têm valores indefinidos, todas as entradas terão pelo menos 2 caracteres.
Desafio
Escreva um programa que controla um comprimento arbitrário e produz dois de seus valores de suavidade, robustez e quebra.
- Você pode escrever um programa ou função, com entrada via STDIN, linha de comando ou como argumento de string.
- Você pode supor que a entrada tenha pelo menos comprimento> = 2 e consiste apenas nos caracteres
/\_com uma nova linha à direita opcional. - Imprima (ou retorne se uma função) os dois flutuarem com uma precisão de pelo menos 4 casas decimais, arredondadas ou truncadas. Se o valor verdadeiro for
2/3, valores aceitáveis incluem qualquer valor entre0.6666e0.6667, até coisas como0.666637104. Se o valor exato for1/3, qualquer resposta que contenha0.3333é válida. Você pode deixar zeros à direita ou o zero à esquerda se o valor for menor que um. - Saída qualquer par dos três valores como você preferir, apenas certifique-se de indicar quais dois e em que ordem.
O código mais curto em bytes vence.
Exemplos
/\/\\/\//\\→ Suavidade 0, Robustez 0.7, Fragilidade0.3
_/\\_/\\/__/\\\//_→ Suavidade 0.29411764705, Robustez 0.29411764705, Fragilidade0.41176470588
//\\__/_\/→ Suavidade 0.3333333, Robustez 0.2222222, Fragilidade0.4444444
Pergunta bônus: Qual você prefere, rabiscos suaves, grossos ou quebrados?