Eu amo /usr/share/dict/words
; é tão útil! Eu o uso em todos os meus programas, sempre que posso! Você aproveitará esse arquivo tão útil para testar, testando a individualidade de uma palavra.
Entrada
- Uma palavra; definido neste desafio como qualquer sequência de caracteres
/usr/share/dict/words
em algum formato; você pode codificá-lo, ler a partir do disco, assumi-lo como um segundo argumento, o que fizer mais sentido em seu desafio
Resultado
- Palavras individualidade (veja abaixo)
A individualidade de uma palavra é derivada da seguinte equação:
<the number of words for which it is a substring> / <length of the word>
Vamos dar uma olhada em um exemplo:
hello
. Existem 12 palavras que contêm a substring hello
, divididas por 5
(comprimento do hello), e a individualidade de hello é 12/5
ou2.4
PS Esse é um codegolf , então quanto menor a pontuação de individualidade, mais individual
Como individualidade é uma palavra longa, seu programa deve ser o mais curto possível
Boa sorte!
Casos de teste
Você pode usar esse conveniente script Node.js., que se encaixa nos requisitos de desafio para se ajustar ao seu código. Também é como eu geramos os casos de teste:
var fs = require("fs");
var word = process.argv[2];
process.stdout.write("Reading file...")
fs.readFile("/usr/share/dict/words", function(err, contents) {
console.log("Done")
if (err) throw err;
words = contents.toString().split("\n");
var substrings = words.filter(w => w.indexOf(word) > -1).length;
var length = word.length;
console.log(`${word} => ${substrings} / ${length} = ${substrings / length}`)
})
Casos de teste:
hello => 12 / 5 = 2.4
individuality => 1 / 13 = 0.07692307692307693
redic => 52 / 5 = 10.4
ulous => 200 / 5 = 40
challen => 15 / 7 = 2.142857142857143
ges => 293 / 3 = 97.66666666666667
hidden => 9 / 6 = 1.5
words => 12 / 5 = 2.4
aside => 8 / 5 = 1.6