## The challenge

You will be given an array of numbers. You have to sort the odd numbers in ascending order while leaving the even numbers at their original positions.

### Examples

 ``````1 2 3 `````` ``````[7, 1] => [1, 7] [5, 8, 6, 3, 4] => [3, 8, 6, 5, 4] [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] => [1, 8, 3, 6, 5, 4, 7, 2, 9, 0] ``````

## The solution in Python code

Option 1:

 ``````1 2 3 `````` ``````def sort_array(arr): odds = sorted((x for x in arr if x%2 != 0), reverse=True) return [x if x%2==0 else odds.pop() for x in arr] ``````

Option 2:

 ``````1 2 3 4 5 6 `````` ``````def sort_array(source_array): result = sorted([l for l in source_array if l % 2 == 1]) for index, item in enumerate(source_array): if item % 2 == 0: result.insert(index, item) return result ``````

Option 3:

 `````` 1 2 3 4 5 6 7 8 9 10 `````` ``````def sort_array(source_array): odd = sorted(list(filter(lambda x: x % 2, source_array))) l, c = [], 0 for i in source_array: if i in odd: l.append(odd[c]) c += 1 else: l.append(i) return l ``````

## Test cases to validate our solution

 ``````1 2 3 `````` ``````test.assert_equals(sort_array([5, 3, 2, 8, 1, 4]), [1, 3, 2, 8, 5, 4]) test.assert_equals(sort_array([5, 3, 1, 8, 0]), [1, 3, 5, 8, 0]) test.assert_equals(sort_array([]),[]) ``````