Advertisement
Guest User

Untitled

a guest
May 21st, 2020
430
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.96 KB | None | 0 0
  1. import random, numpy as np
  2. from time import time
  3. array = [random.randint(1, 30) for _ in range(1000000)]
  4. # ~ array = np.array(array)
  5.  
  6. def balanced_mark(lst):
  7.     return sum(1 if item % 2 else -1 for item in lst) == 0
  8.  
  9. def balanced_peilonrayz(items):
  10.     return len(items) == 2 * sum(i % 2 for i in items)
  11.  
  12. def balanced_delta(items: Iterable[Number]) -> bool:
  13.     """Is the amount of even and odd numbers the same in `items`?"""
  14.     return sum(-1 if n % 2 else 1 for n in items) == 0
  15.  
  16. def balanced_kangalioo_compact(lst):
  17.     num_even = sum(item % 2 == 0 for item in lst)
  18.     num_odd = sum(item % 2 == 1 for item in lst)
  19.     return num_even == num_odd
  20.  
  21. def balanced_kangalioo_expanded(lst): # equivalent to gazoh's solution
  22.     num_even = 0
  23.     num_odd = 0
  24.     for number in lst:
  25.         if number % 2 == 0: # even
  26.             num_even += 1
  27.         else: # odd
  28.             num_odd += 1
  29.     return num_even == num_odd
  30.  
  31. def balanced_alex(lst):
  32.     return len([number for number in lst if number % 2 == 0]) == len(lst) / 2
  33.  
  34. def balanced_alex_2(lst):
  35.     n = len(lst)
  36.     if n % 2 != 0:
  37.         return False
  38.     return len([number for number in lst if number % 2 == 0]) == n / 2
  39.  
  40. def balanced_anonymous(lst):
  41.     def is_even(number: int) -> bool:
  42.         return (number % 2) == 0
  43.  
  44.     # list empty: return True by choice
  45.     if len(lst) == 0:
  46.         return True
  47.  
  48.     return len([item for item in lst if is_even(item)]) == len([item for item in lst if not is_even(item)])
  49.  
  50. def balanced_mti2935(lst):
  51.     return(sum(map(lambda x: x%2, lst))==0.5*len(lst))
  52.  
  53. # ~ def balanced_numpy(lst):
  54.     # ~ return (array % 2).sum() * 2 == len(lst)
  55.  
  56. results = {}
  57. for name, fn in [(name, var) for name, var in globals().items() if isinstance(name, str) and name.startswith("balanced_")]:
  58.     times = []
  59.     for i in range(3):
  60.         start_time = time()
  61.         (fn)(array)
  62.         times.append(time() - start_time)
  63.     avg_time = sum(times) / len(times)
  64.     results[name] = avg_time
  65.  
  66. for name, time in sorted(results.items(), key=lambda pair: pair[1]):
  67.     print(f"{results[name]:.3f}s mean time - {name}")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement