Last active
June 7, 2017 17:46
-
-
Save DesWurstes/1a111927bc2ceaaebc73d312be248e72 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// http://swift.sandbox.bluemix.net/#/repl/59383be0a250154040b8fdaf | |
// http://alphabetizer.flap.tv // The sorter | |
import Foundation | |
var nOfRemoved: UInt16 = 0 | |
var maximumChars: Int = 0 | |
var minimumChars: Int = Int.max | |
var totalChars: Int = 0 | |
var charsOfWord: [Int] = [] | |
var geometricAverage: Double = 1 | |
var harmonicAverage:Double = 0 | |
var firstNChars: Int = 4 | |
var firstNCharsArray: [String] = [] | |
var firstNCharsErrors: [String] = [] | |
var minimumCharsWords: [String] = [] | |
var maximumCharsWords: [String] = [] | |
let array: [String] = [ | |
"ü", | |
"hn", | |
"nn"] | |
var array2: [String] = [] | |
for i in 0 ... array.count - 1 { | |
if array2.contains(array[i]){ | |
nOfRemoved += 1 | |
}else{ | |
array2.append(array[i]) | |
} | |
} | |
for i in 0 ... array2.count - 1{ | |
totalChars += array2[i].characters.count | |
charsOfWord.append(array2[i].characters.count) | |
harmonicAverage += 1/Double(array2[i].characters.count) | |
geometricAverage *= Double(array2[i].characters.count) | |
if array2[i].characters.count >= maximumChars{ | |
if array2[i].characters.count > maximumChars{ | |
maximumCharsWords.removeAll() | |
} | |
maximumChars = array[i].characters.count | |
maximumCharsWords.append(array2[i]) | |
} | |
if array2[i].characters.count <= minimumChars{ | |
if array2[i].characters.count < minimumChars{ | |
minimumCharsWords.removeAll() | |
} | |
minimumChars = array[i].characters.count | |
minimumCharsWords.append(array2[i]) | |
} | |
var e: String = array2[i] | |
if array2[i].characters.count > firstNChars { | |
let ind = e.index(e.startIndex, offsetBy: firstNChars) | |
e = e.substring(to: ind) | |
}else{ | |
while e.characters.count < firstNChars{ | |
e += " " | |
} | |
} | |
if firstNCharsArray.contains(e){ | |
firstNCharsErrors.append(e) | |
}else{ | |
firstNCharsArray.append(e) | |
} | |
} | |
func median(_ nums: [Int]) -> Float { | |
var arr = nums.sorted() | |
if nums.count % 2 == 0{ | |
return Float((arr[(nums.count / 2)] + arr[(nums.count / 2) - 1])) / 2 | |
} | |
else{ | |
return Float(arr[(nums.count - 1) / 2]) | |
} | |
} | |
let average: Double = Double(totalChars)/Double(array2.count) | |
var standardDeviation: Double = 0 | |
for i in 0 ... array2.count - 1{ | |
print(array2[i]) | |
standardDeviation += (average - Double(array2[i].characters.count))*(average - Double(array2[i].characters.count)) | |
} | |
print("--------------------------") | |
print("MINIMA:") | |
for i in 0 ... minimumCharsWords.count - 1{ | |
print(minimumCharsWords[i]) | |
} | |
print("MAXIMA:") | |
for i in 0 ... maximumCharsWords.count - 1{ | |
print(maximumCharsWords[i]) | |
} | |
print("The arithmetic average of characters per word is \(average)") | |
print("The geometric average of characters per word is \(pow(geometricAverage,1/Double(array2.count)))") | |
print("The harmonic average of characters per word is \(Double(array2.count)/harmonicAverage))") | |
print("The standart deviation of characters per word is \(sqrt(standardDeviation/Double(array2.count - 1)))") | |
print("The median of characters per word is \(median(charsOfWord))") | |
print("Words have at least \(minimumChars) characters, at most \(maximumChars) characters.") | |
if nOfRemoved == 1{ | |
print("1 duplicate word.") | |
}else{ | |
print("\(nOfRemoved) duplicate words.") | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment