Text completion: Difference between revisions

Add Factor
m (added whitespace for the TOC (table of contents).)
(Add Factor)
Line 161:
Words which are 70,0% similar:
cognition collision combustion commotion companion compassion complain complicity compton compulsion compunction computation condition contrition demolition incompletion volition
</pre>
 
=={{header|Factor}}==
{{trans|Julia}}
{{works with|Factor|0.99 2020-07-03}}
<lang factor>USING: formatting fry http.client io kernel lcs literals math
math.ranges namespaces prettyprint.config sequences splitting
wrap.strings ;
 
CONSTANT: words $[
"https://www.mit.edu/~ecprice/wordlist.10000" http-get nip
"\n" split harvest
]
CONSTANT: word "complition"
 
: lev-dist-of ( str n -- n )
[ words ] 2dip '[ _ levenshtein _ = ] filter ;
 
: similarity ( n -- x ) word length / 100 * 100 swap - ;
 
10000 margin set ! Prevent prettyprinter from wrapping sequences
4 [1,b] [
dup [ similarity ] [ drop word ] [ word swap lev-dist-of ] tri
"Words at Levenshtein distance of %d (%.1f%% similarity) from %u:\n%u\n\n" printf
] each</lang>
{{out}}
<pre>
Words at Levenshtein distance of 1 (90.0% similarity) from "complition":
{ "completion" }
 
Words at Levenshtein distance of 2 (80.0% similarity) from "complition":
{ "coalition" "competition" "compilation" "composition" }
 
Words at Levenshtein distance of 3 (70.0% similarity) from "complition":
{ "companion" "competitions" "completing" "complications" "computation" "condition" }
 
Words at Levenshtein distance of 4 (60.0% similarity) from "complition":
{ "collection" "combination" "commission" "comparison" "compensation" "competing" "competitive" "complaint" "complete" "completed" "completely" "complexity" "compliance" "compliant" "compression" "computing" "conclusion" "conditions" "connection" "convention" "conviction" "cooperation" "corporation" "correction" "correlation" "corruption" "nomination" "opinion" "opposition" "option" "pollution" "population" "position" "simulation" "solution" }
</pre>
 
1,808

edits