Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def find_outlier_0(integers):
- sorted_list = sorted(integers, key=lambda v: v % 2)
- index = -1 if sorted_list[1] % 2 == 0 else 0
- return sorted_list[index]
- def find_outlier_1(integers):
- a = []
- b = []
- for x in integers:
- if x % 2 == 0:
- a.append(x)
- else:
- b.append(x)
- if len(a) > 1:
- return b[0]
- return a[0]
- def find_outlier_2(integers):
- evens = []
- odds = []
- evens_len = 0
- odds_len = 0
- for x in integers:
- if x % 2 == 0:
- evens.append(x)
- else:
- odds.append(x)
- if len(evens) > 1 and len(odds) == 1:
- return odds[0]
- if len(odds) > 1 and len(evens) == 1:
- return evens[0]
- def find_outlier_3(integers):
- evens = []
- odds = []
- evens_len = 0
- odds_len = 0
- for x in integers:
- if x % 2 == 0:
- evens.append(x)
- evens_len += 1
- else:
- odds.append(x)
- odds_len += 1
- if evens_len > 1 and odds_len == 1:
- return odds[0]
- if odds_len > 1 and evens_len == 1:
- return evens[0]
- # --- tests ---
- import time
- from random import randrange
- examples = [
- [2, 4, 0, 100, 4, 11, 2602, 36],
- [2, 11, 4, 0, 100, 4, 2602, 36],
- [1, 5, 45, 3, 7, 23, 1111, 5, 2],
- [2*randrange(0, 100) for _ in range(1000)] + [3],
- [3] + [2*randrange(0, 100) for _ in range(900)],
- ]
- functions = [
- find_outlier_0,
- find_outlier_1,
- find_outlier_2,
- find_outlier_3,
- ]
- for data in examples:
- print('\ndata:', data[:10], '...')
- for func in functions:
- start = time.time()
- result = func(data)
- end = time.time()
- print('result:', result, '| time: %.07f' % (end-start) )
- '''
- data: [2, 4, 0, 100, 4, 11, 2602, 36] ...
- result: 11 | time: 0.0000148
- result: 11 | time: 0.0000050
- result: 11 | time: 0.0000052
- result: 11 | time: 0.0000045
- data: [2, 11, 4, 0, 100, 4, 2602, 36] ...
- result: 11 | time: 0.0000069
- result: 11 | time: 0.0000038
- result: 11 | time: 0.0000029
- result: 11 | time: 0.0000026
- data: [1, 5, 45, 3, 7, 23, 1111, 5, 2] ...
- result: 2 | time: 0.0000067
- result: 2 | time: 0.0000041
- result: 2 | time: 0.0000064
- result: 2 | time: 0.0000055
- data: [154, 184, 42, 18, 34, 184, 20, 198, 64, 112] ...
- result: 3 | time: 0.0002568
- result: 3 | time: 0.0002327
- result: 3 | time: 0.0005348
- result: 3 | time: 0.0004089
- data: [3, 132, 102, 112, 108, 152, 172, 156, 194, 18] ...
- result: 3 | time: 0.0002401
- result: 3 | time: 0.0002086
- result: 3 | time: 0.0000033
- result: 3 | time: 0.0000031
- '''
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement