Ich liebe /usr/share/dict/words
; es ist so praktisch! Ich benutze es für alle meine Programme, wann immer ich kann! Sie werden diese nützliche Datei nutzen, indem Sie die Individualität eines Wortes testen.
Eingang
- Ein Wort; In dieser Herausforderung als eine beliebige Zeichenfolge definiert
/usr/share/dict/words
in irgendeinem Format; Sie können es hart codieren, von der Festplatte lesen und als zweites Argument annehmen, was auch immer für Ihre Herausforderung am sinnvollsten ist
Ausgabe
- Ein Wort Individualität (siehe unten)
Die Individualität eines Wortes ergibt sich aus der folgenden Gleichung:
<the number of words for which it is a substring> / <length of the word>
Schauen wir uns ein Beispiel an :
hello
. Es gibt 12 Wörter, die den Teilstring enthalten hello
, geteilt durch 5
(Hallo Länge), und Hallo Individualität ist 12/5
oder2.4
PS Dies ist Codegolf. Je niedriger der Individualitätswert, desto individueller
Da Individualität ein langes Wort ist, muss Ihr Programm so kurz wie möglich sein
Viel Glück!
Testfälle
Sie können dieses praktische Node.js-Skript verwenden, das den Anforderungen der Herausforderung entspricht und Ihrem Code entspricht. So habe ich auch die Testfälle generiert:
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}`)
})
Testfälle:
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
BürgermeisterMonty
quelle
quelle
Antworten:
05AB1E , 9 Bytes
Probieren Sie es online aus!
quelle
Bash,
41,39,34,3326 BytesBEARBEITEN:
Eine eher triviale Lösung für Bash + Coreutils
Golf gespielt
Prüfung
quelle
grep -ic $1
arbeiten stattgrep -i $1|wc -l
?Python 3,
5249 Bytes-3 Bytes danke an Kade für die Annahme
w
, dass es sich um die Wortliste als Liste handelt:Vorherige Lösung:
Nimmt
w
an, die Wortliste zu sein. Ich wähle Python 3, weil meine Wortliste einige Nicht-ASCII-Zeichen enthält und Python 2 sie nicht mag.quelle
f=lambda s,w:w>[]and (s in w[0])/len(s)+f(s,w[1:])
and
und entfernen können,(
um es 49 Bytes zu machen.Perl 6 ,
45 36 3332 BytesWortliste als Dateiname
f
, 45 BytesWortliste als Liste
l
, 36 Bytesunter Verwendung von Platzhaltervariablen und des Metaoperators reverse (
R
) 33 BytesVerwenden Sie
.comb
, um eine Liste von Zeichen zu erhalten, anstatt.chars
eine Anzahl von 32 Bytes zu erhaltenErweitert:
quelle
awk: 31 Bytes
Übergabe des Wortes als
w
Variable an denawk
Befehl und der Datei in<stdin>
:Beispielausgabe:
quelle
PHP, 54 Bytes
Nimmt die Wortliste in an
$w
.quelle
Clojure, 53 Bytes
Nicht so aufregend: /
Das
1.
ist da, um ein Rationales in ein Float umzuwandeln. Ich habe WörterW
als solche vorinstalliert :quelle