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
code-golf
string
subsequence
MayorMonty
fonte
fonte
Respostas:
05AB1E , 9 bytes
Experimente online!
fonte
Bater,
41.,39.,34,33, 26 bytesEDITAR:
Uma solução bastante trivial no bash + coreutils
Golfe
Teste
fonte
grep -ic $1
trabalhar em vez degrep -i $1|wc -l
?Python 3,
5249 bytes-3 bytes graças a Kade, por assumir
w
a lista de palavras como lista:Solução anterior:
Assume
w
ser a lista de palavras. Eu escolhi o Python 3 porque na minha lista de palavras existem alguns caracteres não-ASCII e o Python 2 não gosta deles.fonte
f=lambda s,w:w>[]and (s in w[0])/len(s)+f(s,w[1:])
and
e(
torná-lo 49 bytes.Perl 6 ,
45 36 3332 byteslista de palavras como um nome de arquivo
f
, 45 byteslista de palavras como uma lista
l
, 36 bytesusando variáveis de espaço reservado e
R
meta-operador reverse ( ), 33 bytesusando
.comb
para obter uma lista de caracteres, em vez de.chars
obter uma contagem, 32 bytesExpandido:
fonte
awk: 31 bytes
Passando a palavra como
w
variável para oawk
comando e o arquivo em<stdin>
:Saída de amostra:
fonte
PHP, 54 bytes
Assume a lista de palavras em
$w
.fonte
Clojure, 53 bytes
Não é tão emocionante: /
Isso
1.
existe para converter um racional em um flutuador. Eu pré-carreguei as palavras paraW
:fonte