Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random, numpy as np
- from time import time
- array = [random.randint(1, 30) for _ in range(1000000)]
- # ~ array = np.array(array)
- def balanced_mark(lst):
- return sum(1 if item % 2 else -1 for item in lst) == 0
- def balanced_peilonrayz(items):
- return len(items) == 2 * sum(i % 2 for i in items)
- def balanced_delta(items: Iterable[Number]) -> bool:
- """Is the amount of even and odd numbers the same in `items`?"""
- return sum(-1 if n % 2 else 1 for n in items) == 0
- def balanced_kangalioo_compact(lst):
- num_even = sum(item % 2 == 0 for item in lst)
- num_odd = sum(item % 2 == 1 for item in lst)
- return num_even == num_odd
- def balanced_kangalioo_expanded(lst): # equivalent to gazoh's solution
- num_even = 0
- num_odd = 0
- for number in lst:
- if number % 2 == 0: # even
- num_even += 1
- else: # odd
- num_odd += 1
- return num_even == num_odd
- def balanced_alex(lst):
- return len([number for number in lst if number % 2 == 0]) == len(lst) / 2
- def balanced_alex_2(lst):
- n = len(lst)
- if n % 2 != 0:
- return False
- return len([number for number in lst if number % 2 == 0]) == n / 2
- def balanced_anonymous(lst):
- def is_even(number: int) -> bool:
- return (number % 2) == 0
- # list empty: return True by choice
- if len(lst) == 0:
- return True
- return len([item for item in lst if is_even(item)]) == len([item for item in lst if not is_even(item)])
- def balanced_mti2935(lst):
- return(sum(map(lambda x: x%2, lst))==0.5*len(lst))
- # ~ def balanced_numpy(lst):
- # ~ return (array % 2).sum() * 2 == len(lst)
- results = {}
- for name, fn in [(name, var) for name, var in globals().items() if isinstance(name, str) and name.startswith("balanced_")]:
- times = []
- for i in range(3):
- start_time = time()
- (fn)(array)
- times.append(time() - start_time)
- avg_time = sum(times) / len(times)
- results[name] = avg_time
- for name, time in sorted(results.items(), key=lambda pair: pair[1]):
- print(f"{results[name]:.3f}s mean time - {name}")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement