Considere uma sequência de comprimento N, como Peanut Butter
N = 13. Observe que há N-1 pares de caracteres vizinhos na sequência. Pois Peanut Butter
, o primeiro dos 12 pares é Pe
, o segundo é ea
, o último é er
.
Quando os pares são principalmente caracteres diferentes, a corda tem uma qualidade robusta, por exemplo chUnky
.
Quando esses pares são basicamente o mesmo caractere, a corda tem uma qualidade suave, por exemplo sssmmsss
.
Defina a fragilidade de uma sequência como a proporção do número de pares com dois caracteres diferentes para o número total de pares (N-1).
Defina a suavidade de uma sequência de caracteres para ser a proporção do número de pares com dois caracteres idênticos ao número total de pares (N-1).
Por exemplo, Peanut Butter
possui apenas um par com caracteres idênticos ( tt
), portanto, sua suavidade é 1/12 ou 0,0833 e sua robustez é 11/12 ou 0,9167.
Seqüências de caracteres vazias e com apenas um caractere são definidas como 100% suaves e 0% robustas.
Desafio
Escreva um programa que tenha uma sequência arbitrária de comprimento e produza sua proporção de fragilidade ou suavidade como um valor de ponto flutuante.
- Tome entrada via stdin ou pela linha de comando, ou você pode escrever uma função que aceita uma string.
- Você pode assumir que a sequência de entrada contém apenas caracteres ASCII imprimíveis (e, portanto, é uma linha).
- Imprima o float para stdout com 4 ou mais casas decimais, ou você pode optar por devolvê-lo se tiver escrito uma função. Casas decimais que não transmitem informações não são necessárias, por exemplo,
0
é bom em vez de0.0000
. - Escolha robustez ou suavidade como preferir. Apenas certifique-se de dizer qual o seu programa gera.
O código mais curto em bytes vence.
Exemplos
Peanut Butter
→ chunkiness: 0.91666666666
, Lisura: 0.08333333333
chUnky
→ chunkiness: 1.0
, Lisura: 0.0
sssmmsss
→ chunkiness: 0.28571428571
, Lisura: 0.71428571428
999
→ chunkiness: 0.0
, Lisura: 1.0
AA
→ chunkiness: 0.0
, Lisura: 1.0
Aa
→ chunkiness: 1.0
, Lisura: 0.0
!
→ chunkiness: 0.0
, Lisura: 1.0
[cadeia vazia] → chunkiness: 0.0
, Suavidade:1.0
Pergunta bônus: Qual você prefere , cordas grossas ou suaves ?