Skip to content

Instantly share code, notes, and snippets.

@griiid
Created January 22, 2017 04:43
Show Gist options
  • Save griiid/21513d37e8e7bf53a913ade346e09088 to your computer and use it in GitHub Desktop.
Save griiid/21513d37e8e7bf53a913ade346e09088 to your computer and use it in GitHub Desktop.
extension Character {
var asciiValue: UInt32? {
return String(self).unicodeScalars.filter{$0.isASCII}.first?.value
}
}
func sort(str: String, isReversed: Bool) -> String {
if (isReversed) {
return String(str.characters.sorted(by: compareCharactersReversed))
}
else {
return String(str.characters.sorted(by: compareCharacters))
}
}
func compareCharactersReversed(c1: Character, c2: Character) -> Bool {
return !compareCharacters(c1: c1, c2: c2)
}
func compareCharacters(c1: Character, c2: Character) -> Bool {
var n1:Double = Double(c1.asciiValue!)
var n2:Double = Double(c2.asciiValue!)
let a:Double = Double(Character("a").asciiValue!)
let z:Double = Double(Character("z").asciiValue!)
let A:Double = Double(Character("A").asciiValue!)
let diffaA = a - A
if (n1 >= a && n1 <= z) {
n1 = n1 - diffaA - 0.5
}
if (n2 >= a && n2 <= z) {
n2 = n2 - diffaA - 0.5
}
return n1 < n2
}
sort(str: "324392784", isReversed: false)
sort(str: "324azbcAU", isReversed: true)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment