Anagrams: Difference between revisions

Content added Content deleted
No edit summary
Line 3,470: Line 3,470:
=={{header|Julia}}==
=={{header|Julia}}==
<lang Julia>url = "http://www.puzzlers.org/pub/wordlists/unixdict.txt"
<lang Julia>url = "http://www.puzzlers.org/pub/wordlists/unixdict.txt"

wordlist = open(readlines, download(url))
wordlist = open(readlines, download(url))


wsort(word) = join(sort(collect(word)))
wsort(word::AbstractString) = join(sort(collect(word)))


function anagram(wordlist)
function anagram(wordlist::Vector{<:AbstractString})
hash = Dict() ; ananum = 0
dict = Dict{String, Set{String}}()
for word in wordlist
for word in wordlist
sorted = wsort(word)
sorted = wsort(word)
hash[sorted] = [ get(hash, sorted, []); word ]
push!(get!(dict, sorted, Set{String}()), word)
end
ananum = max(length(hash[sorted]), ananum)
wcnt = maximum(length, values(dict))
end
collect(values(filter((x,y)-> length(y) == ananum, hash)))
return collect(Iterators.filter((y) -> length(y) == wcnt, values(dict)))
end
end

</lang>
println.(anagram(wordlist))</lang>


{{out}}
{{out}}
<pre>Set(String["live", "vile", "veil", "evil", "levi"])
<pre>julia> anagram(wordlist)
Set(String["abel", "able", "bale", "bela", "elba"])
6-element Array{Any,1}:
Any["elan","lane","lean","lena","neal"]
Set(String["crate", "cater", "carte", "trace", "caret"])
Any["evil","levi","live","veil","vile"]
Set(String["galen", "angel", "lange", "angle", "glean"])
Any["angel","angle","galen","glean","lange"]
Set(String["lager", "regal", "glare", "large", "alger"])
Any["alger","glare","lager","large","regal"]
Set(String["neal", "elan", "lena", "lane", "lean"])</pre>
Any["abel","able","bale","bela","elba"]
Any["caret","carte","cater","crate","trace"]</pre>


=={{header|K}}==
=={{header|K}}==