     return result.reverse()
 }
 
+//51
+//35
+
 func -(left:[Int], right:[Int]) -> [Int] {
-    return []
+    let fewerDigitsReversed:[Int] = left.count < right.count ? left.reverse() : right.reverse()
+    let moreDigitsReversed:[Int] = left.count < right.count ? right.reverse() : left.reverse()
+    
+    var carryOver = 0
+    var result = [Int]()
+    for (index, moreDigit) in moreDigitsReversed.enumerate() {
+        var sum = 0
+        var moreDigitCopy = moreDigit
+        if index < fewerDigitsReversed.count {
+            let lowerDigit = fewerDigitsReversed[index]
+            moreDigitCopy = moreDigitCopy - carryOver
+            if moreDigitCopy < lowerDigit {
+                moreDigitCopy = moreDigitCopy + 10
+                carryOver = 1
+            }
+            sum = moreDigitCopy - lowerDigit
+        } else {
+            sum = moreDigitCopy - carryOver
+        }
+        
+        result.append(sum)
+        carryOver = 0
+    }
+    
+    return result.reverse()
 }
 
 

}

func +(left:BigInteger, right:BigInteger) -> BigInteger {
    return left.add(right)
}


            return .Negative
        case false where b.isNegative == false:
            return .Positive
        case false where b.isNegative == true:
            return .LeftPositive
        case true where b.isNegative == false:
            return .RightPositive
        }
        
    }
}

