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
code-golf
string
subsequence
AlcaldeMonty
fuente
fuente
Respuestas:
05AB1E , 9 bytes
Pruébalo en línea!
fuente
Golpetazo,
41,39,34,3326 bytesEDITAR:
Una solución bastante trivial en bash + coreutils
Golfed
Prueba
fuente
grep -ic $1
Funcionaría en lugar degrep -i $1|wc -l
?Python 3,
5249 bytes-3 bytes gracias a Kade, por asumir
w
que es la lista de palabras como lista:Solución previa:
Se supone
w
que es la lista de palabras. Elijo Python 3 porque en mi lista de palabras hay algunos caracteres que no son ASCII y Python 2 no le gustan.fuente
f=lambda s,w:w>[]and (s in w[0])/len(s)+f(s,w[1:])
and
y(
para que sea de 49 bytes.Perl 6 ,
45 36 3332 byteslista de palabras como nombre de archivo
f
, 45 byteslista de palabras como una lista
l
, 36 bytesusando variables de marcador de posición y
R
meta-operador reverse ( ), 33 bytesutilizando
.comb
para obtener una lista de caracteres, en lugar de.chars
obtener un recuento, 32 bytesExpandido:
fuente
awk: 31 bytes
Pasando la palabra como la
w
variable alawk
comando, y el archivo en<stdin>
:Salida de muestra:
fuente
PHP, 54 bytes
Asume la lista de palabras en
$w
.fuente
Clojure, 53 bytes
No es tan emocionante: /
Eso
1.
está ahí para convertir un racional en un flotador. Precargué palabrasW
como tales:fuente