## The challenge

Create a function `close_compare` that accepts 3 parameters: `a``b`, and an optional `margin`. The function should return whether `a` is lower than, close to, or higher than `b``a` is “close to” `b` if `margin` is higher than or equal to the difference between `a` and `b`.

When `a` is lower than `b`, return `-1`.

When `a` is higher than `b`, return `1`.

When `a` is close to `b`, return ``.

If `margin` is not given, treat it as zero.

Example: if `a = 3``b = 5` and the `margin = 3`, since `a` and `b` are no more than 3 apart, `close_compare` should return ``. Otherwise, if instead `margin = 0``a` is lower than `b` and `close_compare` should return `-1`.

Assume: `margin >= 0`

## Test cases

 `````` 1 2 3 4 5 6 7 8 9 10 11 `````` ``````test.it("No margin") test.assert_equals(close_compare(4, 5), -1) test.assert_equals(close_compare(5, 5), 0) test.assert_equals(close_compare(6, 5), 1) test.it("With margin of 3") test.assert_equals(close_compare(2, 5, 3), 0) test.assert_equals(close_compare(5, 5, 3), 0) test.assert_equals(close_compare(8, 5, 3), 0) test.assert_equals(close_compare(8.1, 5, 3), 1) test.assert_equals(close_compare(1.99, 5, 3), -1) ``````

## The solution in Python

Option 1:

 ``````1 2 `````` ``````def close_compare(a, b, margin = 0): return 0 if abs(a - b) <= margin else -1 if b > a else 1 ``````

Option 2:

 ``````1 2 3 4 5 6 7 `````` ``````def close_compare(a, b, margin=0): if a == b or abs(a - b) <= margin: return 0 if a < b: return -1 if a > b: return 1 ``````

Option 3 (using `numpy`):

 ``````1 2 3 4 `````` ``````from numpy import sign def close_compare(a, b, margin=0): return abs(a-b) > margin and sign(a-b) ``````