Advertisement
Guest User

Untitled

a guest
Mar 1st, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.52 KB | None | 0 0
  1. from collections import Counter
  2. from collections import defaultdict
  3. # dict have nice O(1) lookup time, defaultdict is even faster!
  4.  
  5. def rep1(elements):
  6.     if len(elements) != 24:
  7.         return False
  8.  
  9.     most_common = Counter(elements).most_common(1)[0] # find most common element
  10.     return most_common[1] == 1  # returns if its repeated only one time
  11.  
  12.  
  13. def rep2(elements):
  14.     if len(elements) != 24:
  15.         return False
  16.  
  17.     couter = {}  # element counter
  18.     for el in elements:
  19.         if not couter.get(el, False):
  20.             # add element to register
  21.             couter[el] = 1
  22.         else:
  23.             # element already registered
  24.             return False
  25.     return True  # no interrupt so everything is fine
  26.  
  27.  
  28. def rep3(elements):
  29.     if len(elements) != 24:
  30.         return False
  31.  
  32.     # directory with default value of 0
  33.     counter = defaultdict(int)
  34.  
  35.     for el in elements:
  36.         counter[el] += 1  # increment by one element count
  37.  
  38.     highest = max(counter, key=counter.get)  # find keyword with highest number
  39.     return counter[highest] == 1  # returns if highest number is repeated
  40.  
  41.  
  42. def checker(f, good, bad):
  43.     print('[{}]:'.format(f.__name__))
  44.     print('\tfor good: {}'.format(f(good)))  # feeds f with bad input
  45.     print('\tfor bad: {}\n'.format(f(bad)))  # feeds f wit good input
  46.  
  47. if __name__ == '__main__':
  48.     good =  '1234567890qwertyuiopasdf'
  49.     bad =   '1134567890qwertyuiopasdf'
  50.     checker(rep1, good, bad)
  51.     checker(rep2, good, bad)
  52.     checker(rep3, good, bad)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement