Skip to content

Instantly share code, notes, and snippets.

@DesWurstes
Last active June 7, 2017 17:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DesWurstes/1a111927bc2ceaaebc73d312be248e72 to your computer and use it in GitHub Desktop.
Save DesWurstes/1a111927bc2ceaaebc73d312be248e72 to your computer and use it in GitHub Desktop.
// 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