Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. from collections import Counter
  2.  
  3.  
  4. def filter_forbidden_numbers(data, suspects):
  5. #to program to work run this function with data sets as in specification:
  6. #data = A, suspects = B
  7. #million iterations of provided data run in 17.801 seconds
  8. #so one iteration took around 17,8 microseconds
  9. items_counted = Counter(suspects)
  10. primes = get_prime_numbers_up_to(max(Counter(suspects).values()))
  11. forbidden_numbers = get_list_of_keys_that_values_appear_in_list(items_counted, primes)
  12. authorized_data = []
  13. for number in data:
  14. if number not in forbidden_numbers:
  15. authorized_data += [number]
  16. return authorized_data
  17.  
  18.  
  19. def get_list_of_keys_that_values_appear_in_list(dictionary, filtering_list):
  20. appeared_in_list = []
  21. for key in dictionary:
  22. if dictionary[key] in filtering_list:
  23. appeared_in_list += [key]
  24. return appeared_in_list
  25.  
  26.  
  27. def get_prime_numbers_up_to(number):
  28. prime_list = []
  29. for i in range(2, number + 1):
  30. if is_prime(i):
  31. prime_list += [i]
  32. return prime_list
  33.  
  34.  
  35. def is_prime(number):
  36. if number >= 2:
  37. for divisor in range(2, number):
  38. if not number % divisor:
  39. return False
  40. else:
  41. return False
  42. return True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement