Advertisement
Guest User

Untitled

a guest
Apr 28th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. def solution(a, b)
  2.  
  3. # Sprawdzenie czy wartości w tablicy A są liczbami naturalnymi
  4. counter_a = 0
  5. (0...(a.length)).each do |check|
  6. if ((a[check].is_a? Integer) && (a[check] >= 0))
  7. counter_a += 1
  8. end
  9. end
  10.  
  11. # Sprawdzenie czy wartości w tablicy B są liczbami naturalnymi
  12. counter_b = 0
  13. (0...(b.length)).each do |check|
  14. if ((b[check].is_a? Integer) && (b[check] >= 0))
  15. counter_b += 1
  16. end
  17. end
  18.  
  19. c = [] # Deklaracja końcowej tablicy
  20. if ((counter_a != a.length) || (counter_b != b.length))
  21. puts "Blad. Podane wartosci nie sa liczbami naturalnymi"
  22. else
  23. help_hash = {} # Przechowanie sprawdzonych wartości z tablicy A pod kątem występowań w tablicy B (czy liczba wystąpień jest liczbą pierwszą)
  24. (0...(a.length)).each do |exist|
  25. if (help_hash.has_key? a[exist])
  26. # Dodanie wartosci do tablicy C, jeśli liczba jest już sprawdzona w pomocniczym hashu i liczba jej wystąpień w ciągu B nie jest liczba pierwszą
  27. if (help_hash[a[exist]] == "not_prime")
  28. c << a[exist]
  29. end
  30. else
  31. # Zliczenie ilości wystąpień liczby w ciągu B, jeśli nie została ona wcześniej sprawdzona
  32. repetition = 0 # Licznik ile razy liczba z tablicy A występuje w tablicy B
  33. if (b.include? a[exist])
  34. (0...(b.length)).each do |compare|
  35. if (b[compare] == a[exist])
  36. repetition += 1
  37. end
  38. end
  39.  
  40. # Sprawdzenie czy ilość wystąpień liczby w ciągu B jest liczba pierwszą
  41. if repetition > 1
  42. number_of_divisors = 0
  43. (1..repetition).each do |prime|
  44. result = repetition%prime
  45. if result == 0
  46. number_of_divisors += 1
  47. end
  48. end
  49.  
  50. if number_of_divisors > 2
  51. help_hash[a[exist]] = "not_prime"
  52. c << a[exist]
  53. else
  54. help_hash[a[exist]] = "prime"
  55. end
  56. else
  57. help_hash[a[exist]] = "not_prime"
  58. c << a[exist]
  59. end
  60. else
  61. c << a[exist]
  62. help_hash[a[exist]] = "not_prime"
  63. end
  64. end
  65. end
  66. end
  67. print c
  68. end
  69.  
  70. #solution([1, 2, 3, 4, 5], [4, 4, 3, 4, 5, 6]) # => return [1, 2, 3, 5]
  71. #solution([2,3,9,2,5,1,3,7,10], [2,1,3,4,3,10,6,6,1,7,10,10,10]) # => return [2,9,2,5,7,10]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement