Me encanta /usr/share/dict/words
; es muy útil! ¡Lo uso para todos mis programas, siempre que puedo! Aprovecharás este archivo tan útil para usar, probando la individualidad de una palabra.
Entrada
- Una palabra; definido en este desafío como cualquier cadena de caracteres
/usr/share/dict/words
en algun formato; puede codificarlo, leerlo desde el disco, asumirlo como un segundo argumento, lo que tenga más sentido en su desafío
Salida
- Una palabra individualidad (ver abajo)
La individualidad de una palabra se deriva de la siguiente ecuación:
<the number of words for which it is a substring> / <length of the word>
Vamos a echar un vistazo a un ejemplo:
hello
. Hay 12 palabras que tienen la subcadena hello
en ellas, divididas por 5
(longitud de hola), y la individualidad de hola es 12/5
o2.4
PD: Esto es codegolf , por lo que cuanto menor sea el puntaje de individualidad, más individual
Como individualidad es una palabra larga, su programa debe ser lo más breve posible
¡Buena suerte!
Casos de prueba
Puede usar este conveniente script Node.js, que se ajusta a los requisitos de desafío para adaptarse a su código. También es cómo generé los casos de prueba:
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 prueba:
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