Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
41
Task/Anagrams/Swift/anagrams.swift
Normal file
41
Task/Anagrams/Swift/anagrams.swift
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
import Foundation
|
||||
|
||||
let wordsURL = NSURL(string: "http://wiki.puzzlers.org/pub/wordlists/unixdict.txt")!
|
||||
|
||||
let wordsstring = try NSString(contentsOfURL:wordsURL , encoding: NSUTF8StringEncoding)
|
||||
let allwords = wordsstring.componentsSeparatedByString("\n")
|
||||
|
||||
let words = allwords//[0..<100] // used to limit the size while testing
|
||||
|
||||
extension String {
|
||||
var charactersAscending : String {
|
||||
return String(Array(characters).sort())
|
||||
}
|
||||
}
|
||||
|
||||
var charsToWords = [String:Set<String>]()
|
||||
|
||||
var biggest = 0
|
||||
var biggestlists = [Set<String>]()
|
||||
|
||||
for thisword in words {
|
||||
let chars = thisword.charactersAscending
|
||||
|
||||
var knownwords = charsToWords[chars] ?? Set<String>()
|
||||
knownwords.insert(thisword)
|
||||
charsToWords[chars] = knownwords
|
||||
|
||||
if knownwords.count > biggest {
|
||||
biggest = knownwords.count
|
||||
|
||||
biggestlists = [knownwords]
|
||||
}
|
||||
else if knownwords.count == biggest {
|
||||
biggestlists.append(knownwords)
|
||||
}
|
||||
}
|
||||
|
||||
print("Found \(biggestlists.count) sets of anagrams with \(biggest) members each")
|
||||
for (i, thislist) in biggestlists.enumerate() {
|
||||
print("set \(i): \(thislist.sort())")
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue