         return ret
     }
     
-    private func _hash(inout hash: [Char], var number: Int64, alphabet: [Char]) {
+    private func _hash(inout hash: [Char], number: Int64, alphabet: [Char]) {
         let length = alphabet.count, index = hash.count
+        var number = number
         repeat {
             hash.insert(alphabet[Int(number % Int64(length))], atIndex: index)
             number = number / Int64(length)

}

func difference<T: CollectionType where T.Generator.Element: Equatable>(a: T, _ b: T) -> [T.Generator.Element] {
    return transform(a, b) { (var c, a, b, e) in
        if !b.contains(e) {
            c.append(e)
        }

        let tmp = source[sourceIndex]
        source[sourceIndex] = source[_j]
        source[_j] = tmp
        v += 1
        sourceIndex -= 1
    }
}
